使用wordnet为R检索单词的同义词

时间:2017-05-29 09:30:28

标签: r wordnet

我目前正在使用R中的wordnet(我正在使用RStudio for Windows(64位))并创建了一个data.frame,其中包含synset_offsetss_typeword来自wordnet数据库的data.x文件(其中x是名词,adj等)。

可以像这样创建一个样本:

wnet <- data.frame(
      "synset_offset" = c(02370954,02371120,02371337),
      "ss_type" = c("VERB","VERB","VERB"),
      "word" = c("fill", "depute", "substitute")
    )

使用wordnet软件包获取我想要添加的同义词列表作为附加列时,我的问题就出现了。

library(wordnet)
wnet$synonyms <- synonyms(wnet$word,wnet$ss_type)

我收到以下错误。

Error in .jnew(paste("com.nexagis.jawbone.filter", type, sep = "."), word,  : 
  java.lang.NoSuchMethodError: <init>

如果我使用定义的值应用函数,它就可以工作。

> synonyms("fill","VERB")
 [1] "fill"      "fill up"   "fulfil"    "fulfill"   "make full" "meet"      "occupy"    "replete"   "sate"      "satiate"   "satisfy"  
[12] "take"   

欢迎任何解决我问题的建议。

1 个答案:

答案 0 :(得分:1)

由于某些原因,我无法在我的计算机上安装wordnet包,但是你似乎给了同义词函数数组参数而你不能,你应该能够通过apply来解决它。

syn_list  <- apply(wnet,by=1,function(row){synonyms(row["word"],row["ss_type"])})

它将返回wnet data.frame

的每一行的同义词函数的输出

目前尚不清楚您想要做什么:

wnet$synonyms <- synonyms(wnet$word,wnet$ss_type)

对于每一行,您将拥有一组同义词,这些同义词不适合您的data.frame的3行。

也许这样的事情对你有用:

wnet$synonyms <- sapply(syn_list,paste,collapse=", ")

编辑 - 这是解决上述问题的有效方法。

wnet$synset <- mapply(synonyms, as.character(wnet$word), as.character(wnet$ss_type))