一种基于词频的skip语言模型的训练方法与流程

文档序号:12484921阅读:431来源:国知局
一种基于词频的skip语言模型的训练方法与流程
一种基于词频的skip语言模型的训练方法,用于得到语言模型概率表,涉及机器翻译
技术领域
,尤其涉及于语料库的汉语统计语言模型的训练方法的
技术领域

背景技术
:语言模型是统计机器翻译技术中的基本概率模型之一,用来评价译文句子出现某种词序列的可能性,关系到译文句子(译文词序列)的流畅程度。语言模型概率越高,表示译文越合法、流畅、符合语言规律。假设w1、w2表示两个词汇,p(w2|w1)表示w2出现在w1后面的概率,即词组w1w2可能出现的概率;根据语言学知识,词组“吃面吧”出现的可能性会明显大于词组“吃飞机”,因此语言模型中p(面包|吃)的值应该大于p(飞机|吃)。目前语言模型都是根据马尔科夫假设(MarkovAssumption)进行建模,认为只有前面有限数量(i)个的词汇会影响到下一个词汇的概率,则句子T(词序列w1,w2,w3,...,wm)出现的概率p(T)计算方式为:p(T)=p(w1,w2,w3,...,wm)=p(w1)p(w2|w1)(w3|w1,w2)...p(wm|w1,w2,w3,...,wm-1)≈p(w1)p(w2|w1)(w3|w1,w2)...p(wm|wm-i,wm-i+1,...,wm-1)其中p(wm|wm-i,wm-i+1,...,wm-1)计算方式为:p(wm|wm-i,wm-i+1,...,wm-1)=count(wm-i,wm-i+1,...,wm-1)Σwcount(wm-i,wm-i+1,...,wm-2,w)]]>分子count(wm-i,wm-i+1,...,wm-1)是词序列wm-i,wm-i+1,...,wm-1在语料中出现的次数,分母count(wm-i,wm-i+1,...,wm-2,w)表示词序列(wm-i,wm-i+1,...,wm-2+任意词汇w)在语料中出现的次数。当前统计语言模型的使用面临的主要问题是数据稀疏造成的OOV(outofvocabulary)问题,这是统计模型中经常会遇到的问题,一般是由数据量的不足造成的。对于自然语言处理来说,已有的语料库虽然已经很庞大,但是与历史上人类产生的语言量是无法相比的,语料数据不可能涵盖所有可能形成的句子。当使用语言模型来进行这些未记录句子T的概率预测时,很可能会造成预测概率P(T)=0,零概率表示这种语言情况根本不会出现,是错误的。语言模型一般用于机器翻译领域,零概率出现会导致翻译结果不准确。目前存在一些平滑算法对语言模型进行平滑处理,使语言模型对句子的预测中不会出现零概率事件。平滑算法都是对概率计算过程进行补充和改善,但是自然语言的变化各异一般是由语言使用者形成语句时的环境不同造成的,如时间、地点、事物等,这需要对语料本身进行研究和处理。因此,需要一种在语料库方面进行改善的语言模型训练方法,配合已有平滑算法得到质量更高的语言模型。技术实现要素:本发明针对上述不足之处提供了一种基于词频的skip语言模型的训练方法,解决现有技术中由于语料缺乏引起统计语言模型的OOV的问题。为了实现上述目的,本发明采用的技术方案为:一种基于词频的skip语言模型的训练方法,其特征在于,包括以下步骤:S1.收集语料,收集用于语言模型训练的中文句子,形成语料库;S2.中文句子分词:将语料库中每个中文句子切分成一个一个单独的词语,词语之间用空格分隔;S3.生成学习集corpus:将语料库中所有的中文句子生成训练需要的标准输入格式;S4.统计学习集corpus中的词汇和词频,生成中文词汇表wt,即遍历所有语料库中的中文句子,列举其中出现的所有词汇和标点,统计这些词汇和标点的出现数量,形成中文词汇表wt;S5.统计中文词汇表wt中短语和短语出现的次数,生成1-n元中文短语表pt0,即按照n-gram方式,根据选择n值的不同,列举所有n元短语并统计每个短语出现的次数,生成中文短语表pt0;S6.设定选择性跳过标准k,根据中文词汇表wt中的词频统计结果进行k的判断,当词汇的出现次数k不大于i的所有词汇数量之和占全部词汇数量的60%以上时,取k=i;S7.根据步骤S6中k对中文句子进行选择性跳过处理,生成skip短语表pt1;S8.将skip短语表pt1和中文短语表pt0合并,生成新的1-n元中文短语表pt2;S9.根据步骤S8中生成的中文短语表pt2进行语言模型的训练,得到skip-ngram语言模型。进一步,所述步骤S2的具体步骤为:S21.准备中文词典:在互联网上下载尽可能全面的词典文件,读取词典中所有词汇存储到set集合中,取词典中最长词汇的字数L作为最大匹配字数;S22.进行正向最大匹配分词,获得分词结果Rf:读入语料库中的一个中文句子,首先从句首截取L个汉字串,在词典中搜索,如果词典中存在该词汇,分出该词汇,在已分出的词汇后面截取L个汉字串,继续在词典中搜索,直到中文句子被扫描完为止;如果词典中不存在该词汇,去除第L个汉字,对剩下的L-1个汉字串,继续在词典中搜索,直到切分出一个词或剩余字串的长度为零为止;S23.进行逆向最大匹配分词,获得分词结果Rb:读入语料库中的一个中文句子,首先从句尾截取L个汉字串,在词典中搜索,如果词典中存在该词汇,分出该词汇,在已分出的词汇前面截取L个汉字串,继续在词典中搜索,直到中文句子被扫描完为止;如果词典中不存在该词汇,去除第L个汉字,对剩下的L-1个汉字串,继续在词典中搜索,直到切分出一个词或剩余字串的长度为零为止;S24.根据词粒度选取分词结果:依照大颗粒度词越多越好、非词典词和单字词越少越好的原则,选取Rf和Rb中的一个结果作为最终分词结果。进一步,所述步骤S3的具体步骤为:S31.tokenisation:遍历语料库中所有中文句子,在词汇和标点之间插入空格,添加句子起始标志“<s>”和结束标志“</s>”;S32.truecasing:根据词典,将语料库中每句中文句子的字和词组都转换为没有格式的形式;S33.cleaning:设置中文句子最大长度限制,将长语句和空语句删除。进一步,所述步骤S6的具体步骤为:S61.统计中文词汇表wt中出现的总词汇数量s;S62.初始化词汇出现次数i=1;S63.计算词频比例r,即中文词汇表中出现次数不大于i的所有词汇的数量之和count(wi)与s的比例:r=count(wi)s;]]>S64.进行判定:当r≤60%时,i=i+1,转到步骤S62;当r>60%时,取k=i,结束。进一步,所述步骤S7的具体步骤为:S71.首先从步骤S5得到的pt0中抽取所有n元短语;S72.初始化短语表pt1,对所有n元短语中首尾词汇以外的词汇w进行跳过判断,当词汇w的词频Nw满足Nw≥k时,词汇w为高频词汇,不适合被跳过,保留词汇w不做处理;当词汇w的词频Nw满足Nw<k时,词汇w为低频词汇,适合被跳过,则删除词汇w并将剩下的低阶短语,添加到短语表pt1中;S73.按照步骤S71和步骤S72完成所有中间词汇的选择性跳过处理,统计新短语出现的次数,生成新的skip短语表pt1。进一步,所述步骤S9的具体步骤为:S91.定义词汇w的历史计数:N1+(gw)=|{wi:count(wiw)>0}|;N1+(gw)表示语料库中词汇w在多少个词汇后面出现过,符号“g”代表出现在w之前出现过的任意一个词汇;定义词序列的历史计数:N1+(gwi-n+2i)=|{wi-n+1:count(wi-n+1wi-n+2i)>0}|;]]>表示词序列在多少个词汇后面出现过,遍历pt2表中的1-n元短语,利用上述公式计算pt2中每个词汇和短语的历史计数N1+;S92.使用历史计数代替n-gram语言模型训练中的原始计数,定义一元文法的概率计算公式为:pKN(w)=N1+(gw)ΣwiN1+(gwi);]]>推广到n元文法有:pKN(wi|wi-n+2i-1)=N1+(gwi-n+2i)ΣwiN1+(gwi-n+2i-1);]]>利用上述公式计算pt2中每个词汇和短语的计数概率;S93.根据步骤S91和步骤S92,利用Kneser-Ney平滑算法公式对pt2中每个词汇和短语进行概率计算,即计算语言模型的概率,得到语言模型概率表,即语言模型文件;计算语言模型的概率的公式如下:pKN(wi|wi-n+1i-1)=max{c(wi-n+1i)-D,0}Σwic(wi-n+1i)+Dc(wi-n+1i)N1+(wi-n+1i-1g)pKN(wi|wi-n+2i-1)]]>其中D(0≤D≤1)是一个固定数值,计算公式如下:D=N1N1+2N2;]]>其中Ni是精确计数为i的n元短语的个数。与现有技术相比,本发明的优点在于:一、本发明利用对中文句子的词频选择性skip处理,从语料库角度对语言模型进行优化,变相扩大了语料资源,有利于减少数据稀疏问题、帮助模型获取更多语言学知识;二、本发明根据中文词汇表的词频选择跳过标准k进行词汇的选择性删除,从n元短语中抽取包含更多n-1元短语,扩充了原语料库中没有的语言学知识,达到在不扩充原有语料库的情况下扩展了中文语料的效果,这些扩展语料中包含一些不连续的短语信息,对语言知识的训练起到一定的完善作用;三、本发明选取Kneser-Ney作为平滑方法是因为Kneser-Ney在语言模型的训练中有更好的效果,得到的语言模型困惑度更低。附图说明图1为本发明的总体流程图。图2为本发明步骤S6中确定k值的流程图。图3为本发明实施例中词频统计部分结果。图4为本发明采用skip语言模型训练方式对4元组短语进行skip处理后得到的中文词汇表各阶短语数量与处理前各阶短语数量的比较。具体实施方式以下结合说明书附图和具体实例数据对本发明的方法做进一步详细说明。应理解这些实例仅用于说明本发明而不用于限制本发明的范围。skip语言模型训练实例中n=4,对4元组短语(ABCD)进行skip操作生成新的3元组短语(ABD/ACD),从而扩充3阶短语表。如图1为skip语言模型训练的总体流程图,首先通过步骤S1和步骤S2对中文句子进行前期格式处理,生成能够用于统计和训练的标准语料数据学习集;然后通过步骤S3和步骤S4对中文句子进行词汇和短语信息的统计工作,用于skip过程的跳过判断和训练过程中概率的计算;接着通过步骤S5和步骤S7进行skip过程,由原始的1-n元短语表pt0中抽取n阶短语,进行选择性skip操作生成skip短语表pt1,pt0与pt1合并得到用于训练的合并短语表pt2;最后使用IRSTLM工具进行语言模型的训练,选取Kneser-Ney平滑算法进行平滑处理,得到语言模型。具体实施步骤如下:S1.收集语料,收集用于语言模型训练的中文句子,形成语料库。使用网络爬虫技术在新闻网站爬取新闻语料,只保留文本,以句子作为基本单位,各句子之间以回车符分开。本实施例中从爬取数据中提取10万句新闻中文句子作为语言模型训练数据。S2.对步骤S1得到的新闻语料库中的中文句子进行中文分词。首先需要对中文句子进行分词,选用双向匹配法,切分的词语之间用空格分隔。具体包括以下步骤:S21.准备中文词典:在互联网上下载尽可能全面的词典文件,读取词典中所有词汇存储到set集合中,取词典中最长词汇的字数L作为最大匹配字数。S22.进行正向最大匹配分词,获得分词结果Rf。读入语料中的一个句子,首先从句首截取L个汉字串,在词典中搜索:如果词典中存在该词汇,分出该词汇,在后面截取L个汉字串,继续在词典中搜索,直到中文句子被扫描完为止;如果词典中不存在该词汇,去除第L个汉字,对剩下的L-1个汉字串,继续在词典中搜索,直到切分出一个词或剩余字串的长度为零为止;例1,词典中最长词汇的字数L=5,对“国土资源部计划开发商圈”进行正向最大匹配分词:第1轮搜索:“国土资源部”,扫描词典,有该词;第2轮搜索:“计划开发商”,扫描词典,无该词;“计划开发”,扫描词典,无该词;“计划开”,扫描词典,无该词;“计划”,扫描词典,有该词;第3轮搜索:“开发商圈”,扫描词典,无该词;“开发商”,扫描词典,有该词;第4轮搜索:“圈”,扫描词典,有该词;正向最大匹配分词结果Rf为“国土资源部计划开发商圈”。S23.进行逆向最大匹配分词,获得分词果Rb。步骤和S22类似,读入语料中的一个句子,首先从句尾截取L个汉字串,在词典中搜索:如果词典中存在该词汇,分出该词汇,在前面截取L个汉字串,继续在词典中搜索,直到中文句子被扫描完为止;如果词典中不存在该词汇,去除第L个汉字,对剩下的L-1个汉字串,继续在词典中搜索,直到切分出一个词或剩余字串的长度为零为止;例如,词典中最长词汇的字数L=5,对“国土资源部计划开发商圈”进行逆向最大匹配分词,得到结果Rb为“国土资源部计划开发商圈”。S24.根据词粒度选取分词结果。依照大颗粒度词越多越好、非词典词和单字词越少越好的原则,选取Rf和Rb中一个结果作为最终分词结果。例如,根据前两步例子中结果Rf和Rb,二者词汇数量相同,Rb中单词词少,所以选取Rb为最后总分词结果。S3.对步骤S2分词后数据进行规范化处理,生成学习集corpus。生成训练需要的标准输入格式。具体步骤如下:S31.tokenisation:遍历中文句子中所有句子,在词汇和标点之间插入空格,添加句子起始标志“<s>”和结束标志“</s>”。S32.truecasing:根据词典,将语料库中每句中文句子的字和词组都转换为没有格式的形式,例如将所有大写字母转换为小写字母。S33.cleaning:设置中文句子最大长度限制,将长语句和空语句删除。这里设置lengthMax=100,遍历语料库,将所有词汇数量大于100的句子删掉。例2:以语料库中某个句子为例,步骤S2分词后的句子:“地处西北边陲的伊犁是我国对外开放的重要窗口,改革开放以来,伊犁经济获得长足发展,人民生活水平迅速提高。”对例句进行步骤S3处理,得到的结果是:“<s>地处西北边陲的伊犁是我国对外开放的重要窗口,改革开放以来,伊犁经济获得长足发展,人民生活水平迅速提高。</s>”。S4.统计学习集corpus中的词汇和词频,生成中文词汇表wt。遍历步骤S3处理后句子,每遇到一个新词汇a,将a写进中文词汇表中,初始化出现次数c为1;遍历到出现过的词汇时,操作对应词汇的出现次数执行c=c+1操作,直至遍历整个语料结束。然后按照出现数量降序排序,形成中文词汇表wt。经过步骤S4对步骤S3结果进行词频统计,得到中文词汇表wt的部分内容如下:的9260,3624……系统2424程序1619作用608……伯仲之间1会计师事务所1S5.统计中文词汇表wt中短语和短语出现的次数,生成1-4元短语表pt0。n元表示词组中有n个词汇,例如“今天”是1元短语,“今天天气”是2元短语,“今天天气晴朗”是3元短语。pt0中1元短语表和步骤S4的中文词汇表wt相同,即将单个词汇看成短语;设起始词汇为w1,分别添加w1后面1个、2个、3个词汇,组成2元、3元和4元词组作为短语;遍历语料库,对每个词汇上述操作,找到所有n(n≤4)元短语,并统计出现次数,统计过程和步骤S4中词汇词频统计方法相同;列举所有n元短语并统计每个短语出现的次数,生成中文短语表pt0。S6.设定选择性跳过的选择标准k。根据步骤S3中中文词汇表wt的词频统计结果进行k的判断,当词汇的出现次数k不大于i的所有词汇数量之和占全部词汇数量的60%以上时,取k=i。图2展示了k值选取的流程,具体步骤如下:S61.统计中文词汇表wt中出现的总词汇数量s。S62.初始化词汇出现次数i=1S63.计算词频比例r,即词汇表中出现次数不大于i的所有词汇的数量之和count(wi)与s的比例:r=count(wi)s;]]>S64.进行判定,当r≤60%时,i=i+1,转到步骤S62;当r>60%时,取k=i,结束。以本实施例中10万句语料为例:1)词汇总数s=53710;2)i=1时,count(w1)=21015,计算3)i=2,count(w2)=28226,计算r=52.6%<60%;4)i=3,count(w3)=31688,计算r=59.0%<60%;5)i=4,count(w3)=34905,计算r=65.0%>60%,取k=i。;满足r>60%条件是k=4,代表词频在4及以上的词语占词语总量的40%,已经能够排除大部分稀少词汇。k的选取决定了扩展后语料的质量,对skip模型的建立很重要,将词频作为判定标准的依据为:根据句子主干词汇的分析经验和一元组的词频统计发现:大多数能作为主语、谓语、宾语等常用句子主要成分的词汇的词频都比较大,这些词语作为句子主干不应该在抽取过程中被跳过;一些专有名词和修饰程度的量词等词语往往词频很小,也正是造成数据稀疏问题的重要原因。根据本实施例,图3展示了本实施例中10万句语料的词汇统计的部分信息,可见词频较小的词汇一般都是很专有的词汇或者成语,容易造成数据稀疏问题。10万句中共获得中文词汇53710个,可以看出各段词频的词汇特点如下:1.出现次数在100次以上的词有2718个,占词汇总量的5%,出现20次以上的词有8168个,占词汇总量的15.2%,这些词大部分是新闻中经常用到的词(如图3a),数量最多的词“的”出现134334次;2.只出现过1次的词有21015个,占词汇总量的39%;出现3次以下的词共31688个,占词汇总量的59%;这些大部分是名称、时间等词语(如图3b,图中左边数字是词语的序列,右边数字是词频)。S7.根据步骤S6中的k=4对中文语料进行选择性跳过处理,生成skip短语表pt1。即初始化pt1;待跳词汇w选择n阶短语中首尾两词之外的中间词汇,当词汇w的词频大于k时,被判定为不适合被跳过,保留词汇w不做处理;当词汇w的词频小于k时,被判定为适合被跳过,跳过词汇w并将剩下的低阶短语添加到短语表pt1中;按照这个步骤完成所有中间词汇的选择性跳过处理,统计新短语出现的次数,生成新的skip短语表pt1。S71.首先从步骤S5得到的pt0中抽取所有4元短语(ABCD);S72.对所有4元短语中首尾词汇(A和D)以外的词汇w(B和C)进行跳过判断:当词汇w的词频Nw满足Nw≥k时,词汇w为高频词汇,不适合被跳过,保留词汇w不做处理;当词汇w的词频Nw满足Nw<k时,词汇w为低频词汇,适合被跳过,则删除词汇w并将剩下的低阶短语(ABD或ACD)添加到短语表pt1中;S73.按照步骤S71和步骤S72完成所有中间词汇的选择性跳过处理,统计新短语出现的次数,生成新的skip短语表pt1。以句子“国土资源部计划开发商圈”为例,假设其中各个词的词频如下,生成skip短语表pt1的过程为:1)首先按照步骤S5生成中文短语表pt0;pt0中的4元短语(ABCD)为:{国土资源部计划开发商圈};pt0中的3元短语(ABC和BCD)为:{国土资源部计划开发}、{计划开发商圈};2)对词B“计划”进行skip判断,NB=3<k=4,“计划”是低频词汇,可以被skip;3)对词C“开发”进行skip判断,NC=5>k=4,“开发”是高频词汇,不能被skip,删除“开发”,将{国土资源部开发商圈}(ACD)添加到pt1中;skip操作后生成的pt1包含新3元短语:{国土资源部开发商圈}。S8.将S5生成的pt0和S7生成的pt1合并,生成合并短语表pt2。将pt1中n-1元短语合并到pt0中,重新统计短语频数,组成新短语表pt2,其中包含了skip之后的更多的语言信息,对3元短语进行了补充,变相扩大了语料库的规模。图4展示了进行skip操作后语料库1-4元短语的数量变化,本实施例中对4元短语中的B和C词汇进行选择性跳过,得到的ABD或ACD短语添加到pt0中3元短语中,3元短语数量由253955增加到395743。S9.根据步骤S8中生成的合并短语表pt2进行语言模型的训练,生成语言模型文件。训练可采用开源语言模型工具包IRSTLM,平滑方式采用Kneser-Ney平滑算法,执行语言模型时设置参数order为4,参数s为improved-kneser-ney。具体训练步骤如下:S91.定义词w的历史计数:N1+(gw)=|{wi:count(wiw)>0}|;N1+(gw)表示语料库中词汇w在多少个词汇后面出现过,符号“g”代表出现在w之前出现过的任意一个词汇;定义词序列的历史计数:N1+(gwi-n+2i)=|{wi-n+1:count(wi-n+1wi-n+2i)>0}|;]]>表示词序列在多少个词汇后面出现过。遍历pt2表中的1-n元短语,利用上述公式计算pt2中每个词汇和短语的历史计数N1+。S92.使用历史计数代替n-gram语言模型训练中的原始计数,定义一元文法的概率计算公式为:pKN(w)=N1+(gw)ΣwiN1+(gwi);]]>推广到n元文法有:pKN(wi|wi-n+2i-1)=N1+(gwi-n+2i)ΣwiN1+(gwi-n+2i-1);]]>利用上述公式计算pt2中每个词汇和短语的计数概率。S93.有了步骤S91和步骤S92的准备,根据Kneser-Ney平滑算法公式:pKN(wi|wi-n+1i-1)=max{c(wi-n+1i)-D,0}Σwic(wi-n+1i)+Dc(wi-n+1i)N1+(wi-n+1i-1g)pKN(wi|wi-n+2i-1);]]>计算语言模型的概率。其中D(0≤D≤1)是一个固定数值,c为count,这里由下式计算:D=N1N1+2N2;]]>其中Ni是精确计数为i的n元短语的个数。按照上述Kneser-Ney平滑算法公式对pt2中每个词汇和短语进行计算,得到语言模型概率表,即语言模型文件。本发明在传统n-gram语言模型训练的基础上,提出一种基于词频的skip语言模型的训练方法。该方法根据中文词汇表的词频选择跳过标准k进行词汇的选择性删除,从n元短语中抽取包含更多n-1元短语,扩充了原语料库中没有的语言学知识,达到在不扩充原有语料库的情况下扩展了中文语料的效果,这些扩展语料中包含一些不连续的短语信息,对语言知识的训练起到一定的完善作用。本发明选取Kneser-Ney作为平滑方法是因为Kneser-Ney在n=4时语言模型的训练中有更好的效果,得到的语言模型困惑度更低,是目前适用最广泛的平滑方法。这里所述的实例为了帮助读者理解本发明的思想和愿意。应别理解为发明的保护范围并不是局限于以上的实例和陈述。凡是根据以上的描述进行相应的可能的替换和改变,均被认为是本发明权利保护范围之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1