IKAnalyzer分词单独使用例子
最近用了一下中文分词工具,网上说中科院研究的盘古分词比较好,找了一下没有java版本的,只有.net版本的,所以选用的IKAnalyzer分词工具.
IKAnalyzer官方说有以下特点(我没有做过测试,不知是真是假):
采用了特有的“正向迭代最细粒度切分算法“,具有60万字/秒的高速处理能力。
采用了多子处理器分析模式,支持:英文字母(IP地址、Email、URL)、数字(日期,常用中文数量词,罗马数字,科学计数法),中文词汇(姓名、地名处理)等分词处理。
言归正传开始看代码:
使用版本3.2.8 地址 http://code.google.com/p/ik-analyzer/downloads/list
目录结构:
/ext_stopword.dic (停词列表)
/IKAnalyzer.cfg.xml (配置文件)
/IKAnalyzer3.2.8.jar
/doc3.2.8
把/ext_stopword.dic /IKAnalyzer.cfg.xml两个文件放到classpath下,引入/IKAnalyzer3.2.8.jar
/IKAnalyzer.cfg.xml内容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict">/mydict.dic</entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords">/ext_stopword.dic</entry>
</properties>
/mydict.dic内容:
不是坏人
不是好人
ext_stopword.dic内容:
也
了
仍
从
以
使
则
却
又
及
对
就
并
很
或
把
是
的
着
给
而
被
让
在
还
比
等
当
与
于
但
实例代码:
package IKAnalyzerTest;
import java.io.IOException;
import java.io.StringReader;
import org.wltea.analyzer.IKSegmentation;
import org.wltea.analyzer.Lexeme;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args ) throws IOException{
String str = "从那时起,我就不是坏人了";
StringReader reader = new StringReader(str);
IKSegmentation ik = new IKSegmentation(reader,true);//当为true时,分词器进行最大词长切分
Lexeme lexeme = null;
while((lexeme = ik.next())!=null)
System.out.println(lexeme.getLexemeText());
}
}
去掉/mydict.dic和/ext_stopword.dic运行结果:
从那时起
我
就不是
坏人
了
只去掉/mydict.dic运行结果:
从那时起
我
就不是
坏人
全加上运行结果:
从那时起
我
就不是
不是坏人
IKAnalyzer官方说有以下特点(我没有做过测试,不知是真是假):
采用了特有的“正向迭代最细粒度切分算法“,具有60万字/秒的高速处理能力。
采用了多子处理器分析模式,支持:英文字母(IP地址、Email、URL)、数字(日期,常用中文数量词,罗马数字,科学计数法),中文词汇(姓名、地名处理)等分词处理。
言归正传开始看代码:
使用版本3.2.8 地址 http://code.google.com/p/ik-analyzer/downloads/list
目录结构:
/ext_stopword.dic (停词列表)
/IKAnalyzer.cfg.xml (配置文件)
/IKAnalyzer3.2.8.jar
/doc3.2.8
把/ext_stopword.dic /IKAnalyzer.cfg.xml两个文件放到classpath下,引入/IKAnalyzer3.2.8.jar
/IKAnalyzer.cfg.xml内容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict">/mydict.dic</entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords">/ext_stopword.dic</entry>
</properties>
/mydict.dic内容:
不是坏人
不是好人
ext_stopword.dic内容:
也
了
仍
从
以
使
则
却
又
及
对
就
并
很
或
把
是
的
着
给
而
被
让
在
还
比
等
当
与
于
但
实例代码:
package IKAnalyzerTest;
import java.io.IOException;
import java.io.StringReader;
import org.wltea.analyzer.IKSegmentation;
import org.wltea.analyzer.Lexeme;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args ) throws IOException{
String str = "从那时起,我就不是坏人了";
StringReader reader = new StringReader(str);
IKSegmentation ik = new IKSegmentation(reader,true);//当为true时,分词器进行最大词长切分
Lexeme lexeme = null;
while((lexeme = ik.next())!=null)
System.out.println(lexeme.getLexemeText());
}
}
去掉/mydict.dic和/ext_stopword.dic运行结果:
从那时起
我
就不是
坏人
了
只去掉/mydict.dic运行结果:
从那时起
我
就不是
坏人
全加上运行结果:
从那时起
我
就不是
不是坏人