NLTK 詞干提取、詞形還原



詞干提取 stemming

實現功能:如 eating, eaten, ate, eats ---> eat
一般詞干提取器,移除 -s/es, -ing, -ed 這類事的准確度可以達到 70%;

  • Porter 詞干提取器,使用更多規則,精確度更高;
  • Snowball 提取器,是一個提取家族,可以分別處理多國語言。

注意:
如果要用到 詞性標注(POS)、NER 或某種依賴性解析器中的某些部分,應避免詞干提取操作;因為詞干提取會對相關分詞進行修改,這可能導致不同的結果。

from nltk.stem import PorterStemmer
from nltk.stem.lancaster import LancasterStemmer
from nltk.stem.snowball import SnowballStemmer

pst = PorterStemmer() 
lst = LancasterStemmer()

lst.stem('eating')
# 'eat'

pst.stem('eating')
# 'eat'

自己設計 Porter 詞干提取器

http://snowball.tartarus.org/algorithms/english/stemmer.html


詞形還原(lemmatization)

相比詞干提取 更健全、更條理化;會利用上下文語境推斷相關單詞的變化形式,並運用不同的標准化規則,根據詞性來獲取相關的詞根(lemma)。

from nltk.stem import WordNetLemmatizer
wlem = WordNetLemmatizer()

wlem.lemmatize('eating')

wlem.lemmatize('ate')

wordnet 是一個語義詞典;
WordNetLemmatizer 會針對某個單詞去搜索 wordnet;另外,它還是用了變形分析,以便直切詞根並搜索到特殊的詞形(即這個單詞的相關變化)。


詞干提取 & 詞形還原

詞干提取操作更多時候是一套 用於獲取詞干一般形式的規則方法;
詞形還原主要考慮當前的上下文語境 以及 相關單詞的 POS,然后將規則應用到 特定的語法變化中。
通常來說,詞干提取的操作,實現起來更簡單,處理時間也短。


相關資料



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM