`
liujunsong
  • 浏览: 75431 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

中文分词ictclas的Java改造版本

阅读更多
前段时间工作中需要用到中文分词的软件,于是上网找了找。
发现中科院提供的ictclas工具是比较不错的。

可惜没有官方正式的java版本,有一个网友sinbo自己改写了一个java版本。

但在使用过程中发现问题很多。其中最大的问题,就是数据结构不够合适,统统采用arraylist来存储,结果造成了可悲的内存溢出问题。

我觉得这是对原来代码的理解不够造成的。

于是自己动手,从原来的C++版本,基本上照搬了一个java版本出来。

初步测试是通过的。先放上来给大家看看,提提意见。

算法和原来的C++程序是完全一样的。

执行com.icutword.result.CResultTest这个类就可以了,传入一个gb2312格式的文本文件。

以后会考虑持续进行改进修改。
分享到:
评论
12 楼 cs_guanhu 2013-07-02  
下载完毕了您的代码,看了一下,您非常忠实于源C++的代码。google中也有段ictclas的使用代码,使用HMM模型完成的,加载在内存中的模型也很有意思,向您推荐一下。
11 楼 chimei2345 2012-07-02  
拜读了一下代码,写的不错,希望能把未实现的功能完善一下,我在看ictclas4j,发现里面的功能有很大缺陷,自己能力有限,改的有点吃力。希望楼主尽快放出完善的代码
10 楼 liujunsong 2012-06-26  
qq:2865575810,有对分词感兴趣的,可以加上讨论讨论。
9 楼 ansjsun 2012-06-26  
liujunsong 写道
ictclas的人名识别,基本上是按照这个原理来做的。下面的只说中文姓名。
首先,将可疑的人名罗列出来,然后计算在这个可疑人名以后的那个词,看那个词是否已经识别出来了,如果识别出来了,就查找这个词的词性是啥,然后判断一下如果这个可疑词是人名的话,后面跟上这样一个词性的可能性有多大,算一个值出来。
然后将这个值和一个统计值进行比较,超过的,就认为前面是一个人名,达不到的,就抛弃掉。
这个算法的缺陷,是将句子本身独立来进行考虑,没有能够将上下文联系起来进行分析,因此还是存在不足的。

你qq多少啊 ...加个好友交流下吧
8 楼 liujunsong 2012-06-26  
ictclas的人名识别,基本上是按照这个原理来做的。下面的只说中文姓名。
首先,将可疑的人名罗列出来,然后计算在这个可疑人名以后的那个词,看那个词是否已经识别出来了,如果识别出来了,就查找这个词的词性是啥,然后判断一下如果这个可疑词是人名的话,后面跟上这样一个词性的可能性有多大,算一个值出来。
然后将这个值和一个统计值进行比较,超过的,就认为前面是一个人名,达不到的,就抛弃掉。
这个算法的缺陷,是将句子本身独立来进行考虑,没有能够将上下文联系起来进行分析,因此还是存在不足的。
7 楼 ansjsun 2012-06-26  
liujunsong 写道
是的,人名识别只是用了一个工具类,通过调用额外的一个ctx文件进行猜测来做。这个我觉得一般情况不用下太多功夫,意义似乎不大。

人名识别一直是个难点的..人名机构名称的识别..一般都是按照概率做的..但是ict的人名识别的却很厉害...我目前写分词..就差人名识别了..郁闷
6 楼 liujunsong 2012-06-25  
是的,人名识别只是用了一个工具类,通过调用额外的一个ctx文件进行猜测来做。这个我觉得一般情况不用下太多功夫,意义似乎不大。
5 楼 ansjsun 2012-06-25  
可以把提取出来的词典放一份么??对了人名识别只是用了一个工具类是吧
4 楼 liujunsong 2012-06-25  
他的词典文件格式基本上是公开的,通过阅读源码是可以读懂的,没有加密。
3 楼 ansjsun 2012-06-21  
不好意思我弄错了呵呵..你好楼主我最近也在写分词..看了下你的源码..把itc翻译了一遍..而且还能运行..是在是了不起啊呵呵...我记得ict的词典是加密的...你是否有破解啊 ?
2 楼 ansjsun 2012-06-21  
错了是黑白棋
1 楼 ansjsun 2012-06-21  
你发了个中国象棋上来........

相关推荐

Global site tag (gtag.js) - Google Analytics