IK Analyzer默认的停用词词典为IKAnalyzer2012_u6/stopword.dic,这个停用词词典并不完整,只有30多个英文停用词,不足以满足需求,可新增自定义停用词,常用词来满足不同的业务需求
1、创建IKAnalyzer.cfg.xml来加载词典
在resources文件夹下创建IKAnalyzer.cfg.xml来声明停用词,常用词
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<!--
1,ext和stopword文件要 UTF-8 编码。
2,一行写一个词
3,多个文件用 ‘;’隔开
-->
<!--停用词-->
<entry key="ext_stopwords">ext_stopword.txt</entry>
<!--自定义词库-->
<entry key="ext_dict">ext_dict.txt</entry>
</properties>
2、创建ext.txt自定义常用词典
创建utf-8格式的 ext_dict.txt 和 ext_stopword.txt 放在与IKAnalyzer.cfg.xml同一目录下
如果格式不对可以使用记事本打开然后另存为UTF-8格式
3、测试效果
首先是未添加停用词和常用词的结果
public static void main(String[]args) throws Exception {
String keyword="时间就是性命。无端的空耗别人的时间,其实是无异于谋财害命";
Analyzer anal=new IKAnalyzer(true);
StringReader reader2=new StringReader(keyword);
//分词
TokenStream ts=anal.tokenStream("", reader2);
ts.reset();
CharTermAttribute term=ts.getAttribute(CharTermAttribute.class);
//遍历分词数据
System.out.println("将【"+keyword+"】分词:");
while(ts.incrementToken()){
System.out.print(term.toString()+"|");
}
anal.close();
}
运行结果
在 ext_dict.txt (常用词)文件中添加
时间就是性命
运行结果
然后在 ext_stopword.txt (停用词)文件中添加
谋财害命
运行结果