2017-07-11 7 views
0

私は文字列のリストを持っている:NLTK synsetsを使用して文字列のリスト内の同義語を見つける方法は?

words1 = ['feds', 'move', 'to', 'require', 'cartocar', 'safety', 'communication'] 

私はNLTKのWordNetのののsynsetを使用して、その単語のそれぞれのためのsynsetを見つけたいです。まず、私は自分のリストに1つの文字列を使用します。 私のコードは次のとおりです。

from nltk.corpus import wordnet as wn 

word = ['feds'] 

data1 = ' '.join(word) 

def getSynonyms(data1): 
    synonymList1 = [] 
    wordnetSynset1 = wn.synsets(data1) 

    for synset1 in wordnetSynset1: 
     for synWords1 in synset1.lemma_names(): 
      synonymList1.append(synWords1) 
    print synonymList1 

print "list of synonyms : ", getSynonyms(data1) 

となります。ここでの結果だ:

list of synonyms : [u'Federal', u'Fed', u'federal_official', u'Federal_Reserve_System', u'Federal_Reserve', u'Fed', u'FRS'] 

が、私は文字列のリストを使用する「words1」、それは作品と出力しない。このようなどれも>> []ではありません。

誰でも助けることができますか?ありがとう

+0

はこれを試してみてください:https://gist.github.com/alvations/a4a6e0cc24d2fd9aff86 – alvas

+0

@alvasすごい、それは素晴らしいことだが、私は、これは – sang

+0

がNLTK WordNetのインターフェイスを使用してsynsetの補題名を取得するのsynsetためのパッケージをNLTK使用する必要があり、文字列の一致を計算するには、ADM algoを使用します。ところで、多くの他の文字列マッチングアルゴリズムもあります。 ADMはその1つに過ぎません。 – alvas

答えて

1

単語を個別に渡す必要があります。

from nltk.corpus import wordnet as wn 


def getSynonyms(word1): 
     synonymList1 = [] 
     for data1 in word1: 
       wordnetSynset1 = wn.synsets(data1) 
       tempList1=[] 
       for synset1 in wordnetSynset1: 
       for synWords1 in synset1.lemma_names(): 
        tempList1.append(synWords1) 
       synonymList1.append(tempList1) 
     return synonymList1 


word1 = ['feds', 'move', 'to', 'require', 'cartocar', 'safety', 'communication'] 
print getSynonyms(word1) 
+1

うわー、ありがとうございました。私はsynsetがリストを読むことができないと思った。なぜなら、入力が常に文字列なので、文字列に変更する例がたくさんあるからだ。 – sang

関連する問題