我想在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包来查找单词的上位词和下位词?谢谢。
你可以替换"!"
(用于反义词)
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"