停用词过滤原理及实现

news/2024/11/6 15:33:37/

1.停用词

指语言中一类没有多少意义的词语,比如“的”“甚至”“不仅”“吧”

一个句子去掉了停用词并不影响理解,停用词视具体的任务不同而不同。停用词过滤是一个常见的预处理过程


2.实现思路

  • 加载中止词:IO加载中止词(中止词下载地址,复制粘贴保存为txt文本)
  • 分词:使用HanLP进行分词
  • 停用词过滤:从分词结果中去除中止词

3.加载中止词

这里最简单的做法是把中止词直接加入List中,但当词过多时,会浪费大量空间和查询时间,考虑到中文词大部分较短,这里使用双数组字典树(DATrie)构建,不熟悉双数组字典树的可以看这里,下面是构建代码:

/***  @author: Ragty*  @Date: 2020/4/11 12:37*  @Description: 加载字典到DATrie*/
public static DATrie loadStopword(String path) throws IOException {BufferedReader bufferedReader = new BufferedReader(new FileReader(stopWordsPath));List<String> stopWords = new ArrayList<String>();String temp = null;while ((temp = bufferedReader.readLine()) != null) {stopWords.add(temp.trim());}DATrie daTrie = new DATrie();daTrie.build(stopWords);return daTrie;
}

4.分词

这里分词我们使用HanLP进行分词,不熟悉的可参考配置,下面是分词代码:

/***  @author: Ragty*  @Date: 2020/4/11 12:41*  @Description: HanLP分词*/
private static List<Term> segment(String text) {List<Term> list = HanLP.segment(text);return list;
}

5.停止词过滤

这里直接从构建好的DATrie上查询,匹配到就停止词,就去掉,下面是实现代码:

/***  @author: Ragty*  @Date: 2020/4/11 13:17*  @Description: 停用词过滤*/
public static List<Term> removeStopWords(String text, DATrie daTrie) {List<Term> list = segment(text);ListIterator<Term> listIterator = list.listIterator();while(listIterator.hasNext()) {if (daTrie.containsKey(listIterator.next().word)) {listIterator.remove();}}return list;
}

6.测试用例

public static void main(String[] args) throws IOException {String text = "原来的路已经看不到了,只剩远方模糊的身影";DATrie daTrie = loadStopword(text);System.out.println("源文本:"+ text);System.out.println("分词结果:"+ segment(text));System.out.println("停用词过滤:" + removeStopWords(text,daTrie));
}

7.测试结果

源文本:原来的路已经看不到了,只剩远方模糊的身影
分词结果:[原来/d,/ude1,/n, 已经/d, 看不到/v,/ule,/w, 只剩/v, 远方/s, 模糊/a,/ude1, 身影/n]
停用词过滤:[/n,/w, 模糊/a, 身影/n]

8.源码地址

源码地址


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

相关文章

中文常用停用词表

目录 百度停用词表 哈工大停用词表 四川大学机器智能实验室停用词库 中文停用词表 百度停用词表 -- ? “ ” 》 &#xff0d;&#xff0d; able about above according accordingly across actually after afterwards again against aint all allow allows almost alone …

python去掉停用词_Python - 删除停用词

停用词是英语单词,对句子没有多大意义。在不牺牲句子含义的情况下,可以安全地忽略它们。例如,像,他,等等的单词已经在名为语料库的语料库中捕获了这些单词。我们首先将它下载到我们的python环境中。 import nltk nltk.download(stopwords) 它将下载带有英语停用词的文件…

python停用词表整理_python停用词表

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! stop_words:设置停用词表,这样的词我们就不会统计出来(多半是虚拟词,冠词等等),需要列表结构,所以代码中定义了一个函数来处理停用词表...前言前文给大家…

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

目录 什么是停用词加载停用词字典删除停用词分词以及删除停用词直接删除停用词&#xff08;不分词&#xff09; 什么是停用词 在汉语中&#xff0c;有一类没有多少意义的词语&#xff0c;比如组词“的”&#xff0c;连词“以及”、副词“甚至”&#xff0c;语气词“吧”&#…

苹果手机为什么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;关闭手机休眠状…