一、正向最大匹配算法和反向最大匹配算法的缺点
正向最大匹配算法:从左到右将待分词文本中的几个连续字符与词表匹配,如果匹配上,则切分出一个词。但这里有一个问题:要做到最大匹配,并不是第一次匹配到就可以切分的。举个例子:中华人民共和国今天成立了。从左到右扫描,要分别检索:中,中华,中华人,中华人民,中华人民共,中华人民共和,中华人民共和国今,今,今天,今天成,成,成立,成立了,了。14 次检索词库,最后的切分结果:中华人民共和国/今天/成立了。所以,当遇到长词时,要反复检索多次数据库,效率非常差。还有,一个更严重的问题是:词的最大长度是有限制的,为了兼顾算法的效率,不可能将最大词长定的非常大,这就会导致更长的词汇不能正确切分。
反之,反向最大匹配算法,则会将长词分开,造成错误切分。比如,上面的待切分文本,从右向左扫描,要分别检索:了,立了,立,成立,天成立,天,今天,今天国,国,和国,共和国,民共和国,民,人民,华人民,华,中华。17 词查询数据库,最后切分结果:中华/人民/共和国/今天/成立/了。将中华人民共和国切分成了3 个词。
二、克服最大匹配算法的缺点的算法
为了克服最大匹配算法的低效和不能切分长词,将所有的能组成词汇的汉字,建立索引,作为词的首字母。然后将每个汉字开头的词汇,分成一类,按词长排序。词库结构如下:
分词时,由汉字找到该字开头的词组(长度3000左右的线性检索),然后按由长到短5,4,3,2的顺序检索词库,和待分词语句对比(线性),如果有匹配,则切分为一个词,然后继续匹配下一个词。通过这种方式,大大提高了检索词库效率,解决了任意长词汇匹配问题。
在PHP算法的实现上,为了加快在线匹配速度,上面的词库结构,用PHP的联想数组的形式实现,全部加载到内存。为了灵活增删词库,做了个字符串处理程序,自动生成PHP联想数组结构的词库。详细实现算法,见PHP源码。
PHP分词源码下载:http://www.box.net/shared/gryspzppsb
相关推荐
中文分词原理及源码剖析
易语言源码易语言应用中文分词源码.rar 易语言源码易语言应用中文分词源码.rar 易语言源码易语言应用中文分词源码.rar 易语言源码易语言应用中文分词源码.rar 易语言源码易语言应用中文分词源码.rar 易语言源码...
中文分词原理,搜索引擎基本原理,中文分词的几种方法
php分词 包含原生 以及thikphp的使用,搜索简易分词小狐狸
C++编写的中文最大匹配分词源码,对学习分词的朋友有很大的帮助啊哦!
最新逆向最大匹配分词算法 盘古分词 分词算法 中文分词 源码
IK分词器源码,可以研究IK分词器原理,也可以修改源码达到自己的业务需求。
多个版本ik分词器源码
详细讲解IK分词器原理
支持中文的分词源码,效果还不错,准确率、速度都合适
Friso高性能中文分词器框架源码,包含开发文档。 Friso 是使用 c 语言开发的高性能中文分词器,使用流行的mmseg算法实现。完全基于模块化设计和实现,可以很方便的植入其他程序中, 例如:MySQL,PHP,并且提供了...
自己写的几个分词程序,还有源码,还有之前网上找到的几个分词程序,有c c# python java
百度中文分词原理,搜索引擎中文分词方法,SEO必看
很好用的自动分词。。。。。。里面有源码和demo,很适于你的学习
分词速度达到每秒钟大约200万字左右(mac air下测试),准确率能达到96%以上目前实现了.中文分词. 中文姓名识别 . 用户自定义词典,关键字提取,自动摘要,关键字标记等功能
Solr5.5搜索引擎之分词原理说明.docx 介绍了Solr5.5内部使用的分词原理,有助于开发者自定义自己的分词器时掌握分词的基础知识。
C#中文分词技术源码
solr5的ik中文分词器源码,解压后需要自己打包成jar包
PHP简易中文分词,免组件分词 $ca = new cls_analysis(); //把一段短文本进行拆分 $str = "把一段短文本进行拆分"; $ca->SetSource( $str, 'utf-8', 'utf-8'); $ca->StartAnalysis(); $okstr = $ca->...