如何在R中使用wordnet获得单词层次结构(例如,上位词,下位词)

问题描述 投票:1回答:1

我想在R中使用wordnet包来获得单词层次结构:“animal”是“cat”的上位词,“apple”是“fruit”的下位词。但是我可以从R wordnet帮助文件中找到的代码如下所示来识别反义词:

filter <- getTermFilter("ExactMatchFilter", "cold", TRUE)
terms <- getIndexTerms("ADJECTIVE", 5, filter)
synsets <- getSynsets(terms[[1]])
related <- getRelatedSynsets(synsets[[1]],"!")
sapply(related, getWord)

如何使用R wordnet包来查找单词的上位词和下位词?谢谢。

r hierarchy wordnet hypernym
1个回答
0
投票

你可以替换"!"(用于反义词)

related <- getRelatedSynsets(synsets[[1]],"!")

根据您的需要使用其他符号。

看到这个链接:http://wordnet.princeton.edu/man/wnsearch.3WN.html#sect4

Hypernyms将是"@"

原始问题的扩展:

我刚开始使用WordNet,我正在寻找类似的东西。对于'apple',我想要一个上层树给我

  • '水果' '餐饮' '固体物质' '物理实体' 等等...

可以看到点击WordNet在线inherited hypernyms上的http://wordnetweb.princeton.edu/perl/webwn

但是,以下命令

filter <- getTermFilter(type="ExactMatchFilter", word="apple", ignoreCase=TRUE)
terms <- getIndexTerms("NOUN", 15, filter)
synsets <- getSynsets(terms[[1]])
related <- getRelatedSynsets(synsets[[1]], "@")
sapply(related, getWord)

只会给我

[[1]]
[1] "edible fruit"

[[2]]
[1] "pome"        "false fruit"

因此未能为我提供较低级别的上位词

攀登hypernym树的关键是递归使用getRelatedSynsets()。

继续上面的示例,从apple的synset中提取同义词:

related_2 <- getRelatedSynsets(related[[1]], "@")

并收集相应的单词:

sapply(related_2, getWord)

会产生:

[[1]]
[1] "produce"         "green goods"     "green groceries" "garden truck"   

[[2]]
[1] "fruit"

并继续前进:

related_3 <- getRelatedSynsets(related2[[1]], "@")

sapply(related_3, getWord)

将导致:

[,1]        
[1,] "food"      
[2,] "solid food"
© www.soinside.com 2019 - 2024. All rights reserved.