展会信息港展会大全

中文分词的一些研究记录
来源:互联网   发布日期:2011-09-28 18:51:35   浏览:16052次  

导读:这两天想了解一下中文分词的一些技术,因此就研究了一把,也就是了解了一些皮毛,记录下来,首先申明我是外行,请勿用专业标准来要去我。中文分词,主要是三个流...

    这两天想了解一下中文分词的一些技术,因此就研究了一把,也就是了解了一些皮毛,记录下来,首先申明我是外行,请勿用专业标准来要去我。

    中文分词,主要是三个流派,一是词典派,一是统计派,一是规则派。比如“我爱北京天安门”,词典派就是去查词典,词典中中有“我”,“爱”,“北京”和“天安门”,就分出来了,简单吧。词典派的算法一般是最大匹配算法,比如“毛泽东北京华烟云”,正向最大匹配就是“毛泽东 北京 华烟云”,逆向最大匹配是“毛泽 东北 京华烟云”。还可以双向“毛泽东 北 京华烟云”。还有其他算法。统计派呢,就复杂点了,中心思想就是“由字组词”,研究字组词的概率,比如“我”,单独出现的概率是“50%”,“我爱”组合出现的概率是“10%”,那么“我爱”就不是一个词。比如“北京”,“北京”在很多文章中老放在一起,那么就应该在一起,是一个地名。一个是规则派,规则派我没怎么看,好像单独出现效果不好,一般大家都不用它。

    说起优劣,词典派算法简单,无非是查查查,性能也好,普通电脑,一秒几百K甚至上M都可能。词典派的一个主要问题是,词典中没有咋办,没有就没法分啊,而且互联网上大家创造力惊人,新词层出不穷。而统计派,在识别新词方面,尤其是人名、地名、机构、日期、数量词方面特别管用,你词典中能把所有人名都放进去么,而且,词典大了,有歧义啊。统计派,和RPG游戏类似,得满满来培养,就是训练,而且分词的时候性能也不大好。

    分词算法,网上也挺多,如果兼顾性能、准确性,还是c++写的比较好。

中科院的ICTCLAS分词。

这是官方的源码下载站点

http://ictclas.org/Down_OpenSrc.asp

有C#版本,是吕振宇做做的,分析文章列表如下:

http://www.cnblogs.com/zhenyulu/category/85598.html

做.NET的朋友可以订阅吕老师的博客,在.NET方面很有研究。

JAVA版本的,是张新波做的,下面是分析文章:

http://blog.csdn.net/sinboy/category/207165.aspx

把文章看完,把代码看完,你就是专家了。ICTCLAS的分词,只支持GBK(GB2312)字符集,所以如果是UTF-8的,您还得自己转一下,本来我想改写成支持UTF-8的,没时间搞了。

下面是分完的结果:

---------------------------------------------------

视频/n  :/w  证监会/j  发布/v  创业/vn  板/n  IPO/nx  办法/n   5/m  月/n  1/m  日/q  起/f  实施/v    媒体/n  来源/n  :/w  第一/m  财经/n  《/w  早市/n  导航/vn  》/w  新华/nz  网/n  北京/ns  3/m  月/n  31/m  日/q  电/n  (/w  记者/n  赵/nr  晓辉/nr  、/w  陶/nr  俊洁/nr  )/w  中国证监会/n  31/m  日/d  发布/v  《/w  首/d  次/a  公开/a  发行/v  股票/n  并/c  在/c  创业/nz  板/a  上/f  市/n  管理/v  暂行/b  办法/n  》/w  ,/w  办法/n  自/a  5/m  月/n  1/m  日/d  起/f  实施/u  。/w  这/r  意味着/v  筹备/v  十/m  余/m  年/a  之/a  久/a  的/b  创业/nz  板/a  有望/v  于/d  5/m  月/n  1/m  日/d  起/f  正式/a  开启/v  。/w  办法/n  共/d  分/v  为/p  6/m  章/q  58/m  条/q  ,/w  对/p  拟/v  到/v  创业/v  板/ng  上市/v  企业/n  的/u  发行/vn  条件/n  、/w  发行/v  程序/n  、/w  信息/n  披露/vn  、/w  监督/vn  管理/vn  和/c  法律/n  责任/n  等/u  方面/n  进行/v  了/u  详细/a  规定/n  。/w  根据/p  规定/n  ,/w  到/v  创业/v  板/ng  上/f  市/n  的/u  企业/n  应当/v  是/v  依法/d  设立/v  且/c  持续/vd  经营/v  三/m  年/q  以上/f  的/u  股份/n  有限公司/n  ,/w  最近/t  两/m  年/q  连续/a  盈利/n  ,/w  最近/t  两/m  年/q  净利润/n  累计/v  不/d  少于/v  1000/m  万/m  元/q  ,/w  且/c  持续/vd  增长/v  ;/w  或者/c  最近/t  一/m  年/q  盈利/n  ,/w  且/c  净利润/n  不/d  少于/v  500/m  万/m  元/q  ,/w  最近/t  一/m  年/q  营业/vn  收入/n  不/d  少于/v  5000/m  万/m  元/q  ,/w  最近/t  两/m  年/q  营业/vn  收入/n  增长率/n  均/d  不/d  低于/v  30%/m  。/w  企业/n  发行/v  后/f  的/u  股本/n  总额/n  不/d  少于/v  3000/m  万/m  元/q  。/w

ICTCLAS:235.109000 ms

---------------------------------------------------

