zl程序教程

您现在的位置是:首页 >  后端

当前栏目

《NLTK基础教程——用NLTK和Python库构建机器学习应用》——2.7 停用词移除

Python机器应用学习 构建 基础教程 移除 2.7
2023-09-11 14:19:44 时间

本节书摘来异步社区《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书中的第2章,第2.7节,作者:Nitin Hardeniya,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.7 停用词移除

停用词移除(Stop word removal)是在不同的NLP应用中最常会用到的预处理步骤之一。该步骤的思路就是想要简单地移除语料库中的在所有文档中都会出现的单词。通常情况下,冠词和代词都会被列为停用词。这些单词在一些NPL任务(如说关于信息的检索和分类的任务)中是毫无意义的,这意味着这些单词通常不会产生很大的歧义。恰恰相反的是,在某些NPL应用中,停用词被移除之后所产生的影响实际上是非常小的。在大多数时候,给定语言的停用词列表都是一份通过人工制定的、跨语料库的、针对最常见单词的停用词列表。虽然大多数语言的停用词列表都可以在相关网站上被找到,但也有一些停用词列表是基于给定语料库来自动生成的。有一种非常简单的方式就是基于相关单词在文档中出现的频率(即该单词在文档中出现的次数)来构建一个停用词列表,出现在这些语料库中的单词都会被当作停用词。经过这样的充分研究,我们就会得到针对某些特定语料库的最佳停用词列表。NLTK库中就内置了涵盖22种语言的停用词列表。

下面就来具体实现一下停用词移除的整个过程,这是一段用NLTK来处理停用词的代码。当然,你也可以像第1章“自然语言处理简介”中那样创建一个字典,然后通过查找的方法来解决这个问题。

 from nltk.corpus import stopwords

 stoplist = stopwords.words(english) # config the language name

# NLTK supports 22 languages for removing the stop words

 text = "This is just a test"

 cleanwordlist = [word for word in text.split() if word not in stoplist] 

# apart from just and test others are stopwords

[test]

在上述代码片段中,我们所做的是和第1章“自然语言处理简介”中一样的停用词移除操作,但这里部署的是一个更为简洁的版本。之前,我们是基于查表法来做的。即使在当前情况下,NLTK内部所采用的仍然是一个非常类似的方法。这里建议使用NLTK的停用词列表,因为这是一个更为标准化的列表,相比其他所有的实现都更为健全。而且,我们可以通过向该库的停用词构造器传递一个语言名称参数,来实现针对其他语言的类似方法。

在移除停用词的操作中,背后的数学运算是什么?
在停用词被移除之后,我们就可以执行哪些NLP操作了?


【小白的实战】Python构建中文词云图 还记得之前我们构建英文词云图的实战吗?通过三期的涉及了自定义调参、形状等…… 几乎是可以自定义出自己的心仪词云了。 但关键问题是什么?——咱们是中国人,我们要做中文的词云!
Python全方位构建自己的第三方库--让别人pip install你的三方库 作为有一些Python经验的老司机来讲, 在实际项目中经常会封装一些特有的共有的功能使用, 一般这个py模块都在项目内容, 想拿出来在别的项目中使用需要复制拖拽功能模块, 并且不方便给别的老司机使用! 这个时候如果可以 通过 pip install xx 安装使用是不是就解决了这个弊端! 作为小白来讲, 学完模块功能之后, 经常会有个困惑就是, 为什么pip install 是别的第三方库模块, 我自己写的模块能不能让别人也pip呢, 那么接下来我们就来想详细的来构建下属于自己的pip第三方库吧
异步社区 异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。