一种基于拼音相同或相似的中文文本纠错方法转让专利

申请号 : CN202010496115.X

文献号 : CN111753529B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 何卓威

申请人 : 杭州云嘉云计算有限公司

摘要 :

本发明提出一种基于拼音相同或相似的中文文本纠错方法,包括以下步骤:S1,在传统ngrams语言模型基础上做调整,建立粒度为单个中文字符的中文字结构语言模型;S2,对待纠错语句进行候选处理,生成候选序列;S3,基于混淆集和MAD算法对候选序列进行检错,获得待纠错语句候选序列;S4,基于中文字结构语言模型的最大后验概率,使用双选Viterbi算法解码输出纠错结果。本发明相对于传统方法词粒度准确率较高,纠错速度较传统方法快。

权利要求 :

1.一种基于拼音相同或相似的中文文本纠错方法,其特征是,包括以下步骤:S1,在传统ngrams语言模型基础上做调整,建立粒度为单个中文字符的中文字结构语言模型;

S2,对待纠错语句进行候选处理,生成候选序列;

S3,基于混淆集和MAD算法对候选序列进行检错,获得待纠错语句候选序列;

S4,基于中文字结构语言模型的最大后验概率,使用双选Viterbi算法解码输出纠错结果;

所述步骤S3具体包括:

混淆集检错:

S301,判断待纠错语句中是否有自定义错误集,如果有,则直接输出纠错结果;

S302,判断待纠错语句分词后,词频异常的词组,作为错误集,进入待纠错语句候选序列;

MAD算法检错:

S311,将待纠错语句分别按长度2、3动态分为两组;

S312,计算两组分词语言模型概率;

S313,按分组长度加权平均,得出两组加权概率值;

S314,将两组加权概率值分别取平均值,然后按照MAD算法检错离群值,所述离群值即为错误位置;

所述步骤S314具体包括:

(1)计算所有观察点的中位数median(X);

(2)计算每个观察点与中位数的绝对偏差值abs(X‑median(X));

(3)计算(2)中的绝对偏差值的中位数,即MAD = median(abs(X ‑ median(X)));

(4)将(2)得到的值除以(3)的值,得到一组基于MAD的所有观察点的离中心的距离值abs(X ‑ median(X))/MAD;

(5)通过设定阈值,超过阈值的则认为是离群值,即错误位置。

2.根据权利要求1所述的一种基于拼音相同或相似的中文文本纠错方法,其特征是,所述步骤S1具体包括:

S101,语料预处理并生成分词文件;

S102,分词文件转换成拼音词组,再将拼音词组拆成字结构,所有字结构组成字结构文本;

S103,使用最终转换成字结构的文本生成粒度为单个中文字符的中文字结构语言模型。

3.根据权利要求2所述的一种基于拼音相同或相似的中文文本纠错方法,其特征是,所述步骤S1具体包括:

S104,将中文字结构语言模型升级为类语言模型,把类似的词组成词类,然后计算N‑gram统计量的时候使用词类标签来替代词。

4.根据权利要求2所述的一种基于拼音相同或相似的中文文本纠错方法,其特征是,所述步骤S101具体包括:

S111,文本语料统一半角格式、去除标点、分行处理;

S112,中文数字转换为阿拉伯数字;

S113,使用中文jieba分词库进行分词,获得分词文件。

5.根据权利要求1所述的一种基于拼音相同或相似的中文文本纠错方法,其特征是,所述步骤S2具体包括:根据同音或音似规则,一句话逐字生成候选序列,每字一层,平均每层候选个数在100‑150之间,优化常见多音字拼音,将少量、不常用发音剔除。

6.根据权利要求1所述的一种基于拼音相同或相似的中文文本纠错方法,其特征是,所述双选viterbi算法,使用beamsearch算法联合viterbi算法具体包括:S401,设置BeamSize1和BeamSize2两个参数进行约束,其中BeamSize1< BeamSize2;

S402,当前候选层使用beamsearch算法按路径获取BeamSize1个最大概率路径;

S403,排除BeamSize1个路径已包含的节点,从剩余的节点中按viterbi算法依节点补位BeamSize2‑ BeamSize1个节点,即每层BeamSize2个最大概率路径;

S404,利用最大概率路径输出纠错结果。

说明书 :

一种基于拼音相同或相似的中文文本纠错方法

技术领域

