更新時間:2022-12-22 來源:黑馬程序員 瀏覽量:
在英文中,一個單詞常常是另一個單詞的變種,比如looking是look這個單詞的一般進行式,looked為一般過去式,這些都會影響語料庫學習的準確度。一般在信息檢索和文本挖掘時,需要對一個詞的不同形態(tài)進行規(guī)范化,以提高文本處理的效率。
詞形規(guī)范化過程主要包括兩種:詞干(由詞根與詞綴構(gòu)成的,一個詞除去詞尾的部分)提取和詞形還原,它們的相關(guān)說明如下:
(1)詞干提取(stemming):是指刪除不影響詞性的詞綴(包括前綴、后綴、中綴、環(huán)綴),得到單詞詞干的過程。例如:watching → watch,watched → watch。
(2)詞形還原(lemmatization):與詞干提取相關(guān),不同的是能夠捕捉基于詞根的規(guī)范單詞形式。例如:
better → good,went → go。
對于詞干提取來說,nltk.stem模塊中提供了多種詞干提取器,目前最受歡迎的就是波特詞干提取器,它是基于波特詞干算法來提取詞干的,這些算法都集中在PoterStemmer類中。下面是基于PorterStemmer類提取詞干的示例,具體如下。
In [9]: # 導入nltk.stem模塊的波特詞干提取器 from nltk.stem.porter import PorterStemmer # 按照波特算法提取詞干 porter_stem=PorterStemmer() porter_stem.stem('watched') Out[9]: 'watch' In [10]: porter_stem.stem('watching') Out[10]: 'watch'
還可以用蘭卡斯特詞干提取器提取,它是一個迭代提取器,具有超過120條規(guī)則來具體說明如何刪除或替換詞綴以獲得詞干。蘭卡斯特詞干提取器基于蘭卡斯特詞干算法,這些算法都集中在LancasterStemmer類中。以下代碼顯示了LancasterStemmer類提取詞干的用法,示例代碼如下。
In [11]: from nltk.stem.lancaster import LancasterStemmer lancaster_stem=LancasterStemmer() # 按照蘭卡斯特算法提取詞干 lancaster_stem.stem('jumped') Out[11]: 'jump' In [12]: lancaster_stem.stem('jumping') Out[12]: 'jump'
還有一些其他的詞干器,比如SnowballStemmer,它除了支持英文以外,還支持其他13種不同的語言,用法示例如下。
In [13]: from nltk.stem import SnowballStemmer snowball_stem=SnowballStemmer('english') snowball_stem.stem('listened') Out[11]: 'listen' In [12]: snowball_stem.stem('listening') Out[14]:'listen'
注意:在創(chuàng)建SnowballStemmer實例時,必須要傳入一個表示語言的字符串給language參數(shù)。