Lemmatization應導致更好的結果比詞幹(source):
詞幹通常指的是一種粗略的過程,正確地砍掉字的兩端在實現這一目標的最希望的時間,並經常包括刪除派生詞綴。
詞形還原通常是指適當地做事與使用的話詞彙和形態分析的,通常旨在僅除去變化詞尾並返回一個字,這被稱爲外稃的基部或字典形式。
詞形還原在NTLK支持爲nltk.stem包的一部分:
import nltk
l = nltk.stem.WordNetLemmatizer()
l.lemmatize('dogs') # -> 'dog'
l.lemmatize('addition') # -> 'addition'
s = nltk.stem.snowball.EnglishStemmer()
s.stem('dogs') # -> 'dog'
s.stem('addition') # -> 'addit'
如果lemmatizer不承認的話,也不會更改。一個缺陷是,默認情況下所有單詞都被認爲是名詞。要覆蓋這種行爲,你必須設置pos
的說法,這是默認設置爲pos='n'
:
s.stem('better') # -> 'better'
l.lemmatize('better') # -> 'better'
l.lemmatize('better', pos='a') # -> 'good'
你要找的是一個'lemmatizer'而不是詞幹,也是一個相當強的一個,因爲從'addition' =>'add',需要很多知識。我有一個英語形態詞形解析器,適用於'verb' +'morpheme' =>'verbs'和'nouns' +'morpheme'成名詞。一旦我完成其他工作,我可以在下週發佈代碼。你急需嗎? – alvas 2013-04-05 06:24:49
NLTK中的WordNet lemmatizer接近此,但它需要POS標籤才能獲得好的結果。儘管如此,它不會執行addition => add。 – 2013-04-05 09:14:17
@ 2er0:那太棒了!非常感謝。下週對我來說會很好。+ 1 – chepukha 2013-04-05 17:00:16