[0001] 本发明涉及文本纠错技术领域,尤其是涉及一种基于拼音相同或相似的中文文本纠错方法。

背景技术

[0002] 文本纠错适用很多领域,如人工打字辅助:可在用户输入后自动检查并提示错别字情况。从而降低因疏忽导致的错误表述,有效提升用户输入效率和质量;搜索纠错领域:
针对电商、搜索引擎等搜索接口,用户经常在搜索时输入错误,通过分析搜索项的形式和特
征,可自动纠正搜索项并提示用户,进而给出更符合用户需求的搜索结果,有效屏蔽错别字
对用户真实需求的影响;语音识别或机器人对话领域:将文本纠错嵌入对话系统中,可自动
修正语音识别转文本过程中的错别字,向对话理解系统传递纠错后的正确语句,明显提高
语音识别准确率,使产品整体体验更佳。现有技术中,对于音似词替换错误,需要进行查错
和纠错处理。通常是基于混淆集进行查错和纠错,并对需要修改的范围逐字改正,而混淆集
的建立需要花费大量时间和人工进行维护,成本高且使用不便。现有基于统计方法的纠错
语言模型往往基于词粒度,即以词语为分析单位,通过考察词与词之间的关系,来进行纠
错。但是纠错分字粒度、词粒度纠错,传统方法字粒度准确率较低,需要换个思路重新建模。

发明内容

