【问题标题】:Retrieve synonyms of words using wordnet for R使用 wordnet for R 检索单词的同义词
【发布时间】:2017-05-29 09:30:28
【问题描述】:

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

可以这样创建示例:

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"   

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

【问题讨论】:

    标签: r wordnet


    【解决方案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))
    

    【讨论】:

    • 感谢@Moody_Mudskipper,我自己解决了这个问题,但您的建议指向正确的方向。使用 wnet$synset &lt;- mapply(synonyms, as.character(wnet$word), as.character(wnet$ss_type)) 可以解决问题,但性能非常差(因为 rJava?)
    猜你喜欢
    • 1970-01-01
    • 2017-04-18
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多