1

これが私のpythonコードです:

import spacy
nlp = spacy.load('en')
line = u'Algorithms; Deterministic algorithms; Adaptive algorithms; Something...'
line = line.lower()
print ' '.join([token.lemma_ for token in nlp(line)])

出力は次のとおりです。

algorithm ; deterministic algorithm ; adaptive algorithms ; something...

algorithms3番目が「アルゴリズム」に変換されないのはなぜですか? 関数を削除lower()すると、次のようになります。

algorithms ; deterministic algorithms ; adaptive algorithm ; something...

今回は1回目と2回目algorithmsが変換できませんでした。この問題は私を夢中にさせます。これを修正して、すべての単語を見出し語化するにはどうすればよいですか?

4

2 に答える 2

0

syllogism_ の方がよく説明されていると思います。しかし、ここに別の方法があります:

from nltk.stem import WordNetLemmatizer

lemma = WordNetLemmatizer()
line = u'Algorithms; Deterministic algorithms; Adaptive algorithms; Something...'.lower().split(';')
line = [a.strip().split(' ') for a in line]
line = [map(lambda x: lemma.lemmatize(x), l1) for l1 in line ]
print line

出力:

[[u'algorithm'], [u'deterministic', u'algorithm'], [u'adaptive', u'algorithm'], [u'something...']]
于 2016-12-30T10:29:04.353 に答える