`
cjp1989
  • 浏览: 161275 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

ictcals中文分词添加用户词典功能说明

阅读更多

对于上篇博客的标题,其实内容也就是添加用户词典。我使用的是java版本调用dll。在这里重写一篇博客是为了说明一下最近在使用过程中发现的问题,以及说下自己的感想!如果不懂如何在java版本中添加新词功能请看:可以写批量加入新词方法。

中科院分词系统 ICTCLAS2013 添加新词功能

 

  1.网上下载的版本,基本分词功能很好,分词速度很快,在未人工添加词典的情况下,处理30G的数据,无错误情况,基本一天搞定。

 

 2.对于短文本,用于微博内容分析,很多关键词会出现分词不准,如:"校长开房", “校车事故”等短文本的词(开房,校车),本应该是在一起的。

 

3.关于添加用户词典功能,NLPIR_AddUserWord(byte[]),再使用NLPIR_SaveTheUsrDic(),永久保存用户词典。特别要说明的就是这个添加的词

 

 4. 由于不晓得哪些词可以添加,我们就拿百科的词条来进行添加。这里使用的互动百科词条,说明下,互动百科词条太不规范了!如果是硬性添加的话,分词系统肯定出问题我试过加入:20万个词,处理小量的微博文本数据基本没问题,但是对于GB以上的,分词到了800M左右就出问题。后来为了测试能够添加多少,一次性加入了百万级的词作为用户词典,处理微博依然很好,但是对于大文本数据,就直接错误。

 

 5.为了找出原因,就把我的想法说给同事听,想一起讨论下,我当然是努力发挥我的想象力去极力的猜测原因,而有的同事,大批特批了我的想法说不懂原理就不要来妄加猜测!他说出了一句:程序员最忌讳的就是猜问题原因,80%是越猜越错,越错越猜...他语气盎然的样子,仿佛这就是他的真理!我其实很想争辩的,但想着我是想把解决问题的,就是想跟同事讨论下,要是因为同事的这几句话,来个辩论赛了,这不更加糟糕了!其实心里很想说:你看哥德巴赫猜想,很多伟大的理论,在未知的情况下,不都是前辈们展开了无限次的猜想,最终找到解决方案啊!算了,这句话,也就只能在博客里面说说了。

 

6.为了证实我的猜想,用户词典添加,哪些词不能使用,进行了大量的实验,最终得到的初步论证是:

      (a)含有标点符号的词不要加入到用户词典,比如《时间简史》,"我的" ,杰克·玛丽,等等词语中间夹着着标点。

      (b)中文中有含有英文字母,阿拉伯数字的词,比如  F-16战斗机,宝马740,β-胡萝卜素之类。

       (c)字数太长的不要加入进去,本身就可以拆分成多个,比如:湖南省重点文物保护单位,英国经资产阶级革命  ,这类的词。

 

实际中去除了这些词后,我目前加的词长在2-5个以内,且满足上面的3个条件。还有一个关于:含有中文数字的:一,二,三,四,词,如;一心一意,第三世界,等词,目前我没有去除。而且上面或许又错误的地方,欢迎板砖啊!

 

 7.由于这些词来源于:互动百科,所以出现了很多稀奇古怪的词,造成了在添加用户词典后,无法使用分词系统。所以就产生了我很多的猜测,于是就有了上面我想到的这些规则。读者看了,如果能给大家帮助,那就非常好!对于如何匹配所有标点符号,下次写一篇关于:java正则匹配的感想,里面提到如何匹配。

  

 8. 最后说几句:

 

       (1)程序员更要有猜想精神,虽说80%是错误的,还有20%奇迹会发生,要敢于实践想法

 

       (2)遇到问题如果是跟同事谈论,出现了强烈的反对声,出现争执时,你要立马收回情绪,不去积极辩论,为了营造一个好的工作氛围,你要想你的初衷跟同事讨论是去解决问题的!

 

       (3)分享是学习进步的一个途径,乐于分享,欢迎别人的板砖。

       

 

 

  

 

 

3
2
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics