|
首页>相关研究方向>lucene/nutch> |
Lucene几种中文分词的总结 |
|
Visited times , Welcome to Data Mining Forum & Data Mining Expert |
|
|
目前最新版本的lucene自身提供的StandardAnalyzer已经具备中文分词的功能,但是不一定能够满足大多数应用的需要。 另外网友谈的比较多的中文分词器还有: CJKAnalyzer ChineseAnalyzer IK_CAnalyzer(MIK_CAnalyzer) 还有一些热心网友自己写的比较不错的分词器在此就不说了,有兴趣的可以自己研究研究。 以上三个中文分词器并不是lucene2.2.jar里提供的。 CJKAnalyzer和ChineseAnalyzer分别是lucene-2.2.0目录下contrib目录下analyzers的lucene-analyzers-2.2.0.jar提供的。分别位于cn和cjk目录。 IK_CAnalyzer(MIK_CAnalyzer)是基于分词词典,目前最新的1.4版本是基于lucene2.0开发的。以上分词器各有优劣,比较如下: import java.io.Reader; import java.io.StringReader; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.StopFilter; import org.apache.lucene.analysis.Token; import org.apache.lucene.analysis.TokenFilter; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.cjk.CJKAnalyzer; import org.apache.lucene.analysis.cn.ChineseAnalyzer; 数据挖掘研究院 import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.mira.lucene.analysis.IK_CAnalyzer; import org.mira.lucene.analysis.MIK_CAnalyzer; public class All_Test { private static String string = "中华人民共和国在1949年建立,从此开始了新中国的伟大篇章。"; public static void Standard_Analyzer(String str) throws Exception{ Analyzer analyzer = new StandardAnalyzer(); Reader r = new StringReader(str); StopFilter sf = (StopFilter) analyzer.tokenStream("", r); System.out.println("=====StandardAnalyzer===="); System.out.println("分析方法:默认没有词只有字(一元分词)"); Token t; while ((t = sf.next()) != null) { System.out.println(t.termText()); } } public static void CJK_Analyzer(String str) throws Exception{ Analyzer analyzer = new CJKAnalyzer(); Reader r = new StringReader(str); StopFilter sf = (StopFilter) analyzer.tokenStream("", r); System.out.println("=====CJKAnalyzer===="); System.out.println("分析方法:交叉双字分割(二元分词)"); Token t; while ((t = sf.next()) != null) { System.out.println(t.termText()); } } public static void Chiniese_Analyzer(String str) throws Exception{ Analyzer analyzer = new ChineseAnalyzer(); Reader r = new StringReader(str); TokenFilter tf = (TokenFilter) analyzer.tokenStream("", r); System.out.println("=====chinese analyzer===="); System.out.println("分析方法:基本等同StandardAnalyzer(一元分词)"); Token t; while ((t = tf.next()) != null) { System.out.println(t.termText()); } } public static void ik_CAnalyzer(String str) throws Exception{ // Analyzer analyzer = new MIK_CAnalyzer(); Analyzer analyzer = new IK_CAnalyzer(); Reader r = new StringReader(str);
|
| 上一页12 下一页 |
|
|
|
[数据挖掘专家]
[数据挖掘研究院]
[数据挖掘论坛]
[数据挖掘实验室]
|
上一篇:Lucene 基础指南(Java版)
下一篇:Lucene倒排索引原理
|
|
|
|