发新话题
打印

php中文分词技术分享与求教????

php中文分词技术分享与求教????

最近在网上发现一种非常实用的PHP中文分词技术,分词正确率基本上在90%以上,但本人PHP功底实太溥,看不懂其是怎么配置和使用的,但从其回复中得知应该有不少人己经在实用这个技术,此技术好像是开源的..由hightman达人编写现己发布第四版了..以下是演示地址:http://www.hightman.cn/demo/scws/v48.php
大家可以在线测试分词效果..以下是源码资源地址:http://www.hightman.cn/index.php?scws
我不大能搞懂,所以还请各位同仁相帮,,我用的UTF-8字符集,如果有兴趣的同志研究成功不访向小弟共享一下...

TOP

什么是中文分词?

  众所周知,英文是以词为单位的,词和词之间是靠空格隔开,而中文是以字为单位,句子中所有的字连起来才能描述一个意思。例如,英文句子I am a student,用中文则为:“我是一个学生”。计算机可以很简单通过空格知道student是一个单词,但是不能很容易明白“学”、“生”两个字合起来才表示一个词。把中文的汉字序列切分成有意义的词,就是中文分词,有些人也称为切词。我是一个学生,分词的结果是:我是 一个 学生。
  目前主流的中文分词算法有:

   1、 基于字符串匹配的分词方法

  这种方法又叫做机械分词方法,它是按照一定的策略将待分析的汉字串与一个“充分大的”机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功(识别出一个词)。按照扫描方向的不同,串匹配分词方法可以分为正向匹配和逆向匹配;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最小(最短)匹配;按照是否与词性标注过程相结合,又可以分为单纯分词方法和分词与标注相结合的一体化方法。常用的几种机械分词方法如下:
  1)正向最大匹配法(由左到右的方向);
  2)逆向最大匹配法(由右到左的方向);
  3)最少切分(使每一句中切出的词数最小)。
  还可以将上述各种方法相互组合,例如,可以将正向最大匹配方法和逆向最大匹配方法结合起来构成双向匹配法。由于汉语单字成词的特点,正向最小匹配和逆向最小匹配一般很少使用。一般说来,逆向匹配的切分精度略高于正向匹配,遇到的歧义现象也较少。统计结果表明,单纯使用正向最大匹配的错误率为1/169,单纯使用逆向最大匹配的错误率为1/245。但这种精度还远远不能满足实际的需要。实际使用的分词系统,都是把机械分词作为一种初分手段,还需通过利用各种其它的语言信息来进一步提高切分的准确率。
  一种方法是改进扫描方式,称为特征扫描或标志切分,优先在待分析字符串中识别和切分出一些带有明显特征的词,以这些词作为断点,可将原字符串分为较小的串再来进机械分词,从而减少匹配的错误率。另一种方法是将分词和词类标注结合起来,利用丰富的词类信息对分词决策提供帮助,并且在标注过程中又反过来对分词结果进行检验、调整,从而极大地提高切分的准确率。
  对于机械分词方法,可以建立一个一般的模型,在这方面有专业的学术论文,这里不做详细论述。
  
2、 基于理解的分词方法

  这种分词方法是通过让计算机模拟人对句子的理解,达到识别词的效果。其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象。它通常包括三个部分:分词子系统、句法语义子系统、总控部分。在总控部分的协调下,分词子系统可以获得有关词、句子等的句法和语义信息来对分词歧义进行判断,即它模拟了人对句子的理解过程。这种分词方法需要使用大量的语言知识和信息。由于汉语语言知识的笼统、复杂性,难以将各种语言信息组织成机器可直接读取的形式,因此目前基于理解的分词系统还处在试验阶段。
  
3、 基于统计的分词方法

  从形式上看,词是稳定的字的组合,因此在上下文中,相邻的字同时出现的次数越多,就越有可能构成一个词。因此字与字相邻共现的频率或概率能够较好的反映成词的可信度。可以对语料中相邻共现的各个字的组合的频度进行统计,计算它们的互现信息。定义两个字的互现信息,计算两个汉字X、Y的相邻共现概率。互现信息体现了汉字之间结合关系的紧密程度。当紧密程度高于某一个阈值时,便可认为此字组可能构成了一个词。这种方法只需对语料中的字组频度进行统计,不需要切分词典,因而又叫做无词典分词法或统计取词方法。但这种方法也有一定的局限性,会经常抽出一些共现频度高、但并不是词的常用字组,例如“这一”、“之一”、“有的”、“我的”、“许多的”等,并且对常用词的识别精度差,时空开销大。实际应用的统计分词系统都要使用一部基本的分词词典(常用词词典)进行串匹配分词,同时使用统计方法识别一些新的词,即将串频统计和串匹配结合起来,既发挥匹配分词切分速度快、效率高的特点,又利用了无词典分词结合上下文识别生词、自动消除歧义的优点。
交流QQ群2:16142493
智能手机软件下载
PHP新手不可错过一帖
PHP新手如何获得积分
论坛需要你,我们大家需要你!

TOP

织梦分词算法V1.0版提供下载

再来一个
附件: 您所在的用户组无法下载或查看附件
交流QQ群2:16142493
智能手机软件下载
PHP新手不可错过一帖
PHP新手如何获得积分
论坛需要你,我们大家需要你!

TOP

询问者回复

所老大说的原理没有问题,可是投入实用的却了了无几,除了那个JAVA版的Lucene听说还不错,但是把JAVA搞到PHP中去使用我想可不是件什么容易的事。而上面的那种由Hightman开发的简易PHP分词技术,却可以支持PHP的,而且分词效果在演示地址中也是有目睹的,且无论从空间还是资源需求方面都是所需甚微。对我们制作PHP的人员来说应是非常实用,,所以有兴趣有功底的同仁可以透过以上的连接去研究一下,,也许以后也会用得到的。。还有就算是为大家谋谋福利也不是什么坏事。。

[ 本帖最后由 zimu1985 于 2008-3-24 09:20 编辑 ]

TOP

回复

老大那个结梦分词出现以下错误,,;不知是何原因:
附件: 您所在的用户组无法下载或查看附件

TOP

发新话题