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

news/2024/11/23 20:11:24/

目录

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

什么是停用词

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

而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))

运行之后,效果如下:
运行结果


http://www.ppmy.cn/news/623370.html

相关文章

苹果手机为什么Apple ID会被停用

原因如下&#xff1a; 1、你的Apple ID号在不同的设备上登录次数过多&#xff0c;登录苹果官网&#xff0c;进入管理Apple ID&#xff0c;删除一些设备 可能是因为你把自己的帐户告诉过其他朋友&#xff0c;或者是分享了自己的Apple ID给别人以及各大论坛上。 密码多次输入错…

谷歌账号被停用应该用什么方法进行找回(2022最新)

一&#xff0e;造成谷歌账号停用的原因 在使用谷歌账号的时候&#xff0c;由于对于IP的使用没有做到合规&#xff0c;用一个IP登录了多个谷歌账号&#xff0c;那么就会导致前面已经登录的账号出现了大量的停用&#xff0c;如果你没有一个IP登录多个账号也导致了停用&#xff0c…

python去停用词用nltk_使用nltk删除英文停用词

一、概念 首先我们来看一下停用词的概念,然后来介绍使用nltk如何删除英文的停用词: 由于一些常用字或者词使用的频率相当的高,英语中比如a,the, he等,中文中比如:我、它、个等,每个页面几乎都包含了这些词汇,如果搜索引擎它们当关键字进行索引,那么所有的网站都会被…

android wifi已停用,为什么手机连接wifi时总显示已停用

手机连接WiFi时总是显示已停用的可能原因&#xff1a; (一)手机休眠 手机为了节省用电&#xff0c;通常具备在休眠状态下自动关闭WiFi网络的功能&#xff0c;因此当该功能被打开后&#xff0c;手机可能会因为休眠状态而出现无法联网的状态。 解决办法&#xff1a;关闭手机休眠状…

电脑开始锁定计算机有什么用,电脑Scroll Lock键有什么用的

我们键盘上有少数不常用的键,但是我们还是得知道什么功能,比如Scroll Lock键,具体有什么用呢?下面学习啦小编就以笔记本电脑为例子,跟大家介绍一下吧,希望对大家有所帮助~ 笔记本电脑Scroll Lock键的使用方法 1、首先Scroll Lock按键在电脑的右上方; 2、Scroll Lock按键的…

王道考研计算机网络第三章知识点汇总

3.1数据链路层功能概述&#xff1a; 3.2封装成帧和透明传输 重点理解透明传输的概率&#xff1a;可以形象地理解为小秘没有权限打开这5份文件 字符计数法如果其中一个计数字段出差错那么后续字段全部都错误&#xff0c;将会导致灾难性的错误。 字符填充法相当于编程时在/前面再…

main : run as user is xwq main : requested yarn user is xwq User xwq not found

项目场景&#xff1a; kerberos配置hadoop ha時&#xff0c;重新創建一個新的普通用戶&#xff0c;測試其功能 问题描述 kerberos配置hadoop ha時&#xff0c;重新創建了一個用戶xwq&#xff0c;讓其執行hadoop jar /opt/ha/hadoop/share/hadoop/mapreduce/hadoop-mapreduce…

处理Springboot项目启动时streamBridge.send导致的卡住卡死问题

现象 我们的Spring Boot 项目启动时&#xff0c;偶现卡死的现象&#xff0c;启动到一半卡主不动了 2023-01-16 10:23:10.338 INFO 1 --- [ restartedMain] com.hazelcast.core.LifecycleService : [172.18.0.14]:5701 [dev] [4.2.4] [172.18.0.14]:5701 is STARTED 20…