目录

  • 什么是停用词
  • 加载停用词字典
  • 删除停用词
  • 分词以及删除停用词
  • 直接删除停用词(不分词)

什么是停用词

在汉语中,有一类没有多少意义的词语,比如组词“的”,连词“以及”、副词“甚至”,语气词“吧”,被称为停用词。一个句子去掉这些停用词,并不影响理解。所以,进行自然语言处理时,我们一般将停用词过滤掉。

而HanLP库提供了一个小巧的停用词字典,它位于Lib\site-packages\pyhanlp\static\data\dictionary目录中,名字为:stopwords.txt。该文本收录了常见的中英文无意义的词汇,每行一个词语。示例如下:

我们在进行自然语言处理时,可以用BinTrie、DoubleArrayTrie和AhoCorasickDoubleArrayTrie中的任意一个来存储词典。考虑到该词典中都是短语且比较多,用双数组字典树更划算,处理时间更快。

加载停用词字典

通过前文的介绍,我们知道了使用双数组字典树加载停用词字典更划算。下面,我们来加载其停用词,并返回键值对结构。代码如下:

def load_dictionary(path):map=JClass('java.util.TreeMap')()with open(path,encoding='utf-8') as src:for word in src:word=word.strip()map[word]=wordreturn JClass('com.hankcs.hanlp.collection.trie.DoubleArrayTrie')(map)

删除停用词

通过上面的停用词加载,我们获取了DoubleArrayTrie树结构的词汇。如果要删除停用词,可以直接使用分词后的结果剔除停用词即可。剔除的方法如下:

def remove_stopwords(termlist,trie):return [term.word for term in termlist if not trie.containsKey(term.word)]

分词以及删除停用词

在前面的博文中,我们已经学会了如何分词,现在我们又学会了如何剔除停用词。这里,我们将两者结合起来,实现分词效果。代码如下:

if __name__ == "__main__":HanLP.Config.ShowTermNature=Falsetrie=load_dictionary(HanLP.Config.CoreStopWordDictionaryPath)text="今天就这样吧!明天我们在说可以吗?"segment=DoubleArrayTrieSegment()termlist=segment.seg(text)print("分词结果",termlist)print("去掉停用词",remove_stopwords(termlist,trie))

运行之后,得到如下结果:

直接删除停用词(不分词)

对应上面的结果,我们先分词在删除停用词。但是,有时候我们也喜欢先删除停用词在进行分词。下面,我们来实现直接删除停用词。

代码如下:

#直接过滤方法
def direct_remove_stopwords(text,replacement,trie):JString=JClass('java.lang.String')searcher=trie.getLongestSearcher(JString(text),0)offset=0result=''while searcher.next():begin=searcher.beginend=begin+searcher.lengthif begin>offset:result+=text[offset:begin]result+=replacementoffset=endif offset<len(text):result+=text[offset:]return resultif __name__ == "__main__":HanLP.Config.ShowTermNature = Falsetrie = load_dictionary(HanLP.Config.CoreStopWordDictionaryPath)text = "今天就这样吧!明天我们在说可以吗?"segment = DoubleArrayTrieSegment()termlist = segment.seg(text)print("分词结果", termlist)print("去掉停用词", remove_stopwords(termlist, trie))print("不分词去掉停用词", direct_remove_stopwords(text, "**", trie))

运行之后,效果如下:

停用词过滤---Python自然语言处理(4)相关推荐

  1. 贪心NLP——jieba分词、停用词过滤、词的标准化,词袋模型

    基于结巴(jieba)的分词. Jieba是最常用的中文分词工具 import jiebaset_list=jieba.cut('中南财经政法大学在茶山刘',cut_all=False) print( ...

  2. python停用词表_多版本中文停用词词表 + 多版本英文停用词词表 + python词表合并程序...

    文章简介与更新记录 如果你只想获取中文停用词此表,请直接到文章结尾下载项目文件,其中包括三个中文停用词词表,一个英文停用词词表和一个合并词表的.py文件2017/07/04 创建文章,上传文件 201 ...

  3. 多版本中文停用词词表 + 多版本英文停用词词表 + python词表合并程序

    文章目录 文章简介与更新记录 停用词 python合并中文停用词词表的代码 下载所有文件 文章简介与更新记录 如果你只想获取中文停用词此表,请直接到文章结尾下载项目文件,其中包括三个中文停用词词表,一 ...

  4. 2020-05-29 nlp_01之停用词过滤、stemming

    停用词 把停用词.出现频率很低的词汇过滤掉. 原因:经常出现的或者频率很低的词,并没有实际意义的词,可以认为是噪声,会影响模型的判断,给模型带来一定的影响 目的:筛选出价值比较高的特征,可以把停用词理 ...

  5. dfa算法c语言,DFA跟trie字典树实现敏感词过滤(python和c语言)

    DFA和trie字典树实现敏感词过滤(python和c语言) 现在做的项目都是用python开发,需要用做关键词检查,过滤关键词,之前用c语言做过这样的事情,用字典树,蛮高效的,内存小,检查快. 到了 ...

  6. 100毫秒过滤一百万字文本的停用词

    作者简介:小小明,Pandas数据处理专家,致力于帮助无数数据从业者解决数据处理难题. 之前有位群友分享了使用Pandas过滤停用词的技巧: 不过其实这并不是效率最高的一种方法,今天我将演示一种更高效 ...

  7. pyhanlp 停用词与用户自定义词典

    hanlp的词典模式 之前我们看了hanlp的词性标注,现在我们就要使用自定义词典与停用词功能了,首先关于HanLP的词性标注方式具体请看HanLP词性标注集. 其核心词典形式如下: 自定义词典 自定 ...

  8. Lucene的Smart CN实现分词、停用词、扩展词

    Lucene 中提供了 SmartCN 为中文提供分词功能,实际应用中还会涉及到停用词.扩展词(特殊词.专业词)等,因此本文将聚焦在 SmartCN 而暂时不考虑其他中文分词类库. 1 简介 anal ...

  9. python结巴分词去掉停用词、标点符号、虚词_NLP自然语言处理入门-- 文本预处理Pre-processing...

    引言 自然语言处理NLP(nature language processing),顾名思义,就是使用计算机对语言文字进行处理的相关技术以及应用.在对文本做数据分析时,我们一大半的时间都会花在文本预处理 ...

最新文章

  1. PIE.htc 让IE使用CSS3
  2. OpenStack配置虚拟机vcpu绑定步骤 转至元数据结尾
  3. 对 Stream 中 Map 与 ForEach 做个简单说明
  4. python 多分类情感_文本情感分类(一):传统模型
  5. 如何把GIT项目push到公司review服务器
  6. img src 本地图片_Java爬取简单的网页内容和图片
  7. qt opengl 2d绘图效率_Qt趣味开发之打造一个3D名字渲染小工具
  8. wampserver下载安装使用教程
  9. React-native设置全局函数globle【适用于有组件嵌套时】
  10. 暑期训练第四次团队赛
  11. Halcon 汉字识别
  12. 使用计算机能播放音乐也能观看视频,我电脑可以放歌有声音。怎么播放视频没声音啊?给我解决方案...
  13. 基金业绩的python分析_Python与量化多因子——聊聊Brinson业绩归因
  14. E哥的Git教程(一)
  15. Java技术实验三 货物进销管理系统
  16. download 下载文件 IE兼容性处理
  17. HTML中的5种空格表示
  18. Java - 关于HashMap通过keySet遍历kv的二次调用问题
  19. vgg16卷积层的计算量_卷积神经网络VGG16详解
  20. 邻接表:求指定顶点的(出)度

热门文章

  1. Part 1: 1.1 合成布尔函数~1.2逻辑门
  2. 车辆监控系统使用帮助
  3. exe执行文件变白色无图标解决方法
  4. elgamal签名算法c语言,ELGamal数字签名.doc
  5. 人工智能常识和干货,适合收藏
  6. libgdx教程_使用libgdx进行Android游戏开发–一天中的原型,第1a部分
  7. ngnix有版本要求吗_魔兽世界:暴雪疯了?新版本老玩家遭重大削弱,这是逼人AFK?...
  8. windows 10 ltsc企业版实现C盘系统还原功能
  9. Python绘图实例36:分叉树绘制
  10. [转载]H3CS5500交换机策略路由配置_马立杰_新浪博客