首頁常見問題正文

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

更新時間:2022-12-22 來源:黑馬程序員 瀏覽量:

IT培訓班

  在英文中,一個單詞常常是另一個單詞的變種,比如looking是look這個單詞的一般進行式,looked為一般過去式,這些都會影響語料庫學習的準確度。一般在信息檢索和文本挖掘時,需要對一個詞的不同形態(tài)進行規(guī)范化,以提高文本處理的效率。

  詞形規(guī)范化過程主要包括兩種:詞干(由詞根與詞綴構成的,一個詞除去詞尾的部分)提取和詞形還原,它們的相關說明如下:

  (1)詞干提取(stemming):是指刪除不影響詞性的詞綴(包括前綴、后綴、中綴、環(huán)綴),得到單詞詞干的過程。例如:watching → watch,watched → watch。

  (2)詞形還原(lemmatization):與詞干提取相關,不同的是能夠捕捉基于詞根的規(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ù)。

分享到:
在線咨詢 我要報名
和我們在線交談!