论坛首页 Java企业应用论坛

中文分词 庖丁解牛 2.0.0版本发布

浏览 38837 次
精华帖 (14) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-08-09  
我上面说的是文件储存编码,这个是要解决的,也好解决。
你说的是字符集问题,当然啦,如果用户检索的是繁体字,你的简体词典里又没有这个词,那肯定检索不到结果。我看过有的中文分词做了这方面的工作,里面有三个版本的中文词典。如有需要我可以发给你。

很不好意思,高度错误问题仍然存在,我已经尝试了很多次了。你应该也收到我的截图吧。郁闷,为什么你运行就没有问题呢。是不是你本地还有什么修改没提交?这个问题不解决没法用呀。
0 请登录后投票
   发表时间:2007-08-09  
我委托其他同学试一下"高度错误问题"。他们下载google上提供的  链接  后运行和我一样是正确的。

我在我的本上(xp home JDK1.6)、PC(xp pro JDK1.6)、Server(rhas JDK1.5)三个机器上使用高亮都是OK的,委托帮忙测试的人也都反馈正确,
但是你确实截图上出现高亮到最大词的问题,这也是千真万确的,所以很雾水。

而且如果这个问题为真,也应是代码的问题,应跟操作系统环境无关。

只能多多试验了,然后最后求证,看看差别在什么地方。

----------------------
背景: rainsf说的问题是:
检索“中华”时,在它那边的环境中会把“中华人民共和国”加亮的问题。


希望有热心的同学帮忙一下
下载paoding-analysis-2.0.0.zip解压后,进入cmd命令行,运行一下example.bat如下:
E:\xxx\paoding-analysis-2.0.0>example.bat 中华

看看结果如何,是否<b></b>仅包含在“中华”,还是包含在“中华人民共和国”外面
然后把运行结果COPY发送站内消息给我。 不胜感谢   ~~ orz (我给您趴下了)

[由于本人不慎,打的JAR是JDK6的,所以如果环境不是JDK6的同学,可能不能直接运行example.bat]

这是我的运行结果:

引用

E:\...\paoding-analysis-2.0.0>example.bat 中华

E:\...\paoding-analysis-2.0.0>java -cp ./;paoding-analyis.jar;lib/commons-logging.jar;lib/lucene-core-2.2.0.jar;lib/lucene-highlighter-2.2.0.jar net.paoding.analysis.examples.gettingstarted.ch2.PeopleRepublicOfChina 中华
2007-8-9 21:39:27 net.paoding.analysis.knife.FileWordsLoader setProperties
信息: paoding.dic.home=dic/
2007-8-9 21:39:29 net.paoding.analysis.knife.PaodingMaker make
信息: add knike: net.paoding.analysis.knife.CJKKnife
2007-8-9 21:39:29 net.paoding.analysis.knife.PaodingMaker make
信息: add knike: net.paoding.analysis.knife.NumberKnife
2007-8-9 21:39:29 net.paoding.analysis.knife.PaodingMaker make
信息: add knike: net.paoding.analysis.knife.LetterKnife
Searching for: 中华

