2012-07-17 90 views
4

我得到了許多的話運行nltk.stem.porter.PorterStemmer().stem_word(word)後「荷蘭國際集團」切斷或「Y」換用「I」。例如'質量'變成'Qualiti',(甚至更奇怪的)'價值'變成'價值'?NLTK乾的話會產生奇怪的結果

。所獲得的話不是實際的英語單詞,我不知道我怎麼打算使用它們?我最好的猜測是,我的意思是把詞幹放到另一個函數中,這個函數會給我所有來自這個詞幹的衍生詞/子詞(例如'valu'將返回['valuing','valued', 'values', ...]。是否有這樣的功能?

+0

你試過這些詞語嗎?那裏有什麼結果? – inspectorG4dget 2012-07-17 02:49:18

+0

用於所要求的術語是** lexeme **。因此,最好的做法是採用原始的預處理單詞,並通過這種功能而不是詞幹版本來運行,以獲取單詞的所有詞位。 – demongolem 2013-03-14 14:34:12

回答

4

Stemming extracts字由通過一系列的變換規則去其剝離共同前綴和後綴的莖,因此產生的結果可能不是一個實際的英語單詞。 一般使用所產生的是歸一化的話,使它們被認爲是相同的例如:

stem_word('value') == stem_word('valuing') 

去梗,然後的話可以被索引搜索相同而產生與輸入的查詢,以便完成查詢詞在查找時與索引中的詞幹匹配。