码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2017-02-06 13:32:50      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:运行   i++   rem   str   down   ras   ken   this   void   

一、扩展停用词字典

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
分词结果:
厉害了我的哥|中国环保部门|发布|治理|北京雾霾|方法|

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

标签:运行   i++   rem   str   down   ras   ken   this   void   

原文地址:http://blog.csdn.net/napoay/article/details/54864959

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!