c++ 中文分词介绍

本文不是专业的介绍中文的知识,只是由于项目上可能需要中文分词,在网上找了一些资料,再次记录一下。

主要参考网站是oschina里面收录的内容:

中科院中文分词 ICTCLAS

这个据说效率挺高,但不是纯开源版本,里面有个文章12年7月1日失效,就是由于授权协议失效,所以要用到这个类库的时候要小心了,当然你可以购买版权。

还有一个重要的问题是官网打不开。http://www.ictclas.org

协议未知

中文分词软件包 LibMMSeg

LibMMSeg 是Coreseek.com为 Sphinx 全文搜索引擎设计的中文分词软件包,其在GPL协议下发行的中文分词法,采用 Chih-Hao Tsai 的MMSEG算法。

LibMMSeg 采用C++开发,同时支持Linux平台和Windows平台,切分速度大约在500K/s(酷睿 2.4G);截至目前版本LibMMSeg没有为速度做过特殊优化,进一步的提升切分速度仍有空间。

官方网站http://www.coreseek.cn/opensource/mmseg/

 

简易中文分词系统 SCWS

这是一套基于词频词典的机械中文分词引擎,采用的是自行采集的词频词典,并辅以一定程度上的专有名称、人名、地名、数字年代等规则集, SCWS 采用纯 C 代码开发,以 Unix-Like OS 为主要平台环境,提供共享函数库,方便植入各种现有软件系统。此外它支持 GBK,UTF-8,BIG5 等汉字编码
效率:准确: 95%, 召回: 91%, 速度: 1.2MB/sec 
协议: BSD 许可协议开源发布
最新版本 2013-1-15: SCWS-1.2.1 Released.

_http://www.xunsearch.com/ 讯搜 用的就是scwc分词系统

中文句法分析器 ctbparser

一个用C++实现的 中文句法分析 工具包,采用的是中文宾州树库标准(Chinese Tree Bank),该句法分析工具采用了标准的图模型算法,即最大生成树算法(projective Maximum Spanning Tree)。
效率:ctbparser分词得到95.3% F1值,词性标注精度94.27%,句法分析精度81%。处理速度(包括分词、词性标注、句法分析)的速度是每秒30句,内存占用为270M。(操作系 统:64位CentOS 5,CPU: Intel(R) Xeon(R) E5405, 2.00GHz)
授权协议: LGPL
最新版本:2012-2-3 0.12版本


中文分词开源版 CRF

CRF中文分词开源版仅仅包含CRF++软件包中分词解码器部分,简化了CRF++复杂代码结构,清除了分词解码器不需要的代码,大大提高了分词解码器的可读性和可懂度。
技术支持:http://langiner.blog.51cto.com/  2010-08-20之后没有更新
授权协议:非开源
最新版本未知


中文分词库 NlpBamboo

bamboo是一个中文语言处理系统。目前包括中文分词和词性标注部分。算法字构词的分词方法CRF++。
效率未知
网站:http://code.google.com/p/nlpbamboo/
授权协议: BSD
最新版本 :2010-10 1.1.1版本,官方说明短期后面不会更新


C语言开源高性能中文分词器 friso

friso中文分词器friso是使用c语言开发的一个开源中文分词器,使用流行的mmseg算法实现。
1。目前最高版本:friso 0.1,只支持UTF-8编码。【源码无需修改就能在各种平台下编译使用,加载完20万的词条,内存占用稳定为14M。】。
2。mmseg四种过滤算法,分词准确率达到了98.41%。
3。支持自定义词库。在dict文件夹下,可以随便添加/删除/更改词库和词库词条,并且对词库进行了分类。
4。词库使用了friso的Java版本jcseg的简化词库。
5。支持中英混合词的识别。例如:c语言,IC卡。
7。很好的英文支持,电子邮件,网址,小数,分数,百分数。
8。支持阿拉伯数字基本单字单位的识别,例如2012年,5吨,120斤。
9。自动英文圆角/半角,大写/小写转换。
二。分词速度


测试环境:2.8GHZ/2G/Ubuntu
简单模式:3.7M/秒
复杂模式:1.8M/秒
授权协议: LGPL
最新版本:2012-12-28日 


综合来看
简易中文分词系统 SCWS和C语言开源高性能中文分词器 friso是在最近更新的,应该最近会有支持。


仅仅是个人理解。
下面是网上的一个人的评论:
但市场上提供免费甚至开源的分词引擎不多,中科院研发的ictclas30分词精确度和分词速度都非常不错,而且还有词性标注和自定义添加词的功能,可惜不开源。另外比较受欢迎的还有libmmseg和SCWS,因此都是开源的,不过经测试libmmseg的分词精度似乎不高,而SCWS由于使用了大量的递归,在生成词库的时候经常导致栈溢出(我是用vc2005编译的),需要自己将递归修改为循环,从演示的情况来看,SCWS的分词精度来算可以。


附录:编码转换
最新版的iconv(目前是libiconv-1.14.tar.gz)已经不再提供Visual C++的编译文件,最后一个支持VC编译的iconv版本是libiconv-1.11.1.tar.gz。虽然不是最新版,但是在Windows下编译,只好将就了,功能应该差不了多少。
下载libiconv-1.11.1.tar.gz并解压,打开命令提示行,进入libiconv-1.11.1目录,输入命令:
nmake -f Makefile.msvc NO_NLS=1 MFLAGS=-MD

nmake -f Makefile.msvc NO_NLS=1 MFLAGS=-MD PREFIX=C:\iconv install


利用Xapian构建自己的搜索引擎

http://blog.csdn.net/visualcatsharp/article/details/4176021

这个是国外开源的引擎。

Xapian 和 Omega 是独立的两个组件,旨在相互协作来提供索引和搜索功能。Xapian 组件提供了核心的数据库功能(存储信息)以及搜索和检索系统来查找单词和单词组合。

Omega 组件提供了一些工具来将不同格式的信息转化并解析成 Xapian 需要的原始格式以便它可以被索引。Omega 使用了多种工具,比如 pdftotext,然后再提交转化并过滤了的基于文本的信息,以便文档的索引和结构可以被标识并存储在 Xapian 数据库。Omega 是 Xapian 下载的一部分。

没有看到他的分词用的什么,自己系统,词库在哪里?

CoreSeek全文搜索 4.1

http://www.coreseek.cn/products/ft_feature/

用的就是:中文分词软件包 LibMMSeg,基于 mmseg

你可能感兴趣的:(c++ 中文分词介绍)