发明内容
为了解决现有技术的问题,本发明实施例提供了一种分词方法及装置。所述技术方案如下:
一方面,提供了一种分词方法,所述方法包括:
利用n阶马尔科夫模型n-gram模型,将待分词文本进行分词,得到第一文本,所述n-gram模型用于消除分词歧义,所述第一文本包括以空格为间隔的词串;
当所述第一文本中包括目标词串时,将所述目标词串添加至词典,得到更新后的词典,所述目标词串为未存储在所述词典中的词串,所述词典用于存储所有的词串以及对应的估计概率;
根据所述更新后的词典,利用前向最大匹配分词方法以及后向最大匹配分词方法对所述第一文本按预设算法进行分词,分别得到第二文本和第三文本;所述第二文本为所述前向最大匹配分词方法用于按照预设策略将第一文本的汉字串与所述更新后的词典中的词条进行匹配得到的;所述第三文本为所述后向最大匹配分词方法用于按照预设策略将第一文本的汉字串与所述更新后的词典中的词条进行匹配得到的;
从所述第二文本以及所述第三文本中选取词长期望和词长方差符合预设规则的文本作为分词结果;
所述前向最大匹配分词的方法包括下述步骤a-d:
步骤a、如果待分词的句子长度大于更新后的词表最大词长,在句首截取n个已分好的词,直到这n个词的总词长恰巧大于等于词表最大词长;
步骤b、如果这n个词合并成的词在更新后的词表中,则输出这个合并的词作为分词结果,否则查找前n-1个词或前n-1个词与第n个词的前k个字合并成的词是否在更新后的词表中,同时第n个词的剩余部分是否也在更新后的词表中且不为单字词,直到查找到符合上述条件的合并词为止;
步骤c、输出该词。并把句子的剩余部分做为新待分词的句子;
步骤d、重复步骤a-c,直到待分词的句子为空为止;
所述后向最大匹配分词的方法包括下述步骤1-4:
步骤1、如果待分词的句子长度大于更新后的词表最大词长,在句末截取n个已分好的词,直到这n个词的总词长恰巧大于等于词表最大词长;
步骤2、如果这n个词合并成的词在更新后的词表中,则输出这个合并的词作为分词结果,否则查找倒数n-1个词或倒数n-1个词与倒数第n个词的后k个字合并成的词是否在更新后的词表中,同时倒数第n个词的剩余部分是否也在更新后的词表中且不为单字词,直到查找到符合上述条件的合并词为止;
步骤3、输出该词。并把句子的剩余部分做为新待分词的句子;
步骤4、重复步骤1-3,直到待分词的句子为空为止。
可选地,从所述第二文本以及所述第三文本中选取词长期望和词长方差符合预设规则的文本作为分词结果包括:
当所述第二文本以及所述第三文本中选取词长期望不相同时,从所述第二文本以及所述第三文本中选取词长期望大的文本作为分词结果;或,
当所述第二文本以及所述第三文本中选取词长期望相同时,从所述第二文本以及所述第三文本中选取词长方差小的文本作为分词结果。
可选地,利用n-gram模型,将待分词文本进行分词,得到第一文本包括:
通过对语料库进行分析和计算,生成单字同时出现的频度库,并由所述频度库生成分词词典;
利用Viterbi算法,从所述分词词典中所有可能的字符串的分割情况中,选择各个词频率乘积最高的路径,作为所述第一文本。
可选地,所述方法还包括:
当所述第一文本中未包括所述目标词串,将所述第一文本作为分词结果。
另一方面,提供了一种分词装置,所述装置包括:
第一分词模块,用于利用n阶马尔科夫模型n-gram模型,将待分词文本进行分词,得到第一文本,所述n-gram模型用于消除分词歧义,所述第一文本包括以空格为间隔的词串;
词典更新模块,用于当所述第一文本中包括目标词串时,将所述目标词串添加至词典,得到更新后的词典,所述目标词串为未存储在所述词典中的词串,所述词典用于存储所有的词串以及对应的估计概率;
第二分词模块,用于根据所述更新后的词典,利用前向最大匹配分词方法以及后向最大匹配分词方法对所述第一文本按预设算法进行分词,分别得到第二文本和第三文本;所述第二文本为所述前向最大匹配分词方法用于按照预设策略将第一文本的汉字串与所述更新后的词典中的词条进行匹配得到的;所述第三文本为所述后向最大匹配分词方法用于按照预设策略将第一文本的汉字串与所述更新后的词典中的词条进行匹配得到的;
分词结果选取模块,用于从所述第二文本以及所述第三文本中选取词长期望和词长方差符合预设规则的文本作为分词结果;
所述前向最大匹配分词的方法包括下述步骤a-d:
步骤a、如果待分词的句子长度大于更新后的词表最大词长,在句首截取n个已分好的词,直到这n个词的总词长恰巧大于等于词表最大词长;
步骤b、如果这n个词合并成的词在更新后的词表中,则输出这个合并的词作为分词结果,否则查找前n-1个词或前n-1个词与第n个词的前k个字合并成的词是否在更新后的词表中,同时第n个词的剩余部分是否也在更新后的词表中且不为单字词,直到查找到符合上述条件的合并词为止;
步骤c、输出该词。并把句子的剩余部分做为新待分词的句子;
步骤d、重复步骤a-c,直到待分词的句子为空为止;
所述后向最大匹配分词的方法包括下述步骤1-4:
步骤1、如果待分词的句子长度大于更新后的词表最大词长,在句末截取n个已分好的词,直到这n个词的总词长恰巧大于等于词表最大词长;
步骤2、如果这n个词合并成的词在更新后的词表中,则输出这个合并的词作为分词结果,否则查找倒数n-1个词或倒数n-1个词与倒数第n个词的后k个字合并成的词是否在更新后的词表中,同时倒数第n个词的剩余部分是否也在更新后的词表中且不为单字词,直到查找到符合上述条件的合并词为止;
步骤3、输出该词。并把句子的剩余部分做为新待分词的句子;
步骤4、重复步骤1-3,直到待分词的句子为空为止。
可选地,所述分词结果选取模块包括:
第一分词结果选取单元,用于当所述第二文本以及所述第三文本中选取词长期望不相同时,从所述第二文本以及所述第三文本中选取词长期望大的文本作为分词结果;或,
第二分词结果选取单元,用于当所述第二文本以及所述第三文本中选取词长期望相同时,从所述第二文本以及所述第三文本中选取词长方差小的文本作为分词结果。
可选地,所述第一分词模块包括:
分词词典生成单元,用于通过对语料库进行分析和计算,生成单字同时出现的频度库,并由所述频度库生成分词词典;
第一文本选取单元,用于利用Viterbi算法,从所述分词词典中所有可能的字符串的分割情况中,选择各个词频率乘积最高的路径,作为所述第一文本。
可选地,所述分词结果选取模块还用于当所述第一文本中未包括所述目标词串,将所述第一文本作为分词结果。
本发明实施例提供的技术方案带来的有益效果是:
通过仅将新词添加至现有词典中,对现有词典进行更新,使得在不增加分词歧义的前提下,灵活地添加新词。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
图1是本发明实施例提供的分词方法流程图。参见图1,该实施例包括:
101、利用n-gram模型,将待分词文本进行分词,得到第一文本,该n-gram模型用于消除分词歧义,该第一文本包括以空格为间隔的词串;
在本发明实施例中,n-gram模型指将语言中字符的发生近似为(n-1)阶markov模型,也即是,设有1个字符的汉字字符串c1,c2,…,ci,在其上下文关系中,只有前n-1个字符对下一个字符即第n个字符出现的概率有影响,用概率表示就是:
P(cl|c1,...,cl-1)≈P(cl|c1-n+1,...,cl-1)
根据概率乘法定理和n-gram模型,汉字字符串c1,c2,…,ci的概率可表示为组成该字符串的字符的概率的乘积:
n-gram模型的参数可以根据字符串在训练语料库出现的频率来估计得到:
其中,函数C(c1,…,cl)用于计算其自变量中字符串的数量。
需要说明的是,高阶模型能更好地刻画语言的结构,但同时也有不足。因为从给定的预料库所能获得的有关数据是有限的,而且很多字符串在预料库中出现次数很少,或者根本不会出现。于是就会出现这样一种结果:高阶模型仅能给出那些与训练用数据近似的字符串的合理概率,而不能得到那些与训练用数据不相近的字符串的合理概率,即所谓的数据稀疏问题。另外,高阶模型需要的计算量、存储空间都较大,实现较困难。因此在实际处理中,取n=2或n=3的模型即可满足许多实际应用,这时n-gram模型分别被称为二元文法模型和三元文法模型。
进一步可选地,本发明实施例采用基于Good-Turing估计法的补偿平滑技术,可以克服数据稀疏的问题。根据Good-Turing估计法,对任何发生r次的n-gram文法。假定它会发生r*次,
这里式子nr为在训练数据中精确出现r次n-gram的次数,为将该数转换成概率,只需作如下的归一化:设字符c在语料库中总出现r次,取P(c)=r*/N。
其中,N为语料库所包含的字符的总数,定义比率dr=r*/r为贴现系数。
特别地,对于二元文法模型,如果字符串c1c2出现在语料库中,运用Good-Turing估计法,条件概率P(c2|c1)可以表示如下:
基于n-gram统计模型的分词方法,首先通过对语料库进行基于字符统计Bigram统计分析和计算,生成单字同时出现的频度库,并由该库生成分词词典,该分词词典的格式可以如表1所示。
表1:基于n-gram的分词字典
然后用Viterbi算法从该分词词典中所有可能的字符串的分割情况中,选择各个词频率乘积最高的路径,作为该第一文本。
102、当该第一文本中包括目标词串时,将该目标词串添加至词典,得到更新后的词典,该目标词串为未存储在该词典中的词串,该词典用于存储所有的词串以及对应的估计概率;
在本发明实施例中,向该词典中添加目标词串时,仅添加目标词串本身,而不需要估计目标词串的概率,使得使词表较易更新。
本发明实施例仅以该第一文本中包括目标词串为例进行说明,在本发明的另一实施例中,该第一文本中也可以不包括该目标词串,此时,将该第一文本作为分词结果。
103、根据该更新后的词典,利用前向最大匹配分词方法以及后向最大匹配分词方法对该第一文本按预设算法进行分词,分别得到第二文本和第三文本,该前向最大匹配分词方法以及后向最大匹配分词方法用于按照预设策略将第一文本的汉字串与该更新后的词典中的词条进行匹配;
在本发明实施例中,前向最大匹配和后向最大匹配这种两种方法,都是机械分词方法,均按照预设算法将待分析的汉字串与一个“充分大的”机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功。具体步骤如下:
该前向最大匹配分词的方法包括下述步骤a-d:
步骤a、如果待分词的句子长度大于更新后的词表最大词长,在句首截取n个已分好的词,直到这n个词的总词长恰巧大于等于词表最大词长;
步骤b、如果这n个词合并成的词在更新后的词表中,则输出这个合并的词作为分词结果,否则查找前n-1个词或前n-1个词与第n个词的前k个字合并成的词是否在更新后的词表中,同时第n个词的剩余部分是否也在更新后的词表中且不为单字词,直到查找到符合上述条件的合并词为止;
步骤c、输出该词。并把句子的剩余部分做为新待分词的句子;
步骤d、重复步骤a-c,直到待分词的句子为空为止。
该后向最大匹配分词的方法包括下述步骤1-4:
步骤1、如果待分词的句子长度大于更新后的词表最大词长,在句末截取n个已分好的词,直到这n个词的总词长恰巧大于等于词表最大词长;
步骤2、如果这n个词合并成的词在更新后的词表中,则输出这个合并的词作为分词结果,否则查找倒数n-1个词或倒数n-1个词与倒数第n个词的后k个字合并成的词是否在更新后的词表中,同时倒数第n个词的剩余部分是否也在更新后的词表中且不为单字词,直到查找到符合上述条件的合并词为止;
步骤3、输出该词。并把句子的剩余部分做为新待分词的句子;
步骤4、重复步骤1-3,直到待分词的句子为空为止。
104、从该第二本文以及该第三文本中选取词长期望和词长方差符合预设规则的文本作为分词结果。
在中文分词结果中,词多为双字词、三字词,四字词和五字词已为少数,更多字数的词则更为少见,所以词的长度能够很好的反映分词的结果。利用两个最常用的统计量来评估分词结果的质量,即分词后句子中词长的期望与方差。本发明实施例中的决策方案如下:
其中,fmm(sentence)为最大前向匹配分词结果,rmm(sentence)为最大后相匹配分词的方法,len(x)为计算词长的函数,E(x)为求期望函数,D(x)为求方差函数。即当两种分词结果的词长期望不同时我们认为词长期望越大的分词结果越合理,当两种分词结果的词长期望相同时,可以认为词长方差越小的分词结果越合理。
本发明实施例提供的方法,通过仅将新词添加至现有词典中,对现有词典进行更新,使得在不增加分词歧义的前提下,灵活地添加新词。
图2是本发明实施例提供的分词装置结构示意图。参见图2,该装置包括:第一分词模块201、词典更新模块202、第二分词模块203和分词结果选取模块204。其中:
第一分词模块201用于利用n阶马尔科夫模型n-gram模型,将待分词文本进行分词,得到第一文本,该n-gram模型用于消除分词歧义,该第一文本包括以空格为间隔的词串;第一分词模块201与词典更新模块202连接,词典更新模块202用于当该第一文本中包括目标词串时,将该目标词串添加至词典,得到更新后的词典,该目标词串为未存储在该词典中的词串,该词典用于存储所有的词串以及对应的估计概率;词典更新模块202与第二分词模块203连接,第二分词模块203用于根据该更新后的词典,利用前向最大匹配分词方法以及后向最大匹配分词方法对该第一文本按预设算法进行分词,分别得到第二文本和第三文本,该前向最大匹配分词方法以及后向最大匹配分词方法用于按照预设策略将第一文本的汉字串与该更新后的词典中的词条进行匹配;第二分词模块203与分词结果选取模块204连接,分词结果选取模块204用于从该第二本文以及该第三文本中选取词长期望和词长方差符合预设规则的文本作为分词结果。
可选地,该分词结果选取模块204包括:第一分词结果选取单元,用于当该第二本文以及该第三文本中选取词长期望不相同时,从该第二本文以及该第三文本中选取词长期望大的文本作为分词结果;或,第二分词结果选取单元,用于当该第二本文以及该第三文本中选取词长期望相同时,从该第二本文以及该第三文本中选取词长方差小的文本作为分词结果。
可选地,该第一分词模块201包括:分词词典生成单元,用于通过对语料库进行分析和计算,生成单字同时出现的频度库,并由该频度库生成分词词典;第一文本选取单元,用于利用Viterbi算法,从该分词词典中所有可能的字符串的分割情况中,选择各个词频率乘积最高的路径,作为该第一文本。
可选地,该分词结果选取模块204还用于当该第一文本中未包括该目标词串,将该第一文本作为分词结果。
本发明实施例提供的装置,通过仅将新词添加至现有词典中,对现有词典进行更新,使得在不增加分词歧义的前提下,灵活地添加新词。
需要说明的是:上述实施例提供的分词装置在分词时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的分词装置与分词方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。