`
wbj0110
  • 浏览: 1602751 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

PHP中文高速分词的原理和源码

阅读更多

一、正向最大匹配算法和反向最大匹配算法的缺点

正向最大匹配算法:从左到右将待分词文本中的几个连续字符与词表匹配,如果匹配上,则切分出一个词。但这里有一个问题:要做到最大匹配,并不是第一次匹配到就可以切分的。举个例子:中华人民共和国今天成立了。从左到右扫描,要分别检索:中,中华,中华人,中华人民,中华人民共,中华人民共和,中华人民共和国今,今,今天,今天成,成,成立,成立了,了。14 次检索词库,最后的切分结果:中华人民共和国/今天/成立了。所以,当遇到长词时,要反复检索多次数据库,效率非常差。还有,一个更严重的问题是:词的最大长度是有限制的,为了兼顾算法的效率,不可能将最大词长定的非常大,这就会导致更长的词汇不能正确切分。

反之,反向最大匹配算法,则会将长词分开,造成错误切分。比如,上面的待切分文本,从右向左扫描,要分别检索:了,立了,立,成立,天成立,天,今天,今天国,国,和国,共和国,民共和国,民,人民,华人民,华,中华。17 词查询数据库,最后切分结果:中华/人民/共和国/今天/成立/了。将中华人民共和国切分成了3 个词。

二、克服最大匹配算法的缺点的算法

为了克服最大匹配算法的低效和不能切分长词,将所有的能组成词汇的汉字,建立索引,作为词的首字母。然后将每个汉字开头的词汇,分成一类,按词长排序。词库结构如下:

分词时,由汉字找到该字开头的词组(长度3000左右的线性检索),然后按由长到短5,4,3,2的顺序检索词库,和待分词语句对比(线性),如果有匹配,则切分为一个词,然后继续匹配下一个词。通过这种方式,大大提高了检索词库效率,解决了任意长词汇匹配问题。

在PHP算法的实现上,为了加快在线匹配速度,上面的词库结构,用PHP的联想数组的形式实现,全部加载到内存。为了灵活增删词库,做了个字符串处理程序,自动生成PHP联想数组结构的词库。详细实现算法,见PHP源码。

PHP分词源码下载:http://www.box.net/shared/gryspzppsb

分享到:
评论

相关推荐

    php分词 thinkphp分词源码

    开发者可以通过阅读源码了解其工作原理,学习如何将其他分词库与ThinkPHP结合,也可以根据自己的需求对其进行定制和优化。 总的来说,PHP分词和ThinkPHP分词源码的结合,为开发者提供了强大的文本处理能力,便于...

    盘古分词(源码+demo).net源码

    总的来说,盘古分词的源码和Demo为.NET开发者提供了一个强大的中文分词解决方案,不仅可以直接应用在项目中,也可以作为学习自然语言处理技术的宝贵资源。通过理解和实践,开发者可以提升自己在文本处理领域的技能,...

    分词软件和源码

    通过对这些分词程序和源码的学习,我们可以深入理解分词原理,提升编程技能,并可能为自己的项目开发出更加高效的分词解决方案。同时,这也是一种跨语言编程能力的锻炼,有助于我们更好地理解不同编程语言在处理特定...

    易语言源码易语言应用中文分词源码.rar

    易语言源码易语言应用中文分词源码.rar 易语言源码易语言应用中文分词源码.rar 易语言源码易语言应用中文分词源码.rar 易语言源码易语言应用中文分词源码.rar 易语言源码易语言应用中文分词源码.rar 易语言源码...

    C++编写中文分词最大匹配的分词源码

    本篇文章将深入探讨如何使用C++实现中文分词的“最大匹配”算法,并通过源码分析来帮助学习者理解其工作原理。 “最大匹配”(Maximal Matching,简称MM)是一种常见的中文分词算法,它的核心思想是从待分词的句子...

    中文分词原理及源码剖析.pdf

    中文分词的基本原理包括机械切分、模型切分、以及二者的结合。机械切分主要依赖于预定义的词典进行分词,而模型切分则利用语言模型来评估切分结果的合理性,使用隐马尔科夫模型(HMM)、条件随机场(CRF)或深度学习...

    最新逆向最大匹配分词算法 盘古分词 分词算法 中文分词 源码

    包含了各种与分词相关的源码,例如"zt_逆向最大匹配分词算法"可能是实现逆向最大匹配算法的具体代码,"秒盘古分词"可能是指快速版本的盘古分词程序,"中文分词"和"英文分词"源码分别针对中文和英文的分词处理,"最新...

    IK中文分词器原理

    通过对IK分词器原理的深入了解,我们可以看到其在处理中文文本方面具有较高的灵活性和可扩展性。通过精细的字符类型分类、高效的分词流程以及合理的歧义处理策略,IK分词器能够在多种应用场景中发挥重要作用。对于...

    php智能分词源码

    在IT行业中,中文分词是自然语言处理(NLP)中的关键步骤,尤其在PHP编程环境中,对于构建智能助手和机器人智能回复系统至关重要。本文将深入探讨PHP智能分词源码的相关知识点,以及如何实现这一功能。 首先,我们...

    中文分词原理.pdf

    ### 中文分词原理及其在搜索引擎中的应用 #### 一、搜索引擎工作原理 搜索引擎的工作流程主要包括三个阶段:爬行抓取网页、首次处理以及排名。 1. **爬行抓取网页**:搜索引擎通过释放大量的爬虫程序(俗称“蜘蛛...

    ansj中文分词器源码

    **ansj中文分词器源码详解** **一、ansj分词器概述** ansj中文分词器是由ansj工作室开发的一款高效、精准的中文处理工具,它以其快速的分词速度和较高的准确率在业界获得了广泛的认可。在Mac Air这样的轻薄型设备...

    多个版本ik分词器源码

    它的主要功能是将连续的汉字序列切割成具有语义意义的词汇,这在中文文本的索引和检索中起到关键作用。IK支持自定义词典,可以方便地扩展或修改分词规则,以适应不同的应用场景。 接下来,我们逐一分析提供的各个...

    IK分词器源码

    总之,IK分词器源码的学习不仅能帮助我们理解中文分词的工作原理,还可以为我们提供一个强大的工具,以满足不同业务场景下的分词需求。对于Java开发者来说,熟悉并掌握IK分词器的使用和定制,无疑会提升我们在文本...

    Solr5.5搜索引擎之分词原理说明.docx

    中文分词是指将中文汉字序列切分成有意义的词的过程。中文分词是自然语言处理技术中的一部分,许多西文处理方法对中文不能直接采用,因为中文必须有分词这道工序。中文分词是其他中文信息处理的基础,搜索引擎只是...

    solr5的ik中文分词器源码

    源码中的测试用例可以帮助理解分词器的工作原理,并在修改源码后进行验证。开发者可以学习如何设置测试数据,模拟Solr环境,进行单元测试和集成测试。 通过研究"solr5的ik中文分词器源码",开发者不仅可以了解IK...

    C#中文分词源码

    "C#中文分词源码"是一个专门针对C#编程语言设计的中文分词系统,它的特点是具有良好的准确率和运行速度,适用于各种实时性要求较高的应用场景。 1. **C#编程语言**:C#是一种由微软开发的面向对象的编程语言,它...

    C#中文分词技术源码

    总的来说,“C#中文分词技术源码”是一个学习和实践C# NLP技术的好材料,不仅可以提升对C#编程的理解,也能增强对中文分词原理及其实现方法的认识。对于希望在自然语言处理领域有所建树的开发者来说,这是一个不容...

    基于PHP的多讯php中文分词扩展源码.zip

    【标题】"基于PHP的多讯php中文分词扩展源码.zip" 提供的是一个用于PHP的中文分词扩展的源代码。这个扩展是专为处理和分析中文文本而设计的,它允许开发者在PHP环境中对中文文本进行高效、精准的分词操作。 在PHP...

    Friso高性能中文分词器框架源码.rar

    Friso高性能中文分词器框架源码,包含开发文档。 Friso 是使用 c 语言开发的高性能中文分词器,使用流行的mmseg算法实现。完全基于模块化设计和实现,可以很方便的植入其他程序中, 例如:MySQL,PHP,并且提供了...

Global site tag (gtag.js) - Google Analytics