我想在R中使用wordnet包来获得这样的单词层次结构:" animal"是" cat"和" apple"的上位词。是"水果"的下位词。但我可以从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包查找单词的上位词和下位词?感谢。
答案 0 :(得分:0)
您可以在
中替换"!"
(用于反义词)
related <- getRelatedSynsets(synsets[[1]],"!")
根据您的需要使用其他符号。
查看此链接: http://wordnet.princeton.edu/man/wnsearch.3WN.html#sect4
上位词将是"@"
对原始问题的扩展:
我刚开始使用WordNet,我正在寻找类似的东西。 对于'apple',我想要一个hypernym树给我
在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"
因此未能为我提供较低级别的上位词
攀登上层树的关键是递归使用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"