[0003] 针对混淆集的建立需要花费大量时间和人工进行维护,成本高且使用不便以及传统方法字粒度准确率较低的问题,本发明提出了一种基于拼音相同或相似的中文文本纠错
方法,建立粒度为单个中文字符的中文字结构语言模型,利用混淆集和MAD算法对候选序列
进行检错,并使用双选Viterbi算法解码输出纠错结果。
[0004] 为实现上述目的,本发明提供以下的技术方案:
[0005] 一种基于拼音相同或相似的中文文本纠错方法,包括以下步骤:
[0006] S1,在传统ngrams语言模型基础上做调整,建立粒度为单个中文字符的中文字结构语言模型;
[0007] S2,对待纠错语句进行候选处理,生成候选序列;
[0008] S3,基于混淆集和MAD算法对候选序列进行检错,获得待纠错语句候选序列;
[0009] S4,基于中文字结构语言模型的最大后验概率,使用双选Viterbi算法解码输出纠错结果。
[0010] 建立粒度为单个中文字符的中文字结构语言模型,基于字粒度,即以单个字为分析单位,通过考察字与字之间的关系,来进行纠错,相对于传统方法词粒度准确率较高。基
于混淆集和MAD算法对候选序列进行检错,前期准备工作需求人力较少,只需垂直领域文本
语料即可,不需要花费大量时间和人工进行维护,成本低且使用方便。使用双选Viterbi算
法解码输出纠错结果,最大可能筛选最大概率路径纠错速度较传统方法快而且准确。
[0011] 作为优选,所述步骤S1具体包括:
[0012] S101,语料预处理并生成分词文件;
[0013] S102,分词文件转换成拼音词组,再将拼音词组拆成字结构,所有字结构组成字结构文本;
[0014] S103,使用最终转换成字结构的文本生成粒度为单个中文字符的中文字结构语言模型。
[0015] 建立粒度为单个中文字符的中文字结构语言模型,基于字粒度,即以单个字为分析单位,通过考察字与字之间的关系,来进行纠错,相对于传统方法词粒度准确率较高。
[0016] 作为优选,所述步骤S1具体包括:
[0017] S104,将中文字结构语言模型升级为类语言模型,把类似的词组成词类,然后计算N‑gram统计量的时候使用词类标签来替代词。
[0018] 本中文字结构语言模型是基于ngrams模型建立的,ngrams模型较为稀疏,即把所有的词都看成完全不同的东西。对于某一个词,模型需要足够多的训练数据才能比较准确
的估计其概率,考虑词的这种相似性,通过把常见不易错的词组组成词类,可以更好的排查
语句剩余部分是否有错,并提高纠错正确率。
[0019] 作为优选,所述步骤S101具体包括:
[0020] S111,文本语料统一半角格式、去除标点、分行处理;
[0021] S112,中文数字转换为阿拉伯数字;
[0022] S113,使用中文jieba分词库进行分词,获得分词文件。
[0023] 本发明将语料中对文本纠错无意义的纯数字转化为通配符,即不成词组的大写中文数字和阿拉伯数字转化为一个词类,提高语言模型泛化能力以及纠错效率。
[0024] 作为优选,所述步骤S2具体包括:根据同音或音似规则,一句话逐字生成候选序列,每字一层,平均每层候选个数在100‑150之间,优化常见多音字拼音,将少量、不常用发
音剔除,从而提高语言模型泛化能力以及纠错效率。
[0025] 作为优选,所述步骤S3具体包括:
[0026] 混淆集检错:
[0027] S301,判断待纠错语句中是否有自定义错误集,如果有,则直接输出纠错结果;
[0028] S302,判断待纠错语句分词后,词频异常的词组,作为错误集,进入待纠错语句候选序列;
[0029] MAD算法检错:
[0030] S311,将待纠错语句分别按长度2、3动态分为两组;
[0031] S312,计算两组分词语言模型概率;
[0032] S313,按分组长度加权平均,得出两组加权概率值;
[0033] S314,将两组加权概率值分别取平均值,然后按照MAD算法检错离群值,所述离群值即为错误位置。
[0034] 作为优选,所述步骤S314具体包括:
[0035] (1)计算所有观察点的中位数median(X);
[0036] (2)计算每个观察点与中位数的绝对偏差值abs(X‑median(X));
[0037] (3)计算(2)中的绝对偏差值的中位数,即MAD=median(abs(X‑median(X)));
[0038] (4)将(2)得到的值除以(3)的值,得到一组基于MAD的所有观察点的离中心的距离值abs(X‑median(X))/MAD.
[0039] (5)通过设定阈值,超过阈值的则认为是离群值,即错误位置。
[0040] 作为优选,所述双选viterbi算法,使用beamsearch算法联合viterbi算法具体包括:
[0041] S401,设置BeamSize1和BeamSize2两个参数进行约束,其中BeamSize1
[0042] S402,当前候选层,优先使用beamsearch算法按路径获取BeamSize1个最大概率路径;
[0043] S403,排除BeamSize1个路径已包含的节点,从剩余的节点中按viterbi算法依节点补位BeamSize2‑BeamSize1个节点,及每层BeamSize2个最大概率路径;
[0044] S404,利用最大概率路径输出纠错结果。
[0045] viterbi算法较beamsearch算法更接近真实最大概率路径,但是针对ngram语言模型,本发明使用的是5元ngram语言模型,联合viterbi算法使用时,对于总长大于5的待纠错
语句,单节点只取最大概率路径,在全局不一定是最大概率路径。
[0046] 为优化这个问题,本发明使用beamsearch算法联合viterbi算法,命名双选viterbi算法,类似beamsearch算法,需设置BeamSize1、BeamSize2两个参数(BeamSize1<
BeamSize2)约束,即当前候选层,优先使用beamsearch算法按路径获取BeamSize1个最大概
率路径,然后排除BeamSize1个路径已包含的节点,从剩余的节点中按viterbi算法依节点
补位BeamSize2‑BeamSize1个节点,及每层BeamSize2个最大概率路径,双选viterbi算法更
接近真实概率路径,最大可能筛选最大概率路径纠错速度较传统方法快而且准确
[0047] 本发明有以下有益效果:建立粒度为单个中文字符的中文字结构语言模型,基于字粒度,即以单个字为分析单位,通过考察字与字之间的关系,来进行纠错,相对于传统方
法词粒度准确率较高。基于混淆集和MAD算法对候选序列进行检错,前期准备工作需求人力
较少,只需垂直领域文本语料即可,不需要花费大量时间和人工进行维护,成本低且使用方
便。使用双选Viterbi算法解码输出纠错结果,最大可能筛选最大概率路径纠错速度较传统
方法快而且准确。

附图说明

[0048] 图1是本实施例的方法流程图;
[0049] 图2是本实施例的viterbi算法流程图;
[0050] 图3是本实施例的Beamsearch算法流程图。

具体实施方式

