【火炉炼AI】机器学习035-NLP词干提取

栏目: 数据库 · 发布时间: 7年前

内容简介:(本文所使用的Python库和版本号: Python 3.6, Numpy 1.14, scikit-learn 0.19, matplotlib 2.2, NLTK 3.3)在英语中,经常会有很多单词的变形,记得以前英语老师讲课时,讲到动词的变形,有过去时,将来时,现在进行时等不同场合,动词需要变成相应的形态,而讲到名词时,又提到单数和复数的概念,可数名词要在单词末尾加s等。那么NLP如何处理这些变形之后的词了?有一种方法是提取这些词的词干,所谓万变不离其宗,我们只要抓住这个“宗”就可以应对其他了。本文

(本文所使用的 Python 库和版本号: Python 3.6, Numpy 1.14, scikit-learn 0.19, matplotlib 2.2, NLTK 3.3)

在英语中,经常会有很多单词的变形,记得以前英语老师讲课时,讲到动词的变形,有过去时,将来时,现在进行时等不同场合,动词需要变成相应的形态,而讲到名词时,又提到单数和复数的概念,可数名词要在单词末尾加s等。那么NLP如何处理这些变形之后的词了?有一种方法是提取这些词的词干,所谓万变不离其宗,我们只要抓住这个“宗”就可以应对其他了。

本文就是讲解如何用NLP提取单词的词干,抓住这些单词的“宗”。

1. NLP提取词干

词干提取的目标是将不同词形的单词都变成其原形,词干提取使用启发式处理的方法来截取单词的尾部,以提取单词的原形。

NLP主要有说那种词干提取方法:基于Porter的词干提取算法,基于Lancaster的词干提取算法,基于Snowball的词干提取算法。下面分别用这几种方法来提取不同单词的词干。

words = ['table', 'probably', 'wolves', 'playing', 'is', 
        'dog', 'the', 'beaches', 'grounded', 'dreamt', 'envision'] 
# 要提取的单词

# 三种不同的词干提取器
stemmers = ['PORTER', 'LANCASTER', 'SNOWBALL']
stemmer_porter = PorterStemmer()
stemmer_lancaster = LancasterStemmer()
stemmer_snowball = SnowballStemmer('english')

formatted_row = '{:>16}' * (len(stemmers) + 1)
print(formatted_row.format('WORD',*stemmers)) # 打印表头

for word in words: # 每个单词逐一提取
    stem=[stemmer_porter.stem(word), 
            stemmer_lancaster.stem(word), stemmer_snowball.stem(word)]
    print(formatted_row.format(word,*stem)) # 对提取后的stem进行拆包
复制代码

--------------------------输---------出------

WORD          PORTER       LANCASTER        SNOWBALL
       table            tabl            tabl            tabl
    probably         probabl            prob         probabl
      wolves            wolv            wolv            wolv
     playing            play            play            play
          is              is              is              is
         dog             dog             dog             dog
         the             the             the             the
     beaches           beach           beach           beach
    grounded          ground          ground          ground
      dreamt          dreamt          dreamt          dreamt
    envision           envis           envid           envis
复制代码

----------------------完----------------------------

########################小**********结###############################

可以看出说那种词干提取算法都能够提取词干,但是提取的结果却不一样,这主要是因为三种算法的提取严格程度不一样,简单的比较下,Lancaster提取最严格,而Porter最宽松。所以Lancaster得到的词干往往比较模糊,难以理解,但是它的提取速度很快。一般情况下,通常会选择Snowball词干提取器。

#################################################################

注:本部分代码已经全部上传到( 我的github )上,欢迎下载。

参考资料:

1, Python机器学习经典实例,Prateek Joshi著,陶俊杰,陈小莉译


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

技术的本质

技术的本质

布莱恩•阿瑟(Brian Arthur) / 曹东溟、王健 / 浙江人民出版社 / 2014-4-1 / 62.90

★《技术的本质》是复杂性科学奠基人、首屈一指的技术思想家、“熊彼特奖”得主布莱恩•阿瑟所创建的一套关于技术产生和进化的系统性理论,本书是打开“技术黑箱”的钥匙,它用平实的语言将技术最本质的思想娓娓道来。 ★技术,是一个异常美丽的主题,它不动声色地创造了我们的财富,成就了经济的繁荣,改变了我们存在的方式。尽管技术如此重要,却少有人在快节奏的生活中停下来深入思考技术。我们了解技术的原理,却不知道......一起来看看 《技术的本质》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换