首页常见问题正文

文本数据分析:词形归一化

更新时间:2022-12-22 来源:黑马程序员 浏览量:

IT培训班

  在英文中,一个单词常常是另一个单词的变种,比如looking是look这个单词的一般进行式,looked为一般过去式,这些都会影响语料库学习的准确度。一般在信息检索和文本挖掘时,需要对一个词的不同形态进行规范化,以提高文本处理的效率。

  词形规范化过程主要包括两种:词干(由词根与词缀构成的,一个词除去词尾的部分)提取和词形还原,它们的相关说明如下:

  (1)词干提取(stemming):是指删除不影响词性的词缀(包括前缀、后缀、中缀、环缀),得到单词词干的过程。例如:watching → watch,watched → watch。

  (2)词形还原(lemmatization):与词干提取相关,不同的是能够捕捉基于词根的规范单词形式。例如:

  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条规则来具体说明如何删除或替换词缀以获得词干。兰卡斯特词干提取器基于兰卡斯特词干算法,这些算法都集中在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'

  注意:在创建SnowballStemmer实例时,必须要传入一个表示语言的字符串给language参数。

分享到:
在线咨询 我要报名
和我们在线交谈!