更新時(shí)間:2022-12-22 來(lái)源:黑馬程序員 瀏覽量:
在英文中,一個(gè)單詞常常是另一個(gè)單詞的變種,比如looking是look這個(gè)單詞的一般進(jìn)行式,looked為一般過(guò)去式,這些都會(huì)影響語(yǔ)料庫(kù)學(xué)習(xí)的準(zhǔn)確度。一般在信息檢索和文本挖掘時(shí),需要對(duì)一個(gè)詞的不同形態(tài)進(jìn)行規(guī)范化,以提高文本處理的效率。
詞形規(guī)范化過(guò)程主要包括兩種:詞干(由詞根與詞綴構(gòu)成的,一個(gè)詞除去詞尾的部分)提取和詞形還原,它們的相關(guān)說(shuō)明如下:
(1)詞干提取(stemming):是指刪除不影響詞性的詞綴(包括前綴、后綴、中綴、環(huán)綴),得到單詞詞干的過(guò)程。例如:watching → watch,watched → watch。
(2)詞形還原(lemmatization):與詞干提取相關(guān),不同的是能夠捕捉基于詞根的規(guī)范單詞形式。例如:
better → good,went → go。
對(duì)于詞干提取來(lái)說(shuō),nltk.stem模塊中提供了多種詞干提取器,目前最受歡迎的就是波特詞干提取器,它是基于波特詞干算法來(lái)提取詞干的,這些算法都集中在PoterStemmer類中。下面是基于PorterStemmer類提取詞干的示例,具體如下。
In [9]: # 導(dǎo)入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'
還可以用蘭卡斯特詞干提取器提取,它是一個(gè)迭代提取器,具有超過(guò)120條規(guī)則來(lái)具體說(shuō)明如何刪除或替換詞綴以獲得詞干。蘭卡斯特詞干提取器基于蘭卡斯特詞干算法,這些算法都集中在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種不同的語(yǔ)言,用法示例如下。
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實(shí)例時(shí),必須要傳入一個(gè)表示語(yǔ)言的字符串給language參數(shù)。