发明内容
有鉴于此,本发明的主要目的在于提出一种语言建模方法,能够满足不同用户对汉语输入的需求、提高识别准确率。
本发明的另一目的在于提出一种语言建模装置,能够满足不同用户对汉语输入的需求、提高识别准确率。
为达到上述目的,本发明提供了一种语言建模方法,该方法包括:
根据预先建立的标准Ngram语言模型,分别计算用户输入中各词语的标准条件概率;
按照预先设置的基于缓存的语言建模策略,根据所述用户输入以及预先缓存的用户输入,分别计算所述用户输入中各词语的缓存条件概率;
根据各词语的标准条件概率以及缓存条件概率计算融合条件概率,基于融合条件概率获取各输出语句的语句概率;
选择概率最大的输出语句输出并缓存该输出语句。
计算用户输入中第i个词语的缓存条件概率包括:
获取包含该第i个词语及该第i个词语之前预设常数个词语的词语序列在缓存的训练语料中出现的次数ki;
获取包含该第i个词语之前预设常数个词语的词语序列在缓存的训练语料中出现的次数ki-1;
获取该第i个词语的时间函数值;
计算次数ki与次数ki-1的比值,将计算得到的比值与该第i个词语的时间函数值相乘,得到所述用户输入中第i个词语的缓存条件概率。
将预先设置的常数与第i个词语进入缓存区中的时间点与当前用户输入语句的时间点之间的时间间隔进行相比得到所述时间函数值。
计算用户输入中第i个词语的标准条件概率包括:
获取包含该第i个词语及该第i个词语之前预设常数个词语的词语序列在标准Ngram语言模型的训练语料中出现的次数k′i;
获取包含该第i个词语之前预设常数个词语的词语序列在标准Ngram语言模型的训练语料中出现的次数k′i-1;
计算次数k′i与次数k′i-1的比值,将计算得到的比值作为所述用户输入中第i个词语的标准条件概率。
计算第i个词语的融合条件概率包括:
A1、确定取值在0至1之间的插值系数;
A2、计算该插值系数与第i个词语的标准条件概率的乘积;
A3、计算1与该插值系数的差与第i个词语的缓存条件概率的乘积;
A4、计算步骤A2、A3得到的乘积的和,作为第i个词语的融合条件概率。
计算输出语句的语句概率包括:
分别获取语句包含的各词语的融合条件概率;
将获取的各词语的融合条件概率依次相乘得到输出语句的语句概率。
所述缓存的用户输入采用队列的数据结构,所述第i个词语的时间间隔的取值为第i个词语在缓存队列中的位置。
在所述选择概率最大的输出语句输出后,缓存该输出语句前,进一步包括:对输出语句进行修正。
所述用户输入包括:输入法输入、手写识别输入以及语音识别输入。
在所述预先缓存的用户输入为空时,所述用户输入中各词语的缓存条件概率等于该词语的标准条件概率。
一种语言建模装置,该装置包括:标准Ngram语言模型模块、缓存模块、基于缓存的语言建模模块以及混合模型模块,其中,
标准Ngram语言模型模块,用于接收用户的输入,分别计算用户输入中各词语的标准条件概率,输出至混合模型模块;
缓存模块,用于缓存混合模型模块输出的语句;
基于缓存的语言建模模块,用于按照预先设置的基于缓存的语言建模策略,根据用户的输入以及缓存模块缓存的语句,分别计算用户输入中各词语的缓存条件概率,输出至混合模型模块;
混合模型模块,用于根据各词语的标准条件概率以及缓存条件概率计算融合条件概率,基于融合条件概率获取各输出语句的语句概率,选择概率最大的输出语句输出。
所述标准Ngram语言模型模块包括:第一词语序列频次计数单元、第二词语序列频次计数单元以及标准条件概率计算单元,其中,
第一词语序列频次计数单元,用于获取包含该第i个词语及该第i个词语之前预设常数个词语的词语序列在标准Ngram语言模型的训练语料中出现的次数k′i,输出至标准条件概率计算单元;
第二词语序列频次计数单元,用于获取包含该第i个词语之前预设常数个词语的词语序列在标准Ngram语言模型的训练语料中出现的次数k′i-1,输出至标准条件概率计算单元;
标准条件概率计算单元,用于计算次数k′i与次数k′i-1的比值,将计算得到的比值作为所述用户输入中第i个词语的标准条件概率。
所述基于缓存的语言建模模块包括:第三词语序列频次计数单元、第四词语序列频次计数单元、时间函数值获取单元以及缓存条件概率计算单元,其中,
第三词语序列频次计数单元,用于获取包含该第i个词语及该第i个词语之前预设常数个词语的词语序列在缓存的训练语料中出现的次数ki,输出至缓存条件概率计算单元;
第四词语序列频次计数单元,用于获取包含该第i个词语之前预设常数个词语的词语序列在缓存的训练语料中出现的次数ki-1,输出至缓存条件概率计算单元;
时间函数值获取单元,用于获取该第i个词语的时间函数值,输出至缓存条件概率计算单元;
缓存条件概率计算单元,用于计算次数ki与次数ki-1的比值,将计算得到的比值与该第i个词语的时间函数值相乘,得到所述用户输入中第i个词语的缓存条件概率。
所述混合模型模块包括:插值系数存储单元、第一乘积单元、第二乘积单元、融合条件概率计算单元、语句概率计算单元以及输出语句选择单元,其中,
插值系数存储单元,用于存储预先设置在0至1之间的插值系数;
第一乘积单元,用于根据插值系数存储单元存储的插值系数,计算该插值系数与第i个词语的标准条件概率的乘积,输出至融合条件概率计算单元;
第二乘积单元,用于计算1与该插值系数的差与第i个词语的缓存条件概率的乘积,输出至融合条件概率计算单元;
融合条件概率计算单元,用于将接收的与第i个词语相关的乘积进行相加,作为第i个词语的融合条件概率;
语句概率计算单元,用于将融合条件概率计算单元获取的各词语的融合条件概率依次相乘得到输出语句的语句概率;
输出语句选择单元,用于选择语句概率计算单元计算得到的最大语句概率,将该最大语句概率对应的输出语句输出。
由上述的技术方案可见,本发明提供的一种语言建模方法及语言建模装置,根据预先建立的标准Ngram语言模型,分别计算用户输入中各词语的标准条件概率;按照预先设置的基于缓存的语言建模策略,根据用户的输入以及预先缓存的用户输入,分别计算用户输入中各词语的缓存条件概率;根据各词语的标准条件概率以及缓存条件概率计算融合条件概率,基于融合条件概率获取各输出语句的语句概率;选择概率最大的输出语句输出并缓存该输出语句。这样,通过对用户输入进行缓存,建立基于缓存的语言建模模型,使基于缓存的语言建模模型与用户输入的历史信息以及用户输入场景相关,并将标准Ngram语言模型与基于缓存的语言建模模型相结合,对用户输入进行识别,能够满足不同用户对汉语输入的需求,可以提高识别准确率。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步地详细描述。
现有的用于语言建模的标准Ngram语言模型,是单一的模型,无法满足不同用户对语句输入的不同需求,且由于自身没有自动学习机制,无法根据用户的输入习惯进行学习和智能调整,使得对用户输入的识别准确率较低。以下以用户输入为汉语为例进行说明。
实际应用中,通过统计分析发现,用户当前输入的内容(语句)具有短时稳定性的特点,即用户在一段时间内的输入,一般围绕着同一个话题进行或展开的。因此,用户当前的输入内容,在接下来的输入中,存在较大的可能性再次出现、或者出现类似的输入内容。也就是说,无论以何种输入方式,例如,语音、手写或键盘输入,用户在一段时间内的输入是围绕着同一个话题进行的,其当前输入的话题或内容具有“短时稳定性”。
因而,基于上述统计分析,本发明实施例中,针对标准Ngram语言模型的缺点,提出基于缓存的语言建模方法,通过利用缓存数据结构,存储用户当前的输入内容,并对缓存的内容进行数学分析,从而建立用户输入的数学模型,并随着用户的不断输入,通过不断更新缓存数据结构中的内容,实时学习用户的输入习惯、适应用户的输入需求,从而使人机交互变得更加智能,使建立的用户输入数学模型也越来越精确,越来越符合用户的真实输入需求,从而在用户接下来的输入过程中,利用建立的数学模型对用户的输入内容做出更准确的识别,实现动态学习和适应用户的输入需求。
图1为本发明实施例的语言建模方法流程示意图。参见图1,该流程包括:
步骤101,接收用户的输入,根据预先建立的标准Ngram语言模型分别计算用户输入中各词语的条件概率;
本步骤中,用户的输入包括:输入法输入、手写识别输入以及语音识别输入等。其中,
对于输入法输入,键盘处理程序接收用户输入的字符,根据采用的输入法进行识别处理,得到拼音信息,输出至映射器,经过映射器的映射处理,将拼音信息映射为相应的候选汉字,形成用户输入;
对于手写识别输入,预置的笔迹识别程序提取用户手写笔迹的信息,获取笔迹信息,经过映射器的映射处理,将笔迹信息映射为相应的候选汉字,形成用户输入;
对于语音识别输入,预置的音频处理程序对输入的用户音频进行采样、量化、滤波及去噪等处理,获取音频信息,经过映射器的映射处理,将音频信息映射为相应的候选汉字,形成用户输入。
上述示例中,映射器对于拼音信息、笔迹信息以及音频信息的映射处理,具体可参见相关技术文献,在此不再赘述。
根据标准Ngram语言模型分别计算用户输入中各词语的条件概率,与现有技术相同,在此不再赘述。
步骤102,确定预先缓存有用户输入,根据用户的输入以及预先缓存的用户输入,按照预先设置的基于缓存的语言建模策略分别计算用户输入中各词语的条件概率;
本步骤中,如果用户的输入为首次输入,则预先缓存的用户输入为空,计算各输出语句的语句概率与现有技术相同。
预先设置的基于缓存的语言建模策略公式为:
式中,
c(wi-n+1K wi-1wi)表示词语序列wi-n+1K wi-1wi在缓存的训练语料中出现的次数,即包含第i个词语及该第i个词语之前预设常数(n)个词语的词语序列在缓存的训练语料中出现的次数;
c(wi-n+1K wi-2wi-1)表示词语序列wi-n+1K wi-2wi-1在缓存的训练语料中出现的次数,即包含该第i个词语之前预设常数个词语的词语序列在缓存的训练语料中出现的次数;
f(ti)为时间函数。
关于该公式,后续再进行详细描述。
步骤103,根据基于标准Ngram语言模型计算得到的各词语的条件概率以及基于缓存的建模策略计算得到的各词语的条件概率计算融合条件概率,基于融合条件概率获取各输出语句的语句概率;
本步骤中,融合条件概率的计算公式为:
式中,α为插值系数,是一个常数,取值在0和1之间,可以根据实际需要确定;
p(wi/wi-n+1wi-n+2K wi-1)为基于标准Ngram语言模型计算得到的第i个词语wi的标准条件概率。
输出语句的语句概率计算公式为:
步骤104,选择概率最大的输出语句输出并缓存该输出语句。
图2为本发明实施例的语言建模方法具体流程示意图。参见图2,该流程包括:
步骤201,预先建立标准Ngram语言模型;
本步骤中,建立标准Ngram语言模型可以参照现有技术,根据最大似然估计的方法利用训练语料训练出标准Ngram语言模型。
此时,用户还没有进行输入,预先设置的缓存区中缓存的内容为空。
步骤202,接收用户的输入内容,根据预先建立的标准Ngram语言模型对用户的输入内容计算各输出语句的语句概率;
本步骤中,用户可以通过语音、手写字符、光学字符或键盘按键输入内容,当用户开始输入内容时,通过映射器的映射处理,映射为候选文字,再根据标准Ngram语言模型对映射的候选文字进行处理,即进行输入内容的内核计算过程,根据标准Ngram语言模型计算各种可能的输出语句的概率,与现有技术相同,在此不再赘述。
步骤203,选择概率最大的输出语句输出;
本步骤中,根据标准Ngram语言模型计算得到的各种可能的输出语句的概率,从中选择概率最大的输出语句作为用户输出,即将概率最大的输出语句作为识别出的汉语语句,一条汉语语句可以包括一个或多个词语。
步骤204,对输出语句进行修正,并将修正的输出语句输出至预先设置的缓存区进行缓存;
本步骤中,用户可以查验输出语句是否与自身的输入需求相匹配,如果不匹配,则进行修正,例如,用户期望的输入语句为“这是事实”,根据标准Ngram语言模型计算得到的概率最大的输出语句,即输入法对用户输入语句的识别结果为“这是实时”,则与用户期望的输入需求不相匹配,此时用户需要根据输入法的候选将“实时”修正为“事实”,并输出至预先设置的缓存区进行缓存。
实际应用中,缓存区缓存的内容可以以用户为标识。
步骤205,以缓存区的语句为训练语料,建立基于缓存的语言模型;
本步骤中,基于缓存的语言模型是建立在缓存区中存储内容的基础之上。缓存区中的内容是根据用户的最近输入得到的,可以看作是一个用户特定的、小规模的训练语料库。
一方面,基于缓存的语言模型同标准Ngram语言模型一样,通过计算词语和词语之间的条件概率,用以描述用户当前输入的统计特征,汉语语句的概率可以用如下公式计算:
式中,Pcache(S)表示根据缓存区中缓存的内容统计出的汉语语句的概率值;
m为汉语语句包含的词语个数;
wi为汉语语句中包含的第i个词语;
pcache(wi/wi-n+1wi-n+2K wi-1)为词语wi在该汉语语句中的条件概率;
n为预先设置的常数。
另一方面,由前述的统计分析可知,用户的输入具有“短时稳定性”特点,其中,“短时”为表征时间的维度,即用户当前的输入内容仅仅与该用户最近一段时间的输入内容相关,而与该用户很久以前的输入内容无关。也就是说,用户当前输入的内容通常比较稳定,用户当前的输入内容同当前的输入话题相关,经过一段时间,当用户输入的话题转移之后,用户的输入内容与该用户从前的话题关联性不大。因而,对于基于缓存的语言模型来说,用户当前输入的词语,与最近进入缓存区中的词语关系最密切,而与较长时间前进入缓存区的词语的关联度较低。
与标准Ngram语言模型不同的是,缓存区中当前词语的条件概率,不仅与该当前词语的上下文词语相关,而且与该当前词语进入缓存区的时间相关。因而,考虑时间因素,则基于缓存的语言模型中,可以将语句概率计算公式修正为:
可见,与前述的条件概率
相比,修正后的公式中的语句概率
考虑了时间变量参数t,即当前词语w
i出现的条件概率不仅与上下文词语w
i-n+1w
i-n+2K w
i-1相关,而且与w
i上一次进入缓存区的时间相关。
由于基于缓存的语言模型中,每个词语的条件概率不仅与该词语的上下文相关,而且与该词语上一次进入缓存区的时间相关。而标准Ngram语言模型中的最大似然估计方法,只考虑了上下文相关的词汇,没有考虑到时间信息,因而,不能够直接用于训练基于缓存的语言模型所需的参数。为了估计基于缓存的语言模型中词语的条件概率,通过改进最大似然估计方法,在其中加入时间信息,采用如下公式来计算条件概率
的值:
与最大似然估计方法不同的是,上式中,考虑了时间函数f(ti),用以描述时间因素对语句条件概率的影响。定义时间函数f(ti)如下:
式中,ti为时间变量参数,即词语wi进入缓存区中的时间点与当前用户输入语句的时间点之间的时间间隔。
实际应用中,如果缓存区的底层数据结构采用队列来实现,则时间变量参数ti的取值可以为词语wi在缓存队列中的位置。例如,对于首次进入缓存区中的词语,如果该词语wi排列在队列首端,假设位置序号为1,则公式中的该词语wi对应的时间变量参数ti的取值为1。
为预先设置的常数,用以调节时间变量参数信息在条件概率估计时的权重。
由上述公式可知,如果词语w
i进入缓存区的时间点越早,则与当前用户输入语句的时间间隔越长,则时间变量参数t
i的取值越大,使得时间函数f(t
i)的取值越小,从而使得条件概率
的取值也就越小;反之,词语w
i进入缓存区越晚,则与当前用户输入的时间间隔越短,则时间变量参数t
i的取值越小,时间函数f(t
i)的取值越大,从而使得条件概率
的取值越大。
步骤206,接收用户的输入内容,根据预先建立的标准Ngram语言模型以及基于缓存的语言模型对用户的输入内容分别计算各输出语句的语句概率;
本步骤中,在用户接下来的输入过程中,由标准Ngram语言模型和新建立的基于缓存的语言模型共同组成混合模型,由混合模型对用户的输入进行处理,并综合产生处理结果。
本发明实施例中,采用线性插值的方法,将基于缓存的语言模型中的条件概率
与标准Ngram语言模型中的条件概率p(w
i/w
i-n+1w
i-n+2K w
i-1)相融合,计算得出融合后的条件概率p
mixture(w
i/w
i-n+1w
i-n+2Kw
i-1),公式如下:
式中,α为插值系数,是一个常数,取值在0和1之间,用于调节基于缓存的语言模型中的条件概率和标准Ngram语言模型中的条件概率在最终混合模型中概率的比重。
依据上述混合模型,一个包含m个词语的汉语语句S=w1w2K wm的概率可以由以下公式计算得出:
举例来说,如果用户在前输入了“肖镜辉是腾讯员工”,经标准Ngram语言模型识别后,缓存区中缓存了“肖”、“镜”、“辉”三个单字词以及词语“是”、“腾讯员工”,当用户再输入“肖镜辉写了一篇专利”时,基于缓存的语言模型中缓存区存储的“肖”、“镜”、“辉”三个单字词就对当前的输入语句发生作用:如果没有缓存区存储的“肖”、“镜”、“辉”三个单字词,在用户新输入时,“肖镜辉”被转换错误的概率相对就较高,而根据缓存区缓存的信息,“肖镜辉”被正确转换的概率就较高,因而,使得输入的“肖镜辉写了一篇专利”被输入法正确转换出来的概率就较大。
从上述过程中可以看到,基于缓存的语言模型是根据用户的当前输入不断建立起来的,一方面反映了用户当前的输入场景信息,另一方面也反映了用户本身的输入习惯。标准Ngram语言模型结合基于缓存的语言模型,能够有效地对用户的输入场景和输入习惯进行学习和自适应。
步骤207,选择概率最大的输出语句输出;
步骤208,根据输出语句更新缓存区中缓存的语句。
实验表明,同标准Ngram语言模型相比,本发明实施例的基于缓存的语言模型建模方法,对用户输入的识别具有更高的准确率,并且,在此基础之上构建的汉语输入软件具有更高的智能性。
所应说明的是,本发明实施例的语言建模方法,不仅可应用于汉语输入法,也可应用于日语、韩语、柬埔寨等其它亚洲语言的输入法,其语言建模方法与汉语语言建模方法相类似,在此不再赘述。
图3为本发明实施例的语言建模装置结构示意图。参见图3,该装置包括:标准Ngram语言模型模块、缓存模块、基于缓存的语言建模模块以及混合模型模块,其中,
标准Ngram语言模型模块,用于接收用户的输入,分别计算用户输入中各词语的标准条件概率,输出至混合模型模块;
本发明实施例中,标准Ngram语言模型模块计算词语条件概率的公式为:
式中,C(wi-n+1K wi-1wi)表示词语序列wi-n+1K wi-1wi在标准Ngram语言模型的训练语料中出现的次数;
wi为汉语语句中包含的第i个词语;
n为预先设置的常数。
缓存模块,用于缓存混合模型模块输出的语句;
基于缓存的语言建模模块,用于按照预先设置的基于缓存的语言建模策略,根据用户的输入以及缓存模块缓存的语句,分别计算用户输入中各词语的条件概率,输出至混合模型模块;
本发明实施例中,基于缓存的语言建模模块计算词语条件概率的公式为:
式中,c(wi-n+1K wi-1wi)表示词语序列wi-n+1K wi-1wi在缓存的训练语料中出现的次数;
wi为汉语语句中包含的第i个词语;
n为预先设置的常数;
f(ti)为时间函数。
混合模型模块,用于根据各词语的标准条件概率以及缓存条件概率计算融合条件概率,基于融合条件概率获取各输出语句的语句概率,选择概率最大的输出语句输出。
本发明实施例中,融合条件概率的计算公式为:
式中,α为插值系数,是一个常数,取值在0和1之间。
输出语句的语句概率计算公式为:
式中,m为汉语语句包含的词语个数。
其中,
标准Ngram语言模型模块包括:第一词语序列频次计数单元、第二词语序列频次计数单元以及标准条件概率计算单元(图中未示出),其中,
第一词语序列频次计数单元,用于获取包含该第i个词语及该第i个词语之前预设常数个词语的词语序列在标准Ngram语言模型的训练语料中出现的次数k′i,输出至标准条件概率计算单元;
第二词语序列频次计数单元,用于获取包含该第i个词语之前预设常数个词语的词语序列在标准Ngram语言模型的训练语料中出现的次数k′i-1,输出至标准条件概率计算单元;
标准条件概率计算单元,用于计算次数k′i与次数k′i-1的比值,将计算得到的比值作为所述用户输入中第i个词语的标准条件概率。
基于缓存的语言建模模块包括:第三词语序列频次计数单元、第四词语序列频次计数单元、时间函数值获取单元以及缓存条件概率计算单元(图中未示出),其中,
第三词语序列频次计数单元,用于获取包含该第i个词语及该第i个词语之前预设常数个词语的词语序列在缓存的训练语料中出现的次数ki,输出至缓存条件概率计算单元;
第四词语序列频次计数单元,用于获取包含该第i个词语之前预设常数个词语的词语序列在缓存的训练语料中出现的次数ki-1,输出至缓存条件概率计算单元;
时间函数值获取单元,用于获取该第i个词语的时间函数值,输出至缓存条件概率计算单元;
缓存条件概率计算单元,用于计算次数ki与次数ki-1的比值,将计算得到的比值与该第i个词语的时间函数值相乘,得到所述用户输入中第i个词语的缓存条件概率。
混合模型模块包括:插值系数存储单元、第一乘积单元、第二乘积单元、融合条件概率计算单元、语句概率计算单元以及输出语句选择单元(图中未示出),其中,
插值系数存储单元,用于存储预先设置在0至1之间的插值系数;
第一乘积单元,用于根据插值系数存储单元存储的插值系数,计算该插值系数与第i个词语的标准条件概率的乘积,输出至融合条件概率计算单元;
第二乘积单元,用于计算1与该插值系数的差与第i个词语的缓存条件概率的乘积,输出至融合条件概率计算单元;
融合条件概率计算单元,用于将接收的与第i个词语相关的乘积进行相加,作为第i个词语的融合条件概率;
语句概率计算单元,用于将融合条件概率计算单元获取的各词语的融合条件概率依次相乘得到输出语句的语句概率;
输出语句选择单元,用于选择语句概率计算单元计算得到的最大语句概率,将该最大语句概率对应的输出语句输出。
由上述可见,本发明实施例的语言建模方法及语言建模装置,通过对用户输入进行缓存,使得缓存的用户输入与用户输入的历史信息以及用户输入场景相关,这样,基于缓存建立的语言建模模型一方面具有自学习的功能,从而提高了语言模型的智能性;另一方面,通过对每个用户的输入习惯进行学习和适应,也使得人机交互软件能够适应不同用户群体和应用场景。具体来说,具有如下有益技术效果:
一、本发明提高了语言模型的性能,能够满足不同用户对汉语输入的需求、提高预测准确率,进而可以应用到语音识别、手写体字符识别、汉语键盘输入法、光学字符识别等领域,提高相关系统的准确率;
二、在本发明的基础上可以建立基于语言模型的信息检索系统,提高信息检索系统的性能,例如,准确率、召回率等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换以及改进等,均应包含在本发明的保护范围之内。