[0051] 实施例:
[0052] 本实施例提出一种基于拼音相同或相似的中文文本纠错方法,参考图1,包括以下步骤:
[0053] S1,在传统ngrams语言模型基础上做调整,建立粒度为单个中文字符的中文字结构语言模型;
[0054] 需要经过文本语料、分词文本、转换为字结构、生成统计计数文件再到生成语言模型这些步骤,使字粒度语言模型保留了词粒度语言模型的优点,便于语句逐字检错。
[0055] 字结构说明:由汉字+拼音+词语位置编号组成,其中位置编号有6种,单个字编号为s,两字词语编号为b2、e2,三字以上词语编号为b、m、e。
[0056] 步骤S1具体包括:
[0057] S101,语料预处理并生成分词文件;
[0058] 步骤S101具体包括:
[0059] S111,文本语料统一半角格式、去除标点、分行处理;
[0060] S112,中文数字转换为阿拉伯数字;
[0061] S113,使用中文jieba分词库进行分词,获得分词文件。
[0062] 本发明将语料中对文本纠错无意义的纯数字转化为通配符,即不成词组的大写中文数字和阿拉伯数字转化为一个词类,提高语言模型泛化能力以及纠错效率。
[0063] 示例:
[0064] 语料:你所说的是不是事实?
[0065] 分词:你所说的是不是事实
[0066] S102,分词文件转换成拼音词组,再将拼音词组拆成字结构,所有字结构组成字结构文本;
[0067] 示例:你所说的是不是事实
[0068] 转换拼音词组:你_ni3_s所_suo3_b2说_shuo1_e2的_de_s是_shi4_b不_bu4_m是_shi4_e事_shi4_b2实_shi2_e2
[0069] 拆成字结构:你_ni3_s所_suo3_b2说_shuo1_e2的_de_s是_shi4_b不_bu4_m是_shi4_e事_shi4_b2实_shi2_e2
[0070] S103,使用最终转换成字结构的文本生成粒度为单个中文字符的中文字结构语言模型。
[0071] S104,将中文字结构语言模型升级为类语言模型,把类似的词组成词类,然后计算N‑gram统计量的时候使用词类标签来替代词。
[0072] 建立粒度为单个中文字符的中文字结构语言模型,基于字粒度,即以单个字为分析单位,通过考察字与字之间的关系,来进行纠错,相对于传统方法词粒度准确率较高。
[0073] 本中文字结构语言模型是基于ngrams模型建立的,ngrams模型较为稀疏,即把所有的词都看成完全不同的东西。对于某一个词,模型需要足够多的训练数据才能比较准确
的估计其概率,考虑词的这种相似性,通过把常见不易错的词组组成词类,可以更好的排查
语句剩余部分是否有错,并提高纠错正确率。
[0074] S2,对待纠错语句进行候选处理,生成候选序列;
[0075] 步骤S2具体包括:根据同音或音似规则,一句话逐字生成候选序列,每字一层,平均每层候选个数在100‑150之间,优化常见多音字拼音,将少量、不常用发音剔除,从而提高
语言模型泛化能力以及纠错效率。
[0076] 鉴于中文多音字有1000个左右,优化常见多音字拼音,将少量、不常用发音剔除
[0077] 例如“上”字发音有shǎng、shàng,属多音字,但是shǎng在日常中很少使用,只保留shàng拼音即可。
[0078] S3,基于混淆集和MAD算法对候选序列进行检错,获得待纠错语句候选序列;
[0079] 步骤S3具体包括:
[0080] 混淆集检错:
[0081] S301,判断待纠错语句中是否有自定义错误集,如果有,则直接输出纠错结果;
[0082] S302,判断待纠错语句分词后,词频异常的词组,作为错误集,进入待纠错语句候选序列;
[0083] MAD算法检错:
[0084] S311,将待纠错语句分别按长度2、3动态分为两组;
[0085] 示例:
[0086] 假设一句话:abcdefg
[0087] 则分为【ab、ab、bc、cd、de、ef、fg、fg】、【abc、abc、abc、bcd、cde、def、efg、efg、efg】两组;
[0088] S312,计算两组分词语言模型概率;
[0089] S313,按分组长度加权平均,得出两组加权概率值;
[0090] 【ab、(ab+bc)/2、(bc+cd)/2、(cd+de)/2、(de+ef)/2、(ef+fg)/2、fg】、
[0091] 【abc、(abc+abc+bcd)/3、(abc+bcd+cde)/3、(bcd+cde+def)/3、(cde+def+efg)/3、(def+efg+efg)/3、efg】
[0092] S314,将两组加权概率值分别取平均值,然后按照MAD算法检错离群值,离群值即为错误位置。
[0093] 步骤S314具体包括:
[0094] (1)计算所有观察点的中位数median(X);
[0095] (2)计算每个观察点与中位数的绝对偏差值abs(X‑median(X));
[0096] (3)计算(2)中的绝对偏差值的中位数,即MAD=median(abs(X‑median(X)));
[0097] (4)将(2)得到的值除以(3)的值,得到一组基于MAD的所有观察点的离中心的距离值abs(X‑median(X))/MAD。
[0098] (5)通过设定阈值,超过阈值的则认为是离群值,即错误位置。
[0099] S4,基于中文字结构语言模型的最大后验概率,使用双选Viterbi算法解码输出纠错结果。
[0100] 双选viterbi算法,使用beamsearch算法联合viterbi算法具体包括:
[0101] S401,设置BeamSize1和BeamSize2两个参数进行约束,其中BeamSize1
[0102] S402,当前候选层,优先使用beamsearch算法按路径获取BeamSize1个最大概率路径;
[0103] S403,排除BeamSize1个路径已包含的节点,从剩余的节点中按viterbi算法依节点补位BeamSize2‑BeamSize1个节点,及每层BeamSize2个最大概率路径;
[0104] S404,利用最大概率路径输出纠错结果。
[0105] 参考图1,viterbi算法是从候选动态网络空间中筛选出一条或多条最优路径作为纠错结果,其在每一步的所有选择都保存了前续所有步骤到当前步骤当前选择的最小总代
价(或者最大价值)以及当前代价的情况下前继步骤的选择。依次计算完所有步骤后,通过
回溯的方法找到最优选择路径。假设一句话长度为3,对应每个位置候选为3个,实际平均
110个,而且每个位置候选个数可以不相同,这里只通俗讲解viterbi算法,从候选层a→候
选层b时,以b2节点为例,a1b2、a2b2、a3b2概率分别为0.5、0.2、0.1,b2节点当前最优路径即
为最大概率路径a1b2,同理可得到b1、b3节点最优路径,然后再从候选层b→候选层c,以c2
节点为例,b1c2、b2c2、b3c2概率分别为0.2、0.3、0.1,c2节点当前最优路径即为最大概率路
径a1b2c2,同理可得c1、c3最大概率路径,通过排序即可得到全局最大概率路径,即为纠错
结果。
[0106] 参考图2,Beamsearch算法属于贪心算法思想,为了减少搜索所占用的空间和时间,在每一步深度扩展的时候,剪掉一些质量比较差的结点,保留下一些质量较高的结点,
Beamsearch算法需要设置BeamSize,通常远小于当前候选层个数,图2中仅示例,BeamSize
设置为2,在候选层a,a1、a2、a3概率分别为0.5、0.3、0.1,则候选层a保留最大概率BeamSize
个数节点,即a1、a2,从候选层a→候选层b时,分别获取a1b1、a1b2、a1b3、a2b1、a2b2、a2b3的
概率为0.4、0.3、0.2、0.2、0.2、0.1,则候选层b保留最大概率2个节点,即为a1b1、a1b2,同理
可得候选层c每个节点的概率,通过排序即可得到全局最大概率路径,即为纠错结果。
[0107] viterbi算法较beamsearch算法更接近真实最大概率路径,但是针对ngram语言模型,本发明使用的是5元ngram语言模型,联合viterbi算法使用时,对于总长大于5的待纠错
语句,单节点只取最大概率路径,在全局不一定是最大概率路径。为优化这个问题,本发明
使用beamsearch算法联合viterbi算法,命名双选viterbi算法,类似beamsearch算法,需设
置BeamSize1、BeamSize2两个参数(BeamSize1beamsearch算法按路径获取BeamSize1个最大概率路径,然后排除BeamSize1个路径已包含
的节点,从剩余的节点中按viterbi算法依节点补位BeamSize2‑BeamSize1个节点,及每层
BeamSize2个最大概率路径,双选viterbi算法更接近真实概率路径,最大可能筛选最大概
率路径纠错速度较传统方法快而且准确。
[0108] 本发明有以下有益效果:建立粒度为单个中文字符的中文字结构语言模型,基于字粒度,即以单个字为分析单位,通过考察字与字之间的关系,来进行纠错,相对于传统方
法词粒度准确率较高。基于混淆集和MAD算法对候选序列进行检错,前期准备工作需求人力
较少,只需垂直领域文本语料即可,不需要花费大量时间和人工进行维护,成本低且使用方
便。使用双选Viterbi算法解码输出纠错结果,最大可能筛选最大概率路径纠错速度较传统
方法快而且准确。