写完了,又发现一个资料挺全的博客,刀剑笑的:

http://blog.csdn.net/jyz3051/category/356808.aspx?PageNumber=1

还有一个分词是,李沫南写的,libmmseg。

李沫南这个家伙,如果我没记错的话,我和他共事过,想不到研究分词,还能遇到故人。

我简单介绍一下:sphinx。sphinx是俄罗斯人写的开源的针对数据库的一款索引产品。如果想做中小规模的站内搜索,用它就没错了。特色是比Mysql的全文索引快(废话),另外纯天然的支持数据库(可以内嵌到Mysql中做为一个引擎)。想研究的朋友可以看这里:http://www.sphinxsearch.com/ 。再插一句话,本来对于sphinx我是写过一篇教程的,但是csdn服务器抽风,所以就没了,我也不写了。

还是回到分词吧,libmmseg分词方法可以看下面的博客文章,此博客也是李沫南的博客。

http://nzinfo.spaces.live.com/Blog/cns!67694E0B61E3E8D2!344.entry

下面是分完的结果

---------------------------------------------------

$ mmseg -d /home/lhb/workspace/mmseg/dict/ /home/lhb/soft/text/01.txt

/x 视频/x :/x 证监会/x 发布/x 创业/x 板/x IPO/x 办法/x  /x 5/x 月/x 1/x 日/x 起/x 实施/x  /x  /x 媒体/x 来源/x :/x 第一/x 财经/x 《/x 早市/x 导航/x 》/x
 /x  /x 新华/x 网/x 北京/x 3/x 月/x 31/x 日/x 电/x (/x 记者/x 赵/x 晓/x 辉/x 、/x 陶/x 俊/x 洁/x )/x 中国/x 证监会/x 31/x 日/x 发布/x 《/x 首次/x 公开/x 发行/x 股票/x 并/x 在/x 创业/x 板/x 上市/x 管理/x 暂行/x 办法/x 》/x ,/x 办法/x 自/x 5/x 月/x 1/x 日/x 起/x 实施/x 。/x 这/x 意味着/x 筹备/x 十/x 余年/x 之/x 久/x 的/x 创业/x 板/x 有望/x 于/x 5/x 月/x 1/x 日/x 起/x 正式/x 开启/x 。/x
 /x  /x 办/x 法共/x 分为/x 6/x 章/x 58/x 条/x ,/x 对/x 拟/x 到/x 创业/x 板/x 上市/x 企业/x 的/x 发行/x 条件/x 、/x 发行/x 程序/x 、/x 信息/x 披露/x 、/x 监督/x 管理/x 和/x 法律/x 责任/x 等/x 方面/x 进行/x 了/x 详细/x 规定/x 。/x
 /x  /x 根据/x 规定/x ,/x 到/x 创业/x 板/x 上市/x 的/x 企业/x 应当/x 是/x 依法/x 设立/x 且/x 持续/x 经营/x 三/x 年/x 以上/x 的/x 股份/x 有限公司/x ,/x 最近/x 两/x 年/x 连续/x 盈利/x ,/x 最近/x 两/x 年/x 净利润/x 累计/x 不/x 少于/x 1000/x 万元/x ,/x 且/x 持续/x 增长/x ;/x 或者/x 最近/x 一/x 年/x 盈利/x ,/x 且/x 净利润/x 不/x 少于/x 500/x 万元/x ,/x 最近/x 一/x 年/x 营业/x 收入/x 不/x 少于/x 5000/x 万元/x ,/x 最近/x 两/x 年/x 营业/x 收入/x 增长率/x 均/x 不/x 低于/x 30/x %/x 。/x 企业/x 发行/x 后/x 的/x 股本/x 总额/x 不/x 少于/x 3000/x 万元/x 。/x
Word Splite took: 22 ms.
---------------------------------------------------

ICTCLAS和libmmseg的优劣,前者效果要好一些,后者速度快一些。前者效果好的原因是对于人名、地名有一些规则在里头。后者呢,这些好像没有。速度方面,后者比前者快一个数量级吧。另,前者的UTF-8支持需要额外处理。

对于统计派,也有一些资料可以参考。

赵海的主页:

http://bcmi.sjtu.edu.cn/~zhaohai/index-cn.html

赵海的博客

现在统计派都比较流行CRF(Conditon Random Field)条件随机场/域的方法,看字都认识,合起来就不知道啥意思了。

据说HMM(Hidden Markov Model 马尔可夫模型),MEMM(最大熵马尔科夫模型)过时了。关于这几个概念,可以参考:http://wshxzt.ycool.com/post.1769559.html。

工具包和使用上,下面链接:

基于CRF的中文分词

当然还有一些,上google搜CRF就可以了。

一款好的分词,估计需要用到综合的办法,词典是必须的,新词识别也是必须的,歧义消除也是必须的,因此就要博采众长,才能再性能、准确率、召回率上找到平衡。

写完这篇文章,发现了一帮哥们基于CRF++做的分词开源项目,bamboo,哈哈

http://groups.google.com/group/nlpbamboo

http://code.google.com/p/nlpbamboo/

有兴趣可以研究一下哦,那里聚了不少人。

1)下载bamboo,编译安装后,

2)下载已经训练过的模型

http://code.google.com/p/nlpbamboo/downloads/list

下载index.tar.bz2,解压到/opt/bamboo/index下

你要是想自己跑,可以下载

3)$cd /opt/bamboo/bin/

赞助本站

人工智能实验室

相关热词: 中文分 一些 研究 记录

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港