关于百度中文分词系统研究
- 格式:doc
- 大小:63.50 KB
- 文档页数:6
基于统计语言模型的中文分词算法研究中文是世界上使用人数最多的语言之一,它的排列方式和英语等西方语言有很大的不同,因此分词是中文自然语言处理的重要一环。
中文分词的主要目标是将一段连续的中文文本切分成单个的词语。
目前,基于统计语言模型的中文分词算法是最为流行和使用广泛的算法。
本文将会探讨中文分词的基础知识,以及基于统计语言模型的中文分词算法的核心思想和实现方法。
一、中文分词的基础知识中文文本是由汉字组成的,中文词语并不像英语词汇那样有明显的边界。
因此,中文分词器需要解决的第一个问题就是识别出哪些汉字是组成词语的基本单元。
然后,再根据组合方式将词语划分出来。
中文分词可以分为基于规则的分词和基于统计的分词两种算法。
基于规则的分词算法是手动编写规则,根据这些规则来解决分词问题。
但是这种方法实现起来非常困难,因为包含规则的样本集必须足够大而且需要频繁更新。
而且,规则往往是比较复杂的,需要人工不断调整和改进。
基于统计的分词算法是通过分析一定量的语言样本集,建立起一个统计模型来解决分词问题。
这种方法不需要手动编写规则,而是通过分析大量的语言样本,了解自然语言的规律,然后再根据语言的规律来处理分词问题。
因此,基于统计的分词方法相对于基于规则的方法更加高效和精确。
二、基于统计语言模型的中文分词算法基于统计语言模型的中文分词算法并不是直接对每个汉字进行分词,而是在每个可能的词边界处赋予一个概率权重,然后取最大概率的词语作为对应的分词结果。
基于统计语言模型的分词算法包含三个主要组成部分:分词模型、特征提取和概率计算。
1. 分词模型分词模型是中文分词的核心模型,它可以对中文句子进行分词。
分词模型可以分为两种类型:基于统计的分词模型和基于规则的分词模型。
基于统计的分词模型通常基于最大概率模型或条件概率模型,常用的模型包括Hidden Markov Model (隐马尔可夫模型)和Conditional Random Fields(条件随机场)模型。
中文分词相关技术简介目前对汉语分词方法的研究主要有三个方面:基于规则的分词方法、基于统计的分词方法和基于理解的分词方法。
基于规则的分词方法基于规则的分词方法,这种方法又叫做机械分词方法,它是按照一定的策略将待分析的汉字串与一个"充分大的"机器词典中的词条进行匹配,若在词典中找到某个字符串,则匹配成功(识别出一个词)。
常用的方法:最小匹配算法(Minimum Matching),正向(逆向)最大匹配法(Maximum Matching),逐字匹配算法,神经网络法、联想一回溯法,基于N-最短路径分词算法,以及可以相互组合,例如,可以将正向最大匹配方法和逆向最大匹配方法结合起来构成双向匹配法等。
目前机械式分词占主流地位的是正向最大匹配法和逆向最大匹配法。
◆最小匹配算法在所有的分词算法中,最早研究的是最小匹配算法(Minimum Matching),该算法从待比较字符串左边开始比较,先取前两个字符组成的字段与词典中的词进行比较,如果词典中有该词,则分出此词,继续从第三个字符开始取两个字符组成的字段进行比较,如果没有匹配到,则取前3个字符串组成的字段进行比较,依次类推,直到取的字符串的长度等于预先设定的阈值,如果还没有匹配成功,则从待处理字串的第二个字符开始比较,如此循环。
例如,"如果还没有匹配成功",取出左边两个字组成的字段与词典进行比较,分出"如果";再从"还"开始,取"还没",字典中没有此词,继续取"还没有",依次取到字段"还没有匹配"(假设阈值为5),然后从"没"开始,取"没有",如此循环直到字符串末尾为止。
这种方法的优点是速度快,但是准确率却不是很高,比如待处理字符串为"中华人民共和国",此匹配算法分出的结果为:中华、人民、共和国,因此该方法基本上已经不被采用。
分词算法一般有三类:基于字符串匹配、基于语义分析、基于统计。
复杂的分词程序会将各种算法结合起来以便提高准确率。
Lucene被很多公司用来提供站内搜索,但是Lucene本身并没有支持中文分词的组件,只是在Sandbox里面有两个组件支持中文分词:ChineseAnalyzer和CJKAnalyzer。
ChineseAnalyzer 采取一个字符一个字符切分的方法,例如"我想去北京天安门广场"用ChineseAnalyzer分词后结果为:我#想#去#北#京#天#安#门#广#场。
CJKAnalyzer 则是二元分词法,即将相邻的两个字当成一个词,同样前面那句用CJKAnalyzer 分词之后结果为:我想#想去#去北#北京#京天#天安#安门#门广#广场。
这两种分词方法都不支持中文和英文及数字混合的文本分词,例如:IBM T60HKU现在只要11000元就可以买到。
用上述两种分词方法建立索引,不管是搜索IBM还是11000都是没办法搜索到的。
另外,假如我们使用"服务器"作为关键字进行搜索时,只要文档包含"服务"和"器"就会出现在搜索结果中,但这显然是错误的。
因此,ChineseAnalyzer和CJKAnalyzer虽然能够简单实现中文的分词,但是在应用中仍然会感觉到诸多不便。
基于字符串匹配的分词算法用得很多的是正向最大匹配和逆向最大匹配。
其实这两种算法是大同小异的,只不过扫描的方向不同而已,但是逆向匹配的准确率会稍微高一些。
"我想去北京天安门广场"这句使用最大正向分词匹配分词结果:我#想去#北京#天安门广场。
这样分显然比ChineseAnalyzer和CJKAnalyzer来得准确,但是正向最大匹配是基于词典的,因此不同的词典对分词结果影响很大,比如有的词典里面会认为"北京天安门"是一个词,那么上面那句的分词结果则是:我#想去#北京天安门#广场。
实验报告1 双向匹配中文分词•小组信息目录摘要--------------------------------------------------------------------------------------- 1理论描述--------------------------------------------------------------------------------- 1算法描述--------------------------------------------------------------------------------- 2详例描述--------------------------------------------------------------------------------- 3软件演示--------------------------------------------------------------------------------- 4总结--------------------------------------------------------------------------------------- 6•摘要这次实验的内容是中文分词,现有的分词算法可分为三大类:基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法。
按照是否与词性标注过程相结合,又可以分为单纯分词方法和分词与标注相结合的一体化方法。
而我们用到的分词算法是基于字符串的分词方法(又称机械分词方法)中的正向最大匹配算法和逆向匹配算法。
一般说来,逆向匹配的切分精度略高于正向匹配,遇到的歧义现象也较少。
统计结果表明,单纯使用正向最大匹配的错误率为1/169,单纯使用逆向最大匹配的错误率为1/245。
•理论描述中文分词指的是将一个汉字序列切分成一个一个单独的词。
基于语义分析的中文分词技术研究
中文分词是将连续的汉字序列切分成一个个有意义的词语的过程。
基
于语义分析的中文分词技术是一种通过利用语义信息进行分词的方法。
传统的中文分词方法是基于语法规则和统计模型的,通常依赖于词典
和规则,但这些方法在处理歧义性和新词识别等问题上存在一定的局限性。
因此,基于语义分析的中文分词技术出现,旨在通过使用更多的语义信息
来提高分词的准确性和效果。
1. 词向量模型:利用词向量模型,如Word2Vec和GloVe等,将每个
词语表示为向量,基于词语之间的语义相似度进行分词。
通过计算词向量
之间的余弦相似度,可以识别出合适的分词点。
2.基于上下文的分析:利用上下文信息来辅助分词。
例如,可以通过
观察词语前后的词性、语法关系以及常见的搭配等来进行分词。
3.基于语义角色标注:利用语义角色标注的结果来指导分词。
语义角
色标注模型可以识别出句子中的主谓宾关系,根据这些关系可以将句子切
分成有意义的词组。
4.基于深度学习的方法:利用深度学习模型,如循环神经网络(RNN)和长短期记忆(LSTM)等,学习中文分词的模式和规律。
通过训练模型识
别词语边界,可以提高中文分词的准确性。
需要注意的是,基于语义分析的中文分词技术虽然可以提高分词的准
确性和效果,但也存在一定的挑战和难点。
例如,如何处理多义词、新词
以及长词等问题,仍然是待解决的课题。
因此,目前仍然需要进一步的研
究和改进。
汉语自动分词与内容分析法研究近年来,随着互联网与人工智能技术的快速发展,汉语自然语言处理技术日益受到关注和重视。
其中,汉语自动分词和内容分析法是其研究的两个重要方向。
首先,汉语自动分词涉及到如何将一个汉字序列划分为词汇单位,并进行适当的标注。
其主要目的是为了方便后续的文本处理和分析。
传统的汉字处理方法通常是基于字典匹配的算法,即通过预先定义好的汉字词典来划分词语。
然而,这种方法存在着很多问题,如对新词的识别不够灵活、歧义词的识别不够准确等。
因此,近年来出现了一些新的汉语自动分词算法,如基于统计模型的算法(如HMM、CRF等)和基于神经网络的算法(如深度学习模型)。
这些算法通过学习大量的汉语语料库,能够自动地识别和划分出汉语句子中的词汇,同时可以对不同词性词义进行标注,从而提高了汉字处理的准确度和效率。
其次,内容分析法是指通过对文本内容进行分析,获取其中的相关信息和规律,并进行各种应用研究的一种方法。
具体来说,内容分析法可以包括主题分析、情感分析、文本分类、关键词提取等多个方面。
其中,情感分析是其中的一种重要应用。
它能够通过对文本中情感词汇的分析和统计,确定文本的正面、负面和中性情感类型,并进行情感倾向的评价和预测。
主题分析则是通过对文本中的主题进行分析和提取,从而确定文本的主要话题和热点。
关键词提取则是通过对文本中的关键词进行统计和挖掘,从而找出文本中的重要内容和核心词汇。
总之,汉语自动分词和内容分析法是汉语自然语言处理技术的两大重要方向。
它们在信息检索、舆情分析、自动翻译等多个领域都有着广泛的应用。
随着人工智能技术的不断改进和发展,汉语自然语言处理技术也将会逐步普及和应用到我们的生活中。
中文分词技术研究进展综述
钟昕妤;李燕
【期刊名称】《软件导刊》
【年(卷),期】2023(22)2
【摘要】中文分词作为实现机器处理中文的一项基础任务,是近几年的研究热点之一。
其结果对后续处理任务具有深远影响,具备充分的研究意义。
通过对近5年分词技术研究文献的综合分析,明晰后续研究将以基于神经网络模型的融合方法为主导,进一步追求更精准高效的分词表现。
而在分词技术的发展与普及应用中,亦存在着制约其性能的各项瓶颈。
除传统的歧义和未登录词问题外,分词还面临着语料规模质量依赖和多领域分词等新难题,针对这些新问题的突破研究将成为后续研究的重点之一。
【总页数】6页(P225-230)
【作者】钟昕妤;李燕
【作者单位】甘肃中医药大学信息工程学院
【正文语种】中文
【中图分类】TP391.1
【相关文献】
1.中文分词技术综述
2.中文分词技术综述
3.自然语言检索中的中文分词技术研究进展及应用
4.命名实体识别技术研究进展综述
5.植物精油提取技术研究进展综述
因版权原因,仅展示原文概要,查看原文内容请购买。
汉语分词程序实验报告一、程序功能描述:本程序每次处理时都用缓冲区的数据从头开始去存储语料库的链表中匹配一个最长的词语来输出,如若没有匹配到的词语则单独输出该首字。
为了简化程序所以语料库和预备分词文章都统一采用ASCII码的编码方式,并且不允许文中出现英语单字节编码。
别且本程序没有对未登录词和未声明数据结构格式进行处理,都按照普通汉字进行了分词,因此在最后的性能比较中这部分的准确率很差,但是在语料库有存储的部分中都是用最长匹配原则进行了分词,准确率还是达到了很高的水平。
分词符采用//+空格的方式来标记分词。
语料库的名字默认为:语料库.txt,打开方式为只读读取的文件名字默认为:resource.txt,打开方式为只读输出的文件名字默认为:result.txt,打开方式默认为追加的方式二、算法思路:(1)、从文件中读取语料库存储在内存中,组织成单链表的存储方式(2)、组织以首字的ASCII码为下标的哈希表指向语料库链表(3)、从文件中读满输入缓冲区,以缓冲区的首字的ASCII码做为下标从哈希表中查找首字相同的内存地址。
(4)、从该地址开始逐条匹配,记录其中匹配最长的词语的长度和地址。
写入文件中并写入分词符。
(5)、读满缓冲区,若文件已经读取完毕则查看缓冲区是否用尽,若已经用完则执行第(6)步,否则重复(4)过程。
(6)、释放申请的内存空间,程序结束。
三、数据结构:typedef struct coredict{//使用链表来存储语料库char data[9];struct coredict*nextPtr;}CoreDict,*CoreDictPtr;CoreDictPtr tablePtr=NULL,tailPtr=NULL,newPtr;//指向语料库链表的头和尾CoreDictPtr Hash[65536]={NULL};//一个以匹配词语的第一个字的ASCII码为下标的指向链表的哈希表int MatchLength=0;//在一个单词匹配过程中用来记录能够匹配到的最长的词语的长度CoreDictPtr MatchPtr=NULL;//在一个单词匹配过程中用来记录能够匹配到的最长的词语在链表中的地址四、函数功能:int IsEqual(char[],char[]);//判断两个汉字是否相等int LongMatch(char[],char[]);//void read(char[],FILE*);//将读入缓冲区读满void setoff(char[],int);//将已经匹配好的词语从缓冲区中删除五、性能对比分析:结果分析程序性能描述:在语义的判别和歧义消除方法只是用最长匹配法来降低误差,因此这部分的性能提升不是很明显。
中文自动分词法在全文检索中的研究及应用一、中文自动分词法在全文检索中的重要性哎呀,咱们得先聊聊中文自动分词法在全文检索里那可老重要啦。
你想啊,现在信息这么多,要是没有个好的分词法,就像在一堆乱麻里找线头,根本找不着北。
全文检索就像是在一个大仓库里找东西,分词法就是那把分类的钥匙。
有了它,就能把文章或者文档里的词准确地分开,这样在检索的时候就能更快更准地找到咱们想要的内容啦。
就好比在一个超级大的图书馆里,如果书都没有按照类别分好,你想找本特定的书得多难啊,分词法就是给这些文字分类的小能手呢。
二、中文自动分词法的研究现状现在啊,关于中文自动分词法的研究那是相当多呢。
有好多不同的算法和方法在被研究和改进。
比如说,有基于词典的分词法,这种方法就像是拿着一本字典在对照着把词分开,但是它也有局限性,遇到一些新词或者特殊用法就可能会出错。
还有基于统计的分词法,这种就像是根据以往的经验和数据来判断词怎么分,它能处理一些新词,不过也可能会因为数据的不准确而出现偏差。
另外呢,还有混合的方法,就是把这两种结合起来,取长补短,想让分词的效果更好。
这些研究都在不断地发展,就希望能让分词法在全文检索中发挥出更大的作用。
三、中文自动分词法在全文检索中的应用在全文检索里,中文自动分词法那用处可大啦。
当我们输入一个关键词去搜索文章的时候,分词法就开始工作啦。
它把我们输入的内容分成一个个的词,然后在海量的文章里去匹配。
比如说,我们输入“中文分词法在检索中的应用”,它就会把这个句子分成“中文”“分词法”“在”“检索”“中的”“应用”这些词,然后在文章库里去找包含这些词的文章。
这样就能把和我们搜索内容相关的文章都找出来啦。
而且呢,在一些大型的数据库或者搜索引擎里,这个分词法更是不可或缺的。
如果没有它,搜索结果可能就会乱七八糟,完全不是我们想要的。
四、中文自动分词法面临的挑战不过呢,中文自动分词法也不是一帆风顺的,它也面临着不少挑战。
首先就是中文的复杂性。
关于百度中文分词系统研究所谓分词就是把字与字连在一起的汉语句子分成若干个相互独立、完整、正确的单词。
词是最小的、能独立活动的、有意义的语言成分。
计算机的所有语言知识都来自机器词典(给出词的各项信息) 、句法规则(以词类的各种组合方式来描述词的聚合现象) 以及有关词和句子的语义、语境、语用知识库。
中文信息处理系统只要涉及句法、语义(如检索、翻译、文摘、校对等应用) ,就需要以词为基本单位。
当汉字由句转化为词之后,才能使得句法分析、语句理解、自动文摘、自动分类和机器翻译等文本处理具有可行性。
可以说,分词是机器语言学的基础。
分词准确性对搜索引擎来说十分重要,但如果分词速度太慢,即使准确性再高,对于搜索引擎来说也是不可用的,因为搜索引擎需要处理数以亿计的网页,如果分词耗用的时间过长,会严重影响搜索引擎内容更新的速度。
因此对于搜索引擎来说,分词的准确性和速度,二者都需要达到很高的要求。
分词算法的三种主要类型现有的分词算法可分为三大类:基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法。
》基于字符串匹配的分词方法。
这种方法又叫做机械分词方法,它是按照一定的策略将待分析的汉字串与一个“充分大的”机器词典中的词条进行匹配,若在词典中找到某个字符串,则匹配成功 (识别出一个词) 。
按照扫描方向的不同,串匹配分词方法可以分为正向匹配和逆向匹配;按照不同长度优先匹配的情况,可以分为最大(最长) 匹配和最小(最短) 匹配;按照是否与词性标注过程相结合,又可以分为单纯分词方法和分词与标注相结合的一体化方法。
常用的几种机械分词方法如下:1) 正向最大匹配法(由左到右的方向) 。
通常简称为MM(Maximum Matching Method) 法。
其基本思想为:设D 为词典,MAX 表示D 中的最大词长,STR 为待切分的字串。
MM 法是每次从STR 中取长度为MAX 的子串与D 中的词进行匹配。
若成功,则该子串为词,指针后移MAX 个汉字后继续匹配,否则子串逐次减一进行匹配。
2) 逆向最大匹配法(由右到左的方向) 。
通常简称为RMM ( Reverse Maximum MatchingMethod) 法。
RMM 法的基本原理与MM 法相同,不同的是分词的扫描方向,它是从右至左取子串进行匹配。
3) 最少切分法(使每一句中切出的词数最小) 。
还可以将上述各种方法相互组合,例如,可以将正向最大匹配方法和逆向最大匹配方法结合起来构成双向匹配法。
由于汉语单字成词的特点,正向最小匹配和逆向最小匹配一般很少使用。
一般说来,逆向匹配的切分精度略高于正向匹配,遇到的歧义现象也较少。
统计结果表明,单纯使用正向最大匹配的错误率为1/169 ,单纯使用逆向最大匹配的错误率为1/ 245 。
但这种精度还远远不能满足实际的需要。
实际使用的分词系统,都是把机械分词作为一种初分手段,还需通过利用各种其它的语言信息来进一步提高切分的准确率。
一种方法是改进扫描方式,称为特征扫描或标志切分,优先在待分析字符串中识别和切分出一些带有明显特征的词,以这些词作为断点,可将原字符串分为较小的串再来进行机械分词,从而减少匹配的错误率。
另一种方法是将分词和词类标注结合起来,利用丰富的词类信息对分词决策提供帮助,并且在标注过程中又反过来对分词结果进行检验、调整,从而极大地提高切分的准确率。
》基于理解的分词方法。
这种分词方法是通过让计算机模拟人对句子的理解,达到识别词的效果。
其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象。
它通常包括三个部分:分词子系统、句法语义子系统、总控部分。
在总控部分的协调下,分词子系统可以获得有关词、句子等的句法和语义信息来对分词歧义进行判断,即它模拟了人对句子的理解过程。
这种分词方法需要使用大量的语言知识和信息。
由于汉语语言知识的笼统、复杂性,难以将各种语言信息组织成机器可直接读取的形式,因此目前基于理解的分词系统还处在试验阶段。
》基于统计的分词方法。
从形式上看,词是稳定的字的组合,因此在上下文中,相邻的字同时出现的次数越多,就越有可能构成一个词。
因此字与字相邻共现的频率或概率能够较好地反映成词的可信度。
可以对语料中相邻共现的各个字的组合的频度进行统计,计算它们的互现信息。
定义两个字的互现信息,计算两个汉字X、Y的相邻共现概率。
互现信息体现了汉字之间结合关系的紧密程度。
当紧密程度高于某一个阈值时,便可认为此字组可能构成了一个词。
这种方法只需对语料中的字组频度进行统计,不需要切分词典,因而又叫做无词典分词法或统计取词方法。
但这种方法也有一定的局限性,会经常抽出一些共现频度高、但并不是词的常用字组,例如“这一”、“之一”、“有的”、“我的”、“许多的”等,并且对常用词的识别精度差,时空开销大。
实际应用的统计分词系统都要使用一部基本的分词词典(常用词词典)进行串匹配分词,同时使用统计方法识别一些新的词,即将串频统计和串匹配结合起来,既发挥匹配分词切分速度快、效率高的特点,又利用了无词典分词结合上下文识别生词、自动消除歧义的优点。
它与语料库的规模有关,并且要进行大规模的计算,因此实现较复杂。
中文分词的一般过程中文分词包括以下部分:词典初始化、输入分词文本、文本的结构化处理、分词(粗分) 、消歧与识别未登录词、更新词典和保存结果,如图1所示。
分词中的难题经历了将近十年的发展,各种分词算法都已经比较成熟了,但是中文是一种十分复杂的语言,让计算机理解中文语言更难。
在中文分词过程中,有两大难题一直没有完全突破。
1) 歧义识别。
歧义是指同样的一句话,可能有两种或者更多的切分方法。
例如,“安徽大学生”,因为“安徽”、“大学”、“学生”、“大学生”、“安徽大学”都是词,那么这个短语就可以分成“安徽/ 大学生”和“安徽大学/ 生”。
这种称为交叉歧义。
像这种交叉歧义十分常见,相对组合歧义来说是还算比较容易处理的,组合歧义就需要根据整个句子来判断了。
例如,在句子“这个门把手坏了”中“, 把手”是个词,但在句子“请把手拿开”中“, 把手”就不是一个词。
此外,在歧义中还有一个难题,是真歧义。
真歧义意思是给出一句话,由人去判断也不知道哪个应该是词,哪个应该不是词。
如“网球拍卖完了”,如果没有上下文,即使是人也很难判断到底是“网球拍/卖/完了”还是“网球/拍卖/完了”。
2) 新词识别。
新词,专业术语称为未登录词,也就是那些在字典中都没有收录过,但又确实能称为词的那些词。
最典型的是人名,此外还有机构名、地名、产品名、商标名、简称、省略语等都是很难处理的问题,而且这些又正好是人们经常使用的词,因此对于搜索引擎来说,分词系统中的新词识别十分重要。
目前新词识别准确率已经成为评价一个分词系统好坏的重要标志之一。
百度分词算法推导搜索引擎涉及到许多技术点,比如查询处理、排序算法、页面抓取算法、CACHE 机制、ANTI – SPAM 等等。
这些技术细节,作为商业公司的搜索引擎服务提供商比如百度, Google 等是不会公之于众的。
将现有的搜索引擎看作一个黑盒,通过向黑盒提交输入,判断黑盒返回的输出大致判断黑盒里面不为人知的技术细节。
百度作为一个典型的中文搜索引擎一直强调其“中文处理”方面具有其它搜索引擎所不具有的关键技术和优势。
那么就来看看百度到底采用了哪些所谓的核心技术。
首先,判断一下百度的分词条件。
单字词不用分,从二字词开始,为了避免词对判断分词程序是否起作用的干扰,输入任意非词二字。
分别向百度提交“校学”、“学大”,从返回结果的标红关键字来看,百度并没有将“校学”、“学大”分成“校/ 学”、“学/ 大”,说明百度的分词程序没有启动;接着提交查询“或者与”,返回结果1 210 000 篇相关页面,翻到最后一页,发现标红的关键字都是“或者与”连续出现的情况,好像没有切分,但是还不确定,再提交人工分好的查询“或者与”,返回结果31 400 000 篇,要么是“或者,与”,要么是“或者与”,可以确定没有进行分词; 再向百度提交“论文下载”,从返回结果中标为红字的地方可以看到查询已经被切分成“论文/ 下载”两个词了,说明分词程序已经启动了。
如果是比四个中文字符更长的字符串,分词程序当然也会被激发了。
归纳一下,单从字符数上来看,百度的分词条件是大于等于四个中文字符,三个及以下字符不进行切分,如表1所示。
下面,判断一下百度采取的分词算法。
现在分词算法已经算是比较成熟了,有简单的有复杂的,比如正向最大匹配、反向最大匹配、双向最大匹配、语言模型方法、最短路径算法等等。
判断一个分词系统好不好,关键看两点,一个是消除歧义能力;一个是词典未登录词的识别能力。
首先假设,百度没有采取比较复杂的算法,因为考虑到速度问题。
提交一个查询“安徽大学网络实验室”,如果是正向最大匹配算法的话,那么输出应该是: “安徽大学/ 网络实验室”或者“安徽大学/ 网络/ 实验室”,百度的分词结果:“安徽大学/ 网络/ 实验室”,跟期望相一致,但是并不能据此就说明百度采用的是正向最大匹配算法。
再输入“甲型H1N1 流感症状”,结果百度分为“甲型H1N1/ 流感/ 症状”。
可以获得如下信息:百度能够识别“甲型H1N1”,说明百度有未登录词识别功能或者百度的专有词典中已经有了“甲型H1N1”这个词。
认为分词过程分为两个阶段:第一阶段,查找一个特殊词典,这个词典包含一些人名、地名以及一些普通词典没有的新词, 这样首先将“甲型H1N1”解析出来。
第二阶段,将剩下的字符串“流感症状”交给普通词典,分成“流感/ 症状”。
分词的结果也符合正向最大匹配算法。
然而上面的两个例子如果是反向最大匹配算法结果也是说的通的,为了证明这一点,提交查询“安徽大学科建设”, 如果是反向最大匹配算法应该分成“安徽/ 大/ 学科/ 建设”,百度实际分成“安徽大学/ 科/ 建设”。
再查询“东京城市民国”, 如果是反向最大匹配算法应该分成“东京/ 城市/ 民国”,但是百度分成“东京城/ 市民/ 国”,这就证明了不是反向最大匹配算法。
同时又出现了新的问题,“东京”是个城市的名字,为什么没有识别出来,而是分成了“东京城”,我想应该是百度的专有词典中有“东京城”这个词,虽然也有“东京”,但是按最大匹配来分应该是分成“东京城”。
这样基本能确定百度分词采取了至少两个词典,一个是普通词典, 一个是专有词典( 地名、人名等) 。
而且是专有词典先切分,然后将剩余的片断交由普通词典来切分。
继续测验,提交查询“登上海东方明珠”,如果没有专有词典,那么结果应该是“登上/ 海/ 东方明珠”,事实上百度的分词结果是“登/ 上海/ 东方明珠”。
至此,可以判断百度的分词算法是正向最大匹配算法。
结束语归纳一下百度的分词算法系统:首先用专有词典采用正向最大匹配分词,切分出部分结果,剩余没有切分的部分交给普通词典,同样采取正向最大匹配分词, 最后输出结果。