欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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();
		/*控制台打印:整体很不错
		还是
		原来
		那个
		我
		不过
		流掉
		几
		公升
		泪
		所以
		变
		瘦
		对着
		镜子
		我
		承诺
		迟早
		我会
		我
		会
		还
		这张
		脸
		一堆
		一
		堆笑
		堆
		笑容
		不算
		什
		麽
		爱错
		就爱
		爱错
		早点
		认错
		早一点
		一点
		一
		点解
		点
		解脱
		我
		寂寞
		寂寞
		就好
		这时候
		这时
		时候
		谁都
		别来
		来安
		安慰
		拥抱
		就让
		我
		一个人
		一个
		一
		个人
		个
		人去
		去痛
		到
		受不了*/


2、自定义分词器的字典:

像网上时不时暴出各种网络词,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>
其他代码不变,可以看到控制台不输入自定义的停用词(这个里就不显示效果了)。