java鬼混笔记:lucene 4、中文分词器--IKAnalyzer
程序员文章站
2024-02-21 22:33:04
...
这次的笔记是lucene中的中文分词器IKAnalyzer的操作,要导入相关的jar包:IKAnalyzer2012.jar,接着进行普通的操作测试
1、基本操作
// 定义文字
String txt = "还是原来那个我,不过流掉几公升泪所以变瘦,对着镜子我承诺,迟早我会还这张脸一堆笑容,不算什麽 爱错就爱错,早点认错,早一点解脱,我寂寞寂寞就好,这时候谁都别来安慰 拥抱,就让我一个人去痛到受不了";
Analyzer analyzer = new IKAnalyzer();
TokenStream ts = analyzer.tokenStream("content", new StringReader(txt));
while(ts.incrementToken()) {
CharTermAttribute cta = ts.getAttribute(CharTermAttribute.class);
System.out.println(cta.toString());
}
analyzer.close();
/*控制台打印:整体很不错
还是
原来
那个
我
不过
流掉
几
公升
泪
所以
变
瘦
对着
镜子
我
承诺
迟早
我会
我
会
还
这张
脸
一堆
一
堆笑
堆
笑容
不算
什
麽
爱错
就爱
爱错
早点
认错
早一点
一点
一
点解
点
解脱
我
寂寞
寂寞
就好
这时候
这时
时候
谁都
别来
来安
安慰
拥抱
就让
我
一个人
一个
一
个人
个
人去
去痛
到
受不了*/
像网上时不时暴出各种网络词,IKAnalyzer是不识别的,所以我们要手动加词让IKAnalyzer识别,比如txt = "网络词:王尼马,苹果婊,张全蛋,papi酱";,那么IKAnalyzer分词的结果是:
网络
词
王
尼
马
苹果
婊
张
全
蛋
papi
酱
这个结果并不是我们想要的,所以这时候要添加分词的字典了。
首先在src目录下添加IKAnalyzer.cfg.xml文件
IKAnalyzer.cfg.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>DIY</comment>
<!-- 自定义分词字典 -->
<entry key="ext_dict">ext_dict.dic;</entry>
</properties>
接着在src目录下创建ext_dict.dic文件,打开这个文件,内容如下:
ext_dict.dic:
王尼马// 一个词一行
苹果婊
张全蛋
papi酱
保存后运行程序,控制台打印:
加载扩展词典:ext_dict.dic
网络
词
王尼马
苹果婊
苹果
婊
张全蛋
papi酱
papi
酱
这个分词结果就很理想了。。。
3、自定义分词器的停用词
首先在IKAnalyzer.cfg.xml中加入
<!-- 自定义停用分词字典 -->
<entry key="ext_stopwords">ext_stopwords.dic;</entry>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>DIY</comment>
<!-- 自定义分词字典 -->
<entry key="ext_dict">ext_dict.dic;</entry>
<!-- 自定义停用分词字典 -->
<entry key="ext_stopwords">ext_stopwords.dic;</entry>
</properties>
其他代码不变,可以看到控制台不输入自定义的停用词(这个里就不显示效果了)。
上一篇: IKAnalyzer IK分词器
下一篇: 浅谈es的原理、机制 ,IK分词原理