论坛首页 Java企业应用论坛

强大的lucene中文分词器

浏览 17158 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-06-07  
package com.wellhope.lucene;

import java.io.StringReader;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.Token;
import org.apache.lucene.analysis.TokenStream;
import org.mira.lucene.analysis.IK_CAnalyzer;

public class ShowResult {
public static void show(Analyzer a, String s) throws Exception {

StringReader reader = new StringReader(s);
TokenStream ts = a.tokenStream(s, reader);


Token t = ts.next();
while (t != null) {
System.out.println(t.termText());
t = ts.next();
}
}

public static void main (String [] args) throws Exception {
Analyzer a = new IK_CAnalyzer();
String key = "中华人民共和国";
show(a, key);
}
}


输出结果:
中华人民共和国
中华人民
中华
华人
人民共和国
人民

共和国
共和
   发表时间:2007-08-01  
这个分词的确不错,但是仅限于对搜索结果要求不高的互联网,在企业全文检索中,会出现很多无法检索到。
对于企业应用来说,用户一般追求匹配度,IK_CAnalyzer有个大的问题就是对于一连串无法识别的字会当成一个词。如陈官镇下溪村,假如在词库未包含以上任何词,那么用户习惯性输入"陈官",就无法检索。
0 请登录后投票
   发表时间:2007-08-02  
对不认识的直接用二元分词就好办了
0 请登录后投票
   发表时间:2007-08-02  
我也觉得对不认识的一段文字干脆一元分词或者二元分词,否则会造成很多记录无法检索出来。
0 请登录后投票
   发表时间:2007-08-02  
所以一个问题是能否检索到数据,还有一个是如何让结果更准确,只有根据具体应用具体处理了.这里对用户输入的数据也进行分词,对不认识的用WildCard好像也能检索到
0 请登录后投票
   发表时间:2007-08-02  
还是需要提高的,在中文分词方面还有很多弊端。对于要求不高的用户来说是不错的选择。
0 请登录后投票
   发表时间:2007-08-03  
森海 写道
还是需要提高的,在中文分词方面还有很多弊端。对于要求不高的用户来说是不错的选择。


同意。
0 请登录后投票
   发表时间:2007-08-03  
org.apache.lucene.analysis.Analyzer 相关包提示找不到呀
0 请登录后投票
   发表时间:2007-08-16  
感谢各位的建议。新版分词器已经发布,整合了二元分词
下载地址:http://download.csdn.net/source/227957

来自“猎图网 www.richmap.cn”基于IKAnalyzer分词算法的准商业化Lucene中文分词器。

1. 正向全切分算法,42万汉字字符/每秒的处理能力(IBM ThinkPad 酷睿I 1.6G 1G内存 WinXP)

2. 对数量词、地名、路名的优化处理

3. 对未知词汇采用自识别结合二元切分算法,确保搜索召回率
2 请登录后投票
   发表时间:2007-08-27  
新版IKAnalyzer V2.0.2 Lucene中文分词器下载地址 : http://download.csdn.net/source/236243

V 2.0.2 修订 Bata版对二元切分的缺陷

正向全切分分词器:org.mira.lucene.analysis.IK_CAnalyzer(适合建索引时使用)

正向最大全切分分词器:org.mira.lucene.analysis.MIK_CAnalyzer(适合用户输入检索时使用)
1 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics