2

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

install.packages("wordnet", dependencies=TRUE)
library(wordnet)
filter <- getTermFilter("ExactMatchFilter", "cold", TRUE)
terms <- getIndexTerms("ADJECTIVE", 5, filter)
synsets <- getSynsets(terms[[1]])
related <- getRelatedSynsets(synsets[[1]],"!")
sapply(related, getWord)

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

4

1 回答 1

1

你可以替换"!"(这是反义词)

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

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

请参阅此链接: http ://wordnet.princeton.edu/man/wnsearch.3WN.html#sect4

上位词将是"@"

对原始问题的扩展:

我刚开始使用 WordNet,我正在寻找类似的东西。对于“苹果”,我想要一棵上位词树给我

  • '水果'
    • '食物'
      • '固体物质'
        • '物理实体'
          • ETC...

inherited hypernyms当点击WordNet 在线 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()

继续上面的例子,从苹果的同义词中提取同义词:

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"
于 2017-08-24T12:35:17.247 回答