<b>中华</b>人民共和国(英文:The People's Republic of China,通常简称...];<b>中
华</b>人民共和国将行政區劃分为23个省、5个少数民族自治区、4个直辖市、以及2个特别
行政区,但台湾不在<b>中华</b>人民共和国政府实际控制范围内(参见:台湾问题)。<b>
中华</b>人民共和国是世界上人口最多的国家,人口总数...多数,其余55个民族被统称为
少数民族。<b>中华</b>人民共和国境内的通用语言是汉语普通话,使用的文字是规范汉字
(此即汉语簡化字),少数民族如壮族、维吾尔族、蒙古族、藏族、朝鲜族等拥有自己的文
字。《<b>中华</b>人民共和国宪法

E:\...\paoding-analysis-2.0.0>

0 请登录后投票
   发表时间:2007-08-10  
根据这两天友善的同学们给我的反馈,庖丁暂时收到有这几个方面要求:

1、编译成较低JDK版本的JAR包[目前打的JAR包是JDK6.0的,一部分人应该下载源代码后自己打包成符合自己环境的版本-还好这不是不可解决的]
2、字典的保存和读取强制采用UTF-8编码格式
3、支持运行时修改、添加、删除字典以及字典目录(可配置间隔时间)
4、支持把繁体字的UTF-8编码,等价转化于对应字的简体UTF-8进行,后进行分词(也就不再另外有专门的繁体词典)-是否可行?
5、庖丁不需要去保证能够正确处理非UTF-8编码的文本。对于GBK(GB2312),big5等编码的文本,都应在提交给庖丁之前就已经转为UTF-8编码。

0 请登录后投票
   发表时间:2007-08-10  
我已经把paoding在linux下用起来了,对编码问题根本可以视而不见,一样很好用。
0 请登录后投票
   发表时间:2007-08-10  
我终于发现在“高亮错误”的可笑原因,在JDK1.6环境下,直接命令行来运行那几个例子,高亮就没有问题,但我在Eclipse下无论用JDK1.5还是JDK1.6,编译级别无论用5还是6,高亮都一样是错误的,在Tomcat环境下运行情况同样。以上情况看起来很可笑。
真的很郁闷,具体原因出在哪里,还没有时间考究,只知道有这样的事实。切切.王,你也在Eclipse或服务器环境下,或JDK1.5下试试吧,看看情况怎样。。。
0 请登录后投票
   发表时间:2007-08-11  

在网上找到一个 BIG2GB的类简单的改了下,做了一个包,看 庖丁 需要不,需要的话就加进去!


使用方法

private static String QUERY = "固若金湯";


GB2Big5 pTmp = GB2Big5.getInstance();
String queryString =  pTmp.big52gb(QUERY);

QueryParser parser = new QueryParser(FIELD_NAME, PaodingAnalyzer.queryMode(paoding));
Query query = parser.parse(queryString);



这段时间在搞拼音联想(目前有些BUG),过段时间在加入到庖丁 里面去
0 请登录后投票
   发表时间:2007-08-12  
[表述错误-所以删除]
  • 湯vs傣.zip (400 Bytes)
  • 描述: 这是帖子中的例证HTML文件,共2个HTML文件。
  • 下载次数: 14
0 请登录后投票
   发表时间:2007-08-12  
简繁体方面,庖丁需要有人贡献这些函数:

1、big5->utf-8
2、gbk->utf-8
3、utf-8繁->utf-8简

或者,等价的另一种方式:
4、big5->gbk
5、utf-8->gbk
6、gbk繁->gbk简

第一种方式感官上优于第二种。
0 请登录后投票
   发表时间:2007-08-12  
PaodingMaker 在每次加载的时候都会初始化一次,很好损失内存,在WEB下应用会经常内存溢出,建议修改成单例模式,其他保持不变,修改如下:


public class PaodingMaker {

private static Log log = LogFactory.getLog(PaodingMaker.class);

private static Paoding paoding;

private static PaodingMaker instance = null;

public static synchronized PaodingMaker getInstance() {
if (instance == null)
instance = new PaodingMaker();
return instance;
}

public PaodingMaker(){
make();
}

public static Paoding make() {
if (paoding == null) {
synchronized (PaodingMaker.class) {
paoding = make(Config.properties());
}
}
return paoding;
}

// @SuppressWarnings("unchecked")
public static Paoding make(Properties p) {
try {
Paoding paoding = new Paoding();
// 包装各种字典-将自动寻找,若存在则读取类路径中的paoding-analysis.properties文件
// 若不存在该配置文件,则一切使用默认设置,即字典在文件系统当前路径的dic下(非类路径dic下)
Dictionaries dictionaries = new FileDictionaries(p);
Enumeration names = p.propertyNames();
while (names.hasMoreElements()) {
String name = (String) names.nextElement();
// 以paoding.knife.class开头的被认为是knife对象
if (name.startsWith("paoding.knife.class")) {
String className = p.getProperty(name);
Class clazz = Class.forName(className);
Knife knife = (Knife) clazz.newInstance();
if (knife instanceof DictionariesWare) {
((DictionariesWare) knife)
.setDictionaries(dictionaries);
}
// 把刀交给庖丁
System.out.println("add knike: " + className);
log.info("add knike: " + className);
paoding.addKnife(knife);
}
}
return paoding;
} catch (Exception e) {
throw new IllegalStateException("Wrong paoding properties config.",
e);
}
}
}


修改后效率大大提高:
Searching time: 188 毫秒 (第一次加载)
Searching time: 16 毫秒
Searching time: 0 毫秒
Searching time: 15 毫秒
Searching time: 0 毫秒
Searching time: 0 毫秒
Searching time: 0 毫秒


0 请登录后投票
   发表时间:2007-08-12  
Qieqie 写道
简繁体方面,庖丁需要有人贡献这些函数:

1、big5->utf-8
2、gbk->utf-8
3、utf-8繁->utf-8简

或者,等价的另一种方式:
4、big5->gbk
5、utf-8->gbk
6、gbk繁->gbk简

第一种方式感官上优于第二种。



这个继续解决中,准备搞台电脑安装繁体版 XP
0 请登录后投票
论坛首页 Java企业应用版

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