簡體   English   中英

如何阻止NLTK stemmer刪除尾隨的“e”?

[英]How to stop NLTK stemmer from removing the trailing “e”?

我正在使用NLTK詞干分析器去除詞干的語法變化。 但是,Port或Snowball詞干分析器刪除了名詞或動詞的原始形式的尾隨“e”,例如,Profile變為Profil。

我怎樣才能防止這種情況發生? 我知道我可以用條件來防范這個。 但顯然它會在不同情況下失敗。

是否有我想要的選項或其他API?

我同意菲利普的觀點,即阻塞器的目標只是保留桿。 對於這種特殊情況,你可以嘗試使用詞形變換器而不是詞干變換器,它應該保留更多的單詞,並且意味着刪除完全不同形式的單詞,如'profiles' - >'profile'。 NLTK中有一個類 - 從nltk.stem嘗試WordNetLemmatizer()。

要注意它仍然不完美(在處理文本時沒什么),因為我曾經從'物理'中獲得'物理'。

嘗試:

>>> from nltk.stem import WordNetLemmatizer, PorterStemmer
>>> porter = PorterStemmer()
>>> wnl = WordNetLemmatizer()
>>> word = 'profile'
>>> porter.stem(word)
'profil'
>>> wnl.lemmatize(word)
'profile'
>>> wnl.lemmatize(word) if wnl.lemmatize(word).endswith('e') else porter.stem(word)
'profile'

詞干分析器的目標是刪除盡可能多的單詞,以使其盡可能多地覆蓋,但保留單詞的核心。 簡介可能歸結為profil的一個原因是涵蓋分析的情況。 你需要一個條件或另一個詞干分子來防止這種情況,雖然我想他們中的大多數會刪除尾隨的'e'。 (特別是給出'e' - >'ing'案例的數量)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM