2017-05-29 3 views
0

のためのWordNetを使って単語の同義語を取得し、data.frameがdata.xファイルからsynset_offsetss_typewordを含む作成xは名詞、形容詞など)を入力します。(ここで、Iは現在、RでのWordNet(Iは、Windows(64ビット版)用のRStudioを使用しています)で働いているR

サンプルは次のように作成することができます。私は、追加のカラムとして追加したい同義語のリストを取得するためにWordNetのパッケージを使用している場合

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

私の問題が起こります。

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

何らかの理由で自分のコンピュータにワードネットパッケージをインストールできませんが、シノニム関数の配列引数を渡しているようですが、それを適用して解決できるはずです。各行に対するとして

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

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

それはあなたが何をしたいのかはっきりしない

WNETのdata.frameの行ごとに同義語関数の出力を返します。あなたは、あなたのdata.frameの3行に収まらない同義語の配列を持ちます。

多分このような何かがあなたのために動作します:

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

EDIT - ここでは上記の問題への実用的なソリューションです。

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

@Moody_Mudskipperありがとうございます。私はこの問題を自分で解決しましたが、あなたの提案は正しい方向を指しています。 'wnet $ synset < - mapply(同義語、as.character(wnet $ word)、as.character(wnet $ ss_type))を使って'はトリックをしますが、パフォーマンスが悪いです(rJavaのために)? – conidium

関連する問題