首頁(yè)常見(jiàn)問(wèn)題正文

文本數(shù)據(jù)分析:詞形歸一化

更新時(shí)間:2022-12-22 來(lái)源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  在英文中,一個(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ù)。

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!