博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【火炉炼AI】机器学习035-NLP词干提取
阅读量:6373 次
发布时间:2019-06-23

本文共 2241 字,大约阅读时间需要 7 分钟。

【火炉炼AI】机器学习035-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词干提取器。

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

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

参考资料:

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

转载地址:http://iknqa.baihongyu.com/

你可能感兴趣的文章
AMD OpenCL大学课程(11)
查看>>
康拓展开及应用
查看>>
VC :模板类
查看>>
对C++中string类型的总结
查看>>
SharePoint的数据库性能需要注意的一点
查看>>
Oracle发布公共云Public Cloud
查看>>
表驱动
查看>>
eclipse高亮显示
查看>>
C#简单的面试题目(六)
查看>>
Shell 操作数据库
查看>>
C# UDP 网络聊天程序
查看>>
if lte IE if gte IE 浏览器兼容
查看>>
基于Lumisoft.NET组件和.NET API实现邮件发送功能的对比
查看>>
设置类UIColor使用colorWithRed定义颜色
查看>>
C#数据库访问技术之DATAREADER对象读取数据
查看>>
各种排序方法
查看>>
编译时程序透彻理解异常并合理使用异常
查看>>
控件服务器端服务器控件与客户端控件
查看>>
2013年5月18日星期六
查看>>
优化网站设计(三十):优化CSS sprites
查看>>