您的位置:首页 > 编程语言 > PHP开发

PHP使用中文分词初步接触

2016-11-23 00:00 232 查看

PHP使用中文分词学习

因工作上需要,要求在excel表格提交后,对其中的数据进行自动识别,先根据条形码一栏和模板库里的商品进行比对,若是没有条形码,则根据输入的商品名进行比对,此时就需要使用中文分词技术。

中文分词

所谓的中文分词(Chinese Word Segmentation) ,既CWS指的是将一个汉字序列切分成一个一个单独的词。我们知道,在英文的行文中,单词之间是以空格作为分界符的,而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符,虽然英文也同样存在短语的划分问题,不过在词这一层上,中文比之英文要复杂的多、困难的多。

分词技术

分词技术就是搜索引擎针对用户提交查询的关键词串进行查询处理后,根据用户的关键词串用各种匹配方法进行的一种技术。

工作原理

那么分词技术是如何在查询处理时工作的呢?很简单,首先如果用户提交的字符串没有超过3个中文字,就会直接到数据库索引词汇。超过4个中文字的,首先用分隔符比如空格,标点符号,将查询串分割成若干子查询串。举个例子。“什么是黄焖鸡米饭” 我们就会把这个词分割成“ 什么是,黄焖鸡,米饭。”这种分词方法叫做反向匹配法。然后再看用户提供的这个词有没有重复词汇,如果有的话,会丢弃掉,默认为一个词汇。接下来检查用户提交的字符串,有没有字母和数字。如果有的话,就把字母和数字认为一个词。这就是搜索引擎的查询处理。

分词算法分类

广义上我们将现有的分词算法分为三类:

字符串匹配的分词方法;

词义分词法;

统计分此法。

字符串匹配法

又叫做机械分词方法,是最常用的分词方法,百度使用的就是此种方法。常用的分为以下几种:

正向最大匹配法

什么意思呢?就是把一个词从左至右来分词。举个例子:“不知道你在说什么”,这句话采用正向最大匹配法是如何分的呢?“不知道,你,在,说什么”。

逆向最大匹配法

通过上面的例子可知,反向最大匹配法来分上面这段是如何分的:“不,知道,你在,说,什么”,这个就分的比较多了,反向最大匹配法就是从右至左。

最少切分法

也可以叫做最短路径分词法。这个怎么理解呢 ,就是说,我一段话里面要求切出的词数是最少的。

还是上面哪句话:“不知道你在说什么” 最短路径分词法就是指,我把上面哪句话分成的词要是最少的。不知道,你在,说什么,这就是最短路径分词法,分出来就只有3个词了 。好了,当然还有上面三种可以相互结合组成一些分词方法。比如正向最大匹配法和反向最大匹配法组合起来就可以叫做双向最大匹配法。

双向最大匹配法

就是进行由左到右、由右到左两次扫描,以提高精确度。

词义分词法

这种分词方法是让计算机模拟人对句子的理解,达到识别词的效果。其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象。它通常包括三个部分:分词子系统、句法语义子系统、总控部分。目前来说这种方法还不成熟,但是个人看法是,随着人工智能热潮的到来,伴随着大数据分析以及deep learning的发展,未来的分词引擎处理极有可能会被人工智能AI所替代。

统计分词法

就是根据词组的统计,就会发现两个相邻的字出现的频率最多,那么这个词就很重要。就可以作为用户提供字符串中的分隔符。这样来分词。比如,“我的,你的,许多的,这里,这一,那里”。等等,这些词出现的比较多,就从这些词里面分开来。

因为此次的项目只是需要商家自行导入商品信息,通过后台比对后显示商品,所以我选择了第一种的分词方法,同时开发环境是PHP,为了方便维护,选用了SCWS作为中文分词引擎。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  PHP 中文分词