Lucene扩展停用词字典与自定义词库

简介: 一、扩展停用词字典IK Analyzer默认的停用词词典为IKAnalyzer2012_u6/stopword.dic,这个停用词词典并不完整,只有30多个英文停用词。

一、扩展停用词字典

IK Analyzer默认的停用词词典为IKAnalyzer2012_u6/stopword.dic,这个停用词词典并不完整,只有30多个英文停用词。可以扩展停用词字典,新增ext_stopword.dic,文件和IKAnalyzer.cfg.xml在同一目录,编辑IKAnalyzer.cfg.xml把新增的停用词字典写入配置文件,多个停用词字典用逗号隔开,如下所示。

<entry  key="ext_stopwords">stopword.dic;ext_stopword.dic</entry>

二、扩展自定义词库

IK Analyzer也支持自定义词典,在IKAnalyzer.cfg.xml同一目录新建ext.dic,把新的词语按行写入文件,编辑IKAnalyzer.cfg.xml把新增的停用词字典写入配置文件,多个字典用空格隔开,如下所示:

    <entry key="ext_dict">ext.dic;</entry>
比如,对于网络流行语“厉害了我的哥”,默认的词库中没有这个词,在自定义字典中写入以后才能分成一个词。

三、测试自定义词典效果

import java.io.IOException;
import java.io.StringReader;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import tup.lucene.ik.IKAnalyzer6x;
public class ExtDicTest {
    private static String str = "厉害了我的哥!中国环保部门发布了治理北京雾霾的的方法!";
    public static void main(String[] args) throws IOException {
        Analyzer analyzer = new IKAnalyzer6x(true);
        StringReader reader = new StringReader(str);
        TokenStream toStream = analyzer.tokenStream(str, reader);
        toStream.reset();
        CharTermAttribute   teAttribute= toStream.getAttribute(CharTermAttribut     e.class);
        System.out.println("分词结果:");
        while (toStream.incrementToken()) {
            System.out.print(teAttribute.toString() + "|");
        }
        System.out.println("\n");
        analyzer.close();
    }
}

运行结果:

加载扩展词典:ext.dic
加载扩展停止词典:stopword.dic
分词结果:
厉|害了|的哥|中国|环保部门|发布|治理|北京|雾|霾|方法|

在ext.dic中添加自定义词项:

中国环保部门
北京雾霾
厉害了我的哥

再次运行,结果如下:

加载扩展词典:ext.dic
加载扩展停止词典:stopword.dic
分词结果:
厉害了我的哥|中国环保部门|发布|治理|北京雾霾|方法|
目录
相关文章
|
7月前
|
机器学习/深度学习 自然语言处理 算法
文本分析-使用jieba库进行中文分词和去除停用词(附案例实战)
文本分析-使用jieba库进行中文分词和去除停用词(附案例实战)
3589 0
|
自然语言处理
IK分词器设置了停用词部分没有生效问题
IK分词器设置了停用词部分没有生效问题
|
机器学习/深度学习 存储 自然语言处理
Jieba分词模式详解、词库的添加与删除、自定义词库失败的处理
Jieba(结巴)是一个中文分词第三方库,它可以帮助我们将一段中文文本分成一个个独立的词语。Jieba具有以下特点: 简单易用:Jieba提供了简洁的API接口,易于使用和扩展。可以快速地实现中文分词功能。 高效准确:Jieba采用了基于前缀词典和动态规划算法的分词方法,能够高效准确地处理各种中文文本。 支持多种分词模式:Jieba提供了三种分词模式:精确模式、全模式和搜索引擎模式,可以根据不同的应用场景选择合适的模式。
Jieba分词模式详解、词库的添加与删除、自定义词库失败的处理
|
自然语言处理 搜索推荐 Python
jieba分词器(应用及字典的补充)及文档高频词提取实战
jieba分词器(应用及字典的补充)及文档高频词提取实战
|
自然语言处理 索引
elasticsearch hanlp插件自定义分词配置(停用词)
简述elasticsearch hanlp插件自定义分词配置,涉及停用词,专有名词
elasticsearch hanlp插件自定义分词配置(停用词)
|
自然语言处理 安全 Java
Elastic:IK分词器分词、停用词热更新如何配置(二)基于数据库
上一期,我们说明了基于API形式的热更新,但是API形式的热更新存在词库的管理不方便,要直接操作磁盘文件,检索页很麻烦;文件的读写没有专门的优化,性能不好;多一次接口调用和网络传输等缺点,因此这期我们来说明直连数据库的方式来实现热更新
488 0
Elastic:IK分词器分词、停用词热更新如何配置(二)基于数据库
|
缓存 自然语言处理 前端开发
Elastic:IK分词器分词、停用词热更新如何配置(一)基于API
热更新是IK新版本中才支持的功能,其API需要满足两个要求: 1、http请求中需要返回两个header,一个是Last-Modified,一个ETag。两个header都是字符串类型的。他们之中只要有一个发生变化,就会读取详情的数据并且更新词库,如果没有变化则不会更新词库。这个条件如果做前端的同学应该会比较熟悉,前端判断缓存是否更改时也是通过这两个条件。
494 0
Elastic:IK分词器分词、停用词热更新如何配置(一)基于API
|
自然语言处理 Windows
ik分词器配置自定义词典+追加写入文件
ik分词器配置自定义词典+追加写入文件
ik分词器配置自定义词典+追加写入文件
|
自然语言处理 算法
HanLP用户自定义词典源码分析详解
HanLP作者在HanLP issue783:上面说:词典不等于分词、分词不等于自然语言处理;推荐使用语料而不是词典去修正统计模型。由于分词算法不能将一些“特定领域”的句子分词正确,于是为了纠正分词结果,把想要的分词结果添加到自定义词库中,但最好使用语料来纠正分词的结果。
1727 0
|
自然语言处理
HanLP分词工具中的ViterbiSegment分词流程
本篇文章将重点讲解HanLP的ViterbiSegment分词器类,而不涉及感知机和条件随机场分词器,也不涉及基于字的分词器。因为这些分词器都不是我们在实践中常用的,而且ViterbiSegment也是作者直接封装到HanLP类中的分词器,作者也推荐使用该分词器,同时文本分类包以及其他一些自然语言处理任务包中的分词器也都间接使用了ViterbiSegment分词器。
1134 0