如果你想成为一名专业的SEO,那么搜索引擎分词思维是必须掌握的,因为只有掌握了分词思维,你才可以定位好搜索引擎喜欢,而且用户也喜欢的关键词,进而才能更深层次的挖掘出SEO技术。
也许有一些新手朋友看起来中文分词的分词理论比较复杂,但你完全同必要词那些理论,没有太多的意义,你只要知道计算方法和如何去做好每个网页分词就可以了,现在就为大家详细的介绍一下百度的中文分词技术。
一、什么是中文分词?
百度分词技术就是百度针对用户提交查询的关键词串进行的查询处理后根据用户的关键词串用各种匹配方法进行的一种技术。
中文分词指的是将一个汉字序列切分成一个一个单独的词,分词就是将连续的字序列按照一定的规范重新组合成词序列的过程,所谓分词就是把字与字连在一起的汉语句子分成若干个相互独立、完整、正确的单词,词是最小的、能独立活动的、有意义的语言成分。
我们知道,在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符,虽然英文也同样存在短语的划分问题,不过在词这一层上,中文比之英文要复杂的多、困难的多。
中文分词是文本挖掘的基础,对于输入的一段中文,成功的进行中文分词,可以达到电脑自动识别语句含义的效果。
中文分词技术属于自然语言处理技术范畴,对于一句话,人可以通过自己的知识来明白哪些是词?哪些不是词?但如何让计算机也能理解?其处理过程就是分词算法。
计算机的所有语言知识都来自机器词典(给出词的各项信息)、句法规则(以词类的各种组合方式来描述词的聚合现象)以及有关词和句子的语义、语境、语用知识库,中文信息处理系统只要涉及句法、语义(如检索、翻译、文摘、校对等应用),就需要以词为基本单位,当汉字由句转化为词之后,才能使得句法分析、语句理解、自动文摘、自动分类和机器翻译等文本处理具有可行性,可以说,分词是机器语言学的基础。
二、中文分词的思路及原理
首先我们要知道搜索引擎工作原理是把每个网页的内容按词来录入到数据库,比如你的文章标题是:“马海祥SEO博客提供免费SEO实战培训教程”,那么搜索引擎分把这个标题分成搜索引擎字典已经存储的词和用户常关注的词,比如:马海祥、SEO、博客,培训,提供,免费,SEO教程,SEO实战培训,免费SEO教程,免费SEO培训和SEO培训等等。
主要大家能领悟这种思维就可以了,所以文章句子分割成每个词或者单个字是搜索引擎要做的第一页,也是最重要的一步,因为只有词分好了,才能准确地把价值的信息反馈给用户。
对于一个专业的网站优化人员来说中文分词的方法也十分的重要,因为主有把要优化的每个词好了分词后,才能更好的做好每个网页的优化工作,才能更清楚的告诉搜索引擎我这网站是代表什么来提高搜索引擎排名的机会,同时也清楚告诉用户,你的网页要表达的内容,这是马海祥做SEO服务以来体会最深刻的地方,往往一个网页的分词错了,再多的努力都是白费,因为做SEO推广的企业是非常讲究效率的,效率低意味意投资与回报率太低,是企业资源没有合理利用的一个错误策略。
三、中文分词的应用
在自然语言处理技术中,中文处理技术比西文处理技术要落后很大一段距离,许多西文的处理方法中文不能直接采用,就是因为中文必需有分词这道工序,中文分词是其他中文信息处理的基础,搜索引擎只是中文分词的一个应用,其他的比如机器翻译(MT)、语音合成、自动分类、自动摘要、自动校对等等,都需要用到分词(具体可查看马海祥博客《搜索引擎自动提取文章关键词原理》的相关介绍)。
因为中文需要分词,可能会影响一些研究,但同时也为一些企业带来机会,因为国外的计算机处理技术要想进入中国市场,首先也是要解决中文分词问题。
分词准确性对搜索引擎来说十分重要,但如果分词速度太慢,即使准确性再高,对于搜索引擎来说也是不可用的,因为搜索引擎需要处理数以亿计的网页,如果分词耗用的时间过长,会严重影响搜索引擎内容更新的速度。因此对于搜索引擎来说,分词的准确性和速度,二者都需要达到很高的要求。
四、中文分词技术的特殊性
据马海祥了解,在计算机网络上,之所以存在中文分词技术,是由于中文在基本文法上有其特殊性,具体表现在:
1、与英文为代表的拉丁语系语言相比,英文以空格作为天然的分隔符,而中文由于继承自古代汉语的传统,词语之间没有分隔。
古代汉语中除了连绵词、人名和地名等,词通常就是单个汉字,所以当时没有分词书写的必要,而现代汉语中双字或多字词居多,一个字不再等同于一个词。
2、在中文里,“词”和“词组”边界模糊,现代汉语的基本表达单元虽然为“词”,且以双字或者多字词居多,但由于人们认识水平的不同,对词和短语的边界很难去区分。
例如:“对随地吐痰者给予处罚”,“随地吐痰者”本身是一个词还是一个短语,不同的人会有不同的标准,同样的“海上”“酒厂”等等,即使是同一个人也可能做出不同判断,如果汉语真的要分词书写,必然会出现混乱,难度很大。
中文分词的方法其实不局限于中文应用,也被应用到英文处理,如手写识别,单词之间的空格就很清楚,中文分词方法可以帮助判别英文单词的边界。
五、分词算法的分类
现有的分词算法可分为三大类:基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法,按照是否与词性标注过程相结合,又可以分为单纯分词方法和分词与标注相结合的一体化方法。
1、基于字符串匹配的分词方法
这种方法又叫做机械分词方法,它是按照一定的策略将待分析的汉字串与一个“充分大的”机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功(识别出一个词)。
按照扫描方向的不同,串匹配分词方法可以分为正向匹配和逆向匹配;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最小(最短)匹配;常用的几种机械分词方法如下:
(1)、正向最大匹配法(由左到右的方向)
首先粗分,按照句子把文本切成一个一个句子,然后把每个句子切成单字,字典按照树形结构存储,比如这句话“春天还会远吗”首先查找“春”字开头的词,然后按照字典树形结构往下走一个节点,查找“春”后面一个字是“天”的词,然后又下沉一个节点,找“还”下面是“会”的词,找不到了,查找就结束。
(2)、逆向最大匹配法(由右到左的方向)
就是朝相反的方向发掘可以匹配的文字,比如网上商城这个文字串,那么会向左延伸在网上的前面会出现的结果是区域性的文字,比如上海或者北京等,在商城的前面会出现更精准的定义文字符,比如爱家,女人等专属性强的文字符。
(3)、最少切分法
使每一句中切出的词数最小,还需通过利用各种其它的语言信息来进一步提高切分的准确率。
(4)、双向最大匹配法(进行由左到右、由右到左两次扫描)
正向最大匹配方法和逆向最大匹配方法结合起来构成双向匹配法,就是向左右纵深挖掘比较匹配的结果值。
还可以将上述各种方法相互组合,例如,可以将正向最大匹配方法和逆向最大匹配方法结合起来构成双向匹配法,由于汉语单字成词的特点,正向最小匹配和逆向最小匹配一般很少使用。
一般说来,逆向匹配的切分精度略高于正向匹配,遇到的歧义现象也较少,统计结果表明,单纯使用正向最大匹配的错误率为1/169,单纯使用逆向最大匹配的错误率为1/245,但这种精度还远远不能满足实际的需要,实际使用的分词系统,都是把机械分词作为一种初分手段,还需通过利用各种其它的语言信息来进一步提高切分的准确率。
一种方法是改进扫描方式,称为特征扫描或标志切分,优先在待分析字符串中识别和切分出一些带有明显特征的词,以这些词作为断点,可将原字符串分为较小的串再来进机械分词,从而减少匹配的错误率。
另一种方法是将分词和词类标注结合起来,利用丰富的词类信息对分词决策提供帮助,并且在标注过程中又反过来对分词结果进行检验、调整,从而极大地提高切分的准确率。
对于机械分词方法,可以建立一个一般的模型,在这方面有专业的学术论文,这里不做详细论述。
2、基于理解的分词方法
这种分词方法是通过让计算机模拟人对句子的理解,达到识别词的效果,其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象,它通常包括三个部分:分词子系统、句法语义子系统、总控部分。
在总控部分的协调下,分词子系统可以获得有关词、句子等的句法和语义信息来对分词歧义进行判断,即它模拟了人对句子的理解过程,这种分词方法需要使用大量的语言知识和信息,由于汉语语言知识的笼统、复杂性,难以将各种语言信息组织成机器可直接读取的形式,因此目前基于理解的分词系统还处在试验阶段。
3、基于统计的分词方法
从形式上看,词是稳定的字的组合,因此在上下文中,相邻的字同时出现的次数越多,就越有可能构成一个词,因此字与字相邻共现的频率或概率能够较好的反映成词的可信度,可以对语料中相邻共现的各个字的组合的频度进行统计,计算它们的互现信息,定义两个字的互现信息,计算两个汉字X、Y的相邻共现概率,互现信息体现了汉字之间结合关系的紧密程度,当紧密程度高于某一个阈值时,便可认为此字组可能构成了一个词。
这种方法只需对语料中的字组频度进行统计,不需要切分词典,因而又叫做无词典分词法或统计取词方法,但这种方法也有一定的局限性,会经常抽出一些共现频度高、但并不是词的常用字组,例如“这一”、“之一”、“有的”、“我的”、“许多的”等,并且对常用词的识别精度差,时空开销大。
实际应用的统计分词系统都要使用一部基本的分词词典(常用词词典)进行串匹配分词,同时使用统计方法识别一些新的词,即将串频统计和串匹配结合起来,既发挥匹配分词切分速度快、效率高的特点,又利用了无词典分词结合上下文识别生词、自动消除歧义的优点(相关原理介绍可查看马海祥博客《如何利用词频统计原理自动提取文章摘要》的相关介绍)。
另外一类是基于统计机器学习的方法,首先给出大量已经分词的文本,利用统计机器学习模型学习词语切分的规律(称为训练),从而实现对未知文本的切分,我们知道,汉语中各个字单独作词语的能力是不同的,此外有的字常常作为前缀出现,有的字却常常作为后缀(“者”“性”),结合两个字相临时是否成词的信息,这样就得到了许多与分词有关的知识,这种方法就是充分利用汉语组词的规律来分词,这种方法的最大缺点是需要有大量预先分好词的语料作支撑,而且训练过程中时空开销极大。
到底哪种分词算法的准确度更高,目前并无定论,对于任何一个成熟的分词系统来说,不可能单独依靠某一种算法来实现,都需要综合不同的算法,例如,海量科技的分词算法就采用“复方分词法”,所谓复方,就是像中西医结合般综合运用机械方法和知识方法,对于成熟的中文分词系统,需要多种算法综合处理问题。
六、中文分词的技术难点
有了成熟的分词算法,是否就能容易的解决中文分词的问题呢?事实远非如此,中文是一种十分复杂的语言,让计算机理解中文语言更是困难,在中文分词过程中,有两大难题一直没有完全突破。
1、歧义识别
歧义是指同样的一句话,可能有两种或者更多的切分方法,主要的歧义有两种:交集型歧义和组合型歧义,例如:表面的,因为“表面”和“面的”都是词,那么这个短语就可以分成“表面 的”和“表 面的”,这种称为交集型歧义(交叉歧义)。
像这种交集型歧义十分常见,前面举的“和服”的例子,其实就是因为交集型歧义引起的错误,“化妆和服装”可以分成“化妆 和 服装”或者“化妆 和服 装”,由于没有人的知识去理解,计算机很难知道到底哪个方案正确。
交集型歧义相对组合型歧义来说是还算比较容易处理,组合型歧义就必须根据整个句子来判断了,例如,在句子“这个门把手坏了”中,“把手”是个词,但在句子“请把手拿开”中,“把手”就不是一个词;在句子“将军任命了一名中将”中,“中将”是个词,但在句子“产量三年中将增长两倍”中,“中将”就不再是词,这些词计算机又如何去识别?
如果交集型歧义和组合型歧义计算机都能解决的话,在歧义中还有一个难题,是真歧义,真歧义意思是给出一句话,由人去判断也不知道哪个应该是词,哪个应该不是词,例如:“乒乓球拍卖完了”,可以切分成“乒乓 球拍 卖 完 了”、也可切分成“乒乓球 拍卖 完 了”,如果没有上下文其他的句子,恐怕谁也不知道“拍卖”在这里算不算一个词。
2、新词识别
命名实体(人名、地名)、新词,专业术语称为未登录词,也就是那些在分词词典中没有收录,但又确实能称为词的那些词。
最典型的是人名,人可以很容易理解,句子“王军虎去广州了”中,“王军虎”是个词,因为是一个人的名字,但要是让计算机去识别就困难了,如果把“王军虎”做为一个词收录到字典中去,全世界有那么多名字,而且每时每刻都有新增的人名,收录这些人名本身就是一项既不划算又巨大的工程,即使这项工作可以完成,还是会存在问题,例如:在句子“王军虎头虎脑的”中,“王军虎”还能不能算词?
除了人名以外,还有机构名、地名、产品名、商标名、简称、省略语等都是很难处理的问题,而且这些又正好是人们经常使用的词,因此对于搜索引擎来说,分词系统中的新词识别十分重要,新词识别准确率已经成为评价一个分词系统好坏的重要标志之一。
点评:
中文分词对于搜索引擎来说,最重要的并不是找到所有结果,因为在上百亿的网页中找到所有结果没有太多的意义,没有人能看得完,最重要的是把最相关的结果排在最前面,这也称为相关度排序,中文分词的准确与否,常常直接影响到对搜索结果的相关度排序,从定性分析来说,搜索引擎的分词算法不同,词库的不同都会影响页面的返回结果。
来源:马海祥博客