在Python中,已经获得了包含所有单词的字典。如何统计词典中的单词在每个句子中出现的次数?
中文分词技术属于自然语言处理技术的范畴。对于一个句子,人可以通过自己的知识理解哪些是词,哪些不是词,但是计算机怎么理解呢?其处理过程是分词算法。
现有的分词算法可以分为三类:基于字符串匹配的分词、基于理解的分词和基于统计的分词。
1,基于字符串匹配的分词方法
这种方法也称为机械分词,是将待分析的中文字符串按照一定的策略与“足够大”的机器词典中的词条进行匹配。如果在字典中找到某个字符串,则匹配成功(识别出一个单词)。根据扫描方向的不同,字符串匹配分词方法可分为正向匹配和反向匹配;根据不同长度的优先匹配,可分为最大(最长)匹配和最小(最短)匹配;根据是否与词性标注过程相结合,可以分为单纯的分词方法和分词与标注相结合的综合方法。几种常用的机械分词方法如下:
1)正最大匹配法(方向从左到右);
2)逆最大匹配法(从右到左);
3)最小切分(尽量减少每句话切掉的字数)。
上述方法也可以相互结合,例如可以将正向最大匹配法和反向最大匹配法结合起来形成双向匹配法。由于汉语词汇的特点,正向最小匹配和反向最小匹配很少使用。一般来说,反向匹配的分割精度略高于正向匹配,遇到的歧义现象较少。统计结果表明,仅使用正向最大匹配的错误率为1/169,仅使用反向最大匹配的错误率为1/245。但这种精度远远不能满足实际需要。在实际的分词系统中,采用机械分词作为初始切分的方法,切分的准确率需要利用其他各种语言信息进一步提高。
一种方法是改进扫描方法,称为特征扫描或标记分割。首先在待分析的字符串中识别并分割一些具有明显特征的单词。以这些词为断点,可以将原字符串分割成更小的字符串,然后进行机械切分,从而降低匹配错误率。另一种方法是将分词和词性标注结合起来,利用丰富的词性信息帮助分词决策,并在标注过程中反过来检查和调整分词结果,从而大大提高分词的准确率。
对于机械分词方法,可以建立一个通用的模型,有这方面的专业学术论文,这里不做详细讨论。
2.基于理解的分词方法。
这种分词方法是让计算机模拟人对句子的理解,达到识别单词的效果。其基本思想是在分词的同时进行句法和语义分析,利用句法和语义信息处理歧义。它通常包括三个部分:分词子系统、句法语义子系统和通用控制部分。在总控部分的协调下,分词子系统可以获取关于词和句子的句法和语义信息来判断分词的歧义性,即它模拟了人们理解句子的过程。这种分词方法需要用到大量的语言知识和信息。由于汉语语言知识的概括性和复杂性,很难将各种语言信息组织成机器可以直接阅读的形式,所以目前基于理解的分词系统还处于实验阶段。
3.基于统计的分词方法。
从形式上看,一个词是词的稳定组合,所以在上下文中,相邻词同时出现的次数越多,就越有可能构成一个词。因此,词与词相邻的频率或概率更能反映构词法的可信度。我们可以统计语料库中相邻单词组合的频率,并计算它们的共现信息。定义两个汉字的共现信息,计算两个汉字X和y的相邻* * *出现概率,共现信息反映了汉字之间组合的紧密程度。当紧密度高于某个阈值时,可以认为这个词群可能构成一个词。这种方法只需要统计词组在语料库中出现的频率,而不需要划分词典,因此也被称为无词典分词或统计单词检索方法。但这种方法也有一定的局限性,如“这个”、“一个”、“你”、“我的”、“很多”等,往往提取出一些高频的常用词而不是单词,常用词识别准确率差,时空开销大。实用的统计分词系统都是使用一个基本的分词词典(常用词词典)进行串匹配分词,同时使用统计的方法识别一些新词,即把串频统计和串匹配结合起来,既充分发挥了匹配分词快速高效的特点,又利用无词典分词结合上下文识别新词,自动消除歧义。
哪种分词算法更准确,目前尚无定论。对于任何一个成熟的分词系统来说,单靠某一种算法是不可能的,需要将不同的算法融合在一起。笔者了解到,海量科技的分词算法采用的是“复合分词法”。所谓复方法,相当于用了中医的复方概念,就是用不同的药物来治疗疾病。同样,对于汉字的识别,需要多种算法来处理不同的问题。