基于循环神经网络模型的滑动输入方法及系统与流程

文档序号:17241478发布日期:2019-03-30 08:36阅读:263来源:国知局
基于循环神经网络模型的滑动输入方法及系统与流程

本发明涉及电子设备上的文字输入技术领域,具体涉及一种基于循环神经网络模型的滑动输入方法及系统。



背景技术:

滑动输入法是一种让用户在触摸屏上使用手指依次划过想要输入的单词的每一个字母所在的位置,从而完成单词输入的方法。这一过程中用户的手指不需要离开屏幕,也不需要保证滑动时精确的经过每一个字母,所以可以极大的提高用户的输入速度,改善了用户的输入体验。

滑动输入法在改善用户输入体验的同时,也存在一些问题,很多单词的滑动轨迹是非常相似的,同时用户很多时候不能精确的保证滑动轨迹经过目标单词的所有字母,有时候会经过其相邻字母,这样就会有很多单词成为可能的候选词。候选词过多会导致用户输入的一次成功率降低,最差的情况下,如果前三个候选词里面都没有用户的输入单词,用户需要重新输入,导致输入体验变差。为了提高滑动输入法预测结果的准确率,解决办法是构建一个语言模型来辅助输入法引擎来判断哪些词是当前语境下更可能出现的下一个词。

传统的方法是在词典中以bigram的形式保存一个词表,bigram的格式如下:

[previous word 1],[next word 1],[next word 1frequency]

….

[previous word 1],[next word N],[next word N frequency]

[previous word M],[next word K],[next word K frequency]

很显然对于N个单词,如果每个单词包含M个bigram的条目,那么就需要占用N*M的存储空间,实际条件中受限于存储空间的大小,只能保存部分使用频率较高的条目。另一方面,bigram模型会只能依据前一个单词来给出下一个单词的预测,同时忽略了更全面的上下文语境。在实际情况下,语言具有更复杂的相关性,如在输入词组和句子时,若忽略了更全面的上下文语境,经常会给出不准确的预测。



技术实现要素:

为解决上述技术问题,本发明提供了一种可对滑动轨迹预测的结果进行修正、准确率高,且能够减小所占存储空间的基于循环神经网络模型的滑动输入方法及系统。

对于本发明一种基于循环神经网络模型的滑动输入方法,其技术方案为:

将用户t时刻输入的单词转化为词向量;

利用LSTM循环神经网络模型根据t时刻输入的单词的词向量和t-1时刻所述LSTM循环神经网络模型中状态单元的状态记忆计算所述LSTM循环神经网络模型内常用词词表V中所有单词的概率;

比较计算所得的词表V中每个单词的概率值,以概率从小到大的顺序生成候选词列表并显示输出,或

滑动输入一段轨迹,并对滑动轨迹进行识别,生成初始候选词列表;

根据计算所得的所述常用词词表V中所有单词的概率结合先验概率值对所述初始候选词列表进行修正,得到候选词列表的最终预测排序,并按照所述最终预测排序将各个候选词显示输出;

t-1时刻所述LSTM循环神经网络模型中状态单元的状态记忆包括t-1时刻及t-1时刻前输入的所有单词信息。

进一步的,将所述将t时刻输入的单词转化为词向量时,还包括:

当所述t时刻输入的单词为常用单词时,将所述常用单词转化为对应的词向量;

当所述t时刻输入的单词为非常用单词,将所述非常用单词进行归一化,并采用占位符进行表示。

进一步的,将所述非常用单词进行归一化,并采用占位符进行表示,包括但不限于:

数字映射成占位符<number>,以ed结尾的单词映射成占位符<ed>,以ly结尾的单词映射成占位符<ly>,以ing结尾的单词映射成占位符<ing>,表情符号映射成占位符<emoji>,剩下的其他单词映射成占位符<unk>,以及采用占位符<begin>表示句子的开头。

进一步的,利用LSTM循环神经网络模型根据t时刻输入的单词和t-1时刻所述LSTM循环神经网络模型中的隐含层状态计算所述LSTM循环神经网络模型内常用词词表V中所有单词的概率包括:

根据t时刻输入的单词,结合t-1时刻所述LSTM循环神经网络模型的状态记忆,利用所述LSTM循环神经网络模型中输入门、遗忘门、输出门、状态单元分别对所述常用词词表V中的所有单词进行计算;

根据所述LSTM循环神经网络模型中输入门、遗忘门、输出门、状态单元的计算结果进行所述常用词词表V中的所有单词的概率计算,并将计算结果作为LSTM循环神经网络模型中隐含层的输出结果;

所述LSTM循环神经网络模型中隐含层内的状态包含t-1时刻以及t-1前输入的所有单词信息。

进一步的,根据所述常用词词表V中所有单词的概率结合先验概率值对所述初始候选词列表进行修正,得到候选词列表的最终预测排序包括:

所述LSTM循环神经网络模型包括包含有常用词与非常用词的词表V+;

当所述初始候选词列表中候选单词w属于词表V时,采用公式计算单词w的权重;

当所述初始候选词列表中候选单词w不属于词表V,即属于词表V+时,采用公式Uw=Pv+*α计算单词w的权重;

将所述初始候选词列表中的所有单词的权值进行比较,并按照权值从大到小的顺序对所述初始候选词列表进行重新排列,生成候选词列表的最终预测排序;

所述P为LSTM循环神经网络模型预测的单词w的概率值;

所述max、min分别为所述常用词词表V中的最大概率值和最小概率值;

所述a为要归一化到的值域区间;

所述Pv+为词表V+中候选单词w的概率,即根据日常生活中被使用的频率统计所得的先验概率值;

所述α为降权比率,所述α<1。

进一步的,当用户还未输入任何单词,即所述t时刻输入的单词为零个时,将所述占位符<begin>作为所述t时刻输入的单词,并根据所述先验概率值按照概率从大到小的顺序输出可供用户选择的候选词列表。

对于本发明一种基于LSTM循环神经网络模型的滑动输入系统,其技术方案为,包括:

输入模块:被配置为将用户t时刻输入的单词实时转化为对应的词向量,并将所述词向量发送给LSTM循环神经网络模型;

LSTM循环神经网络模型:被配置将t-1时刻的上下文信息作为状态记忆进行保存,结合t-1时刻的所述状态记忆和输入模块发送的t时刻词向量进行常用词词表V中所有单词的概率计算,并将计算所得的所述常用词词表V中所有单词的概率发送至输出模块;

滑动轨迹采样模块:被配置为对用户输入的滑动轨迹进行采样,并输出至滑动轨迹识别模块;

滑动轨迹识别模块:被配置为根据滑动轨迹采样模块输入的滑动轨迹生成初始候选词列表,并将所述初始候选词列表发送给输出模块;

输出模块:被配置为接收所述词表V中所有单词的概率,并结合词表V+中的概率值对接收到的所述初始候选词列表进行修正,并将修正后的候选词列表显示输出。

进一步的,所述LSTM循环神经网络模型包括:

LSTM计算单元:被配置为结合LSTM状态单元中t-1时刻的状态记忆和输入模块发送的t时刻词向量进行所述常用词词表V中所有单词的概率计算,并将计算所得的所述常用词词表V中所有单词的概率发送至输出模块;

LSTM状态单元:被配置为在所述LSTM计算单元完成所述常用词词表V中所有单词的概率计算后,将t-1时刻的上下文信息作为状态记忆进行保存,并供所述LSTM计算单元进行下一次计算时使用。

进一步的,所述LSTM循环神经网络模型还包括压缩模块,所述压缩模块被配置为与所述LSTM循环神经网络模型的隐含层进行全连接,之后采用全连接方式和所述LSTM循环神经网络模型的概率输出层进行连接,所述概率输出层输出所述常用词词表V中所有单词的概率至输出模块。

本发明的有益效果:LSTM循环神经网络模型的状态单元具有记忆功能,其LSTM循环神经网络模型状态单元包含了之前用户已经输入的上下文的所有信息,基于该模型能够结合完整的上下文来计算下一个词的概率,能够准确的猜测出用户希望输入的下一个词。在输入词组或句子时,相较于传统的滑动轨迹输入,其在滑动轨迹给出的候选词列表上结合上下文进行了进一步修正,预测准确性大大提高。其次使用LSTM循环神经网络模型可以比较灵活的的控制模型复杂度。LSTM循环神经网络模型可以通过在纵向增加模型的深度来提高模型的预测准确度。另外,在LSTM循环神经网络模型的隐含层与概率输出层之间增加压缩模块,将隐含层的维度和概率输出层的维度进行了解耦,大大减少需要的参数个数,从而减小了对存储空间的占用,同时不会对预测结果的准确性带来明显的负面影响。

附图说明

图1为本发明基于循环神经网络模型的滑动输入方法的流程图;

图2为本发明LSTM循环神经网络模型内部运算示意图;

图3为本发明基于循环神经网络模型的滑动输入系统的模块连接图。

具体实施方式

以下通过具体实施例对本发明作进一步的详细说明:

如图3所示,基于LSTM循环神经网络模型的滑动输入系统包括输入模块1、LSTM计算单元2、LSTM状态单元3、压缩模块4、输出模块5、滑动轨迹采样模块6、滑动轨迹识别模块7。

如图1所示,基于循环神经网络模型的滑动输入方法包括:

S1:输入模块1将用户t时刻输入的单词实时转化为对应的词向量,并将所述词向量发送给LSTM计算单元2中。

由于现实世界中可能出现的单词数量是无限多的,这里面有一些是使用频次较低的单词,更多的则是由于拼写错误或者用户自行创造的词,而模型能够接受的单词是有限的。LSTM循环神经网络模型包括常用词词表V和包含常用词与非常用词的词表V+,LSTM循环神经网络模型中常用词词表V中每个单词均对应一个词向量,每个词向量对应一个ID,输入模块根据t时刻输入的单词的ID可将其转化为对应的词向量。对于不属于V的单词w,则按照一定的规则将其归一化到不同的占位符表示。

占位符的设计是和语言相关的,以英文为例,数字映射成<number>,以ed结尾的单词映射成<ed>,以ly结尾的单词映射成<ly>,以ing结尾的单词映射成<ing>,表情符号映射成<emoji>,剩下的所以其他单词映射成<unk>。被归一化之后的占位符也会被加入到词表V中。

其次,特别的加入占位符<begin>用来表示句子的开头,从而对句子开头第一个单词的概率进行预测。而其他占位符,比如<ing>可以在预测阶段对超出词汇V以外的预测结果进行修正,例如当用户依次键入字母defecat时,如果引擎根据上下文计算出<ing>的概率较高,就可以猜测用户输入希望输入的词是defecating,那么引擎就可以将defecating的预测优先展现给用户。

之后根据embed策略,将单词映射成词向量,词向量能够表征单词的语义,语义相近的词对应的词向量的欧式距离更近。词向量的权重是在LSTM循环神经网络模型的训练过程中同步学习完成的。在任意时刻t,用户已经输入的单词都会按照上述方法被转换成词向量输入到LSTM循环神经网络模型中。

S2:LSTM计算单元2结合LSTM状态单元3中t-1时刻的状态记忆和输入模块1发送的t时刻词向量进行常用词词表V中所有单词的概率计算,并将计算所得的常用词词表V中所有单词的概率发送至输出模块5;

如图2所示,LSTM循环神经网络模型的一个优势在于能够结合完整的上下文来计算下一个词的概率(在输入仅为一个单词时,其概率计算与传统相比,没有太大差别,仅在输入词组或句子时,能够展现出较大的优势)。其实现途径是使用具有记忆功能的LSTM状态单元3保存之前已经输入的单词信息,用户依次输入单词w0,w1,…wt,每输入一个单词,LSTM计算单元2都会结合输入模块1输入的t时刻词向量和t-1时刻LSTM循环神经网络模型输出的隐含层状态(即LSTM状态单元3保存的状态记忆)给出相应的预测(即进行常用词词表V中所有单词的概率计算),正是因为这个优点,所以LSTM循环神经网络模型在很多时候能够准确的猜测出用户希望输入的下一个词,甚至能够自动的匹配一些语法的规则,比如Google and Facebook后面会给出are的预测,而Google or Facebook后面则给出is的预测。

其次使用LSTM循环神经网络模型可以比较灵活的的控制模型复杂度。LSTM循环神经网络模型可以通过在纵向增加模型的深度(即增加概率的计算次数)来提高模型的预测准确度,增加更多的深度在提高准确率的同时会增加需要存储的参数的数量以及额外的计算复杂度,在实际中可以设置深度为2。

LSTM循环神经网络模型的计算单元包括输入门、遗忘门、输出门、状态单元和LSTM结果等。这些单元的计算公式如下所示:

输入门:it=sigmoid(WixXt+Wihht-1+bi)

遗忘门:ft=sigmoid(WfxXt+Wfh+bf)

状态单元:ct=ft*ct-1+it*tanh(Wctxt+Wchht-1+bc)

输出门:ot=sigmoid(Woxxt+Wohht-1+bo)

LSTM结果或者称为隐含层状态:ht=ot*tanh(ct)

其中,Xt为第t时刻输入的词向量,Wix、Wfx、Wct、Wch、Wox、Woh为权重矩阵,bi、bf、bc、bo分别为输入门、遗忘门、状态单元、输出门的偏置向量,it、ft、ct、ot、ht分别表示t时刻的输入门、遗忘门、状态单元、输出门和LSTM结果(或者称为隐含层状态)。sigmoid函数和tanh函数都是通用函数,其计算公式分别为:sigmoid(x)=1/(1+e-x),tanh(x)=(ex-e-x)/(ex+e-x)。

利用上述公式计算得到LSTM隐含层状态后,将其输入到压缩模块4,输入方式为全连接,压缩层(即压缩模块4)在神经网络模型中表现为若干神经元,压缩层的输出同样通过全连接方式连接到LSTM循环神经网络模型的概率输出层,概率输出层将计算所得的概率发送至输出模块5。

按照LSTM循环神经网络模型的原始设计,隐含层的状态直接连接到概率输出层,这样的连接方式需要N*M个参数,其中N为隐含层维度,M为概率输出层维度。由于N的大小和LSTM循环神经网络模型的预测准确度直接相关,因此N不能太小,而M的维度等于输出词汇表V的大小,因此N*M需要占用较大的存储空间,在移动设备上存储空间通常是有限的。引入压缩层之后,需要的参数个数为:N*K+K*M,由于M的取值通常较大,因此当K的大小远小于N时,可以大大减少需要的参数个数,从而减小了对存储空间的占用,同时不会对预测结果的准确性带来明显的负面影响。

当用户还未进行滑动轨迹输入时,输出模块5比较计算所得的词表V中每个单词的概率值,以概率从小到大的顺序生成候选词列表并显示输出。其中,当用户还未输入任何单词,即t时刻输入的单词为零个时,将占位符<begin>作为所述t时刻输入的单词,并根据先验概率值按照概率从大到小的顺序输出可供用户选择的候选词列表。

当用户继续滑动输入轨迹时,则执行后续步骤。

S3,滑动轨迹识别模块7根据滑动轨迹采样模块6输入的滑动轨迹生成初始候选词列表,并将初始候选词列表发送给输出模块5。

S4,输出模块5接收词表V中下一个可能出现的单词的概率,并结合词表V+中的概率值对接收到的初始候选词列表进行修正,并将修正后的候选词列表显示输出。

LSTM循环神经网络模型计算出的词表V中下一个可能出现的单词的概率描述了词表V中每个单词的相对概率值。滑动轨迹识别算法会首先对滑动轨迹进行识别,给出初始候选词列表,由于该列表中的候选单词不一定来源于词表V,其中可能包含非常用词,因此需要定义一个包含常用词与非常用词的更大的词典V+,并将V和V+中的概率值进行融合得到新的权值U。

如果初始候选词列表中候选单词w属于词表V,则按照公式进行单词w的权重计算;

如果初始候选词列表中候选单词w不属于词表V,即属于词表V+时,采用公式Uw=Pv+*α计算单词w的权重;

其中P为LSTM循环神经网络模型预测的单词w的概率值,max、min分别为所述常用词词表V中的最大概率值和最小概率值,a为要归一化到的值域区间。Pv+为词表V+中候选单词w的概率,即根据日常生活中被使用的频率统计所得的先验概率值;α<1,α为降权比率,用于对V+中取到的概率值进行一定的降权。V+中的概率值即根据日常生活中被使用的频率统计所得的先验概率值。

最后将候选的单词列表中的所有单词的权值进行比较,并按照权值U从大到小的顺序进行重新排列输出。

以下,针对利用LSTM循环神经网络模型对滑动输入预测结果进行修正方法以“you are vevy good”来举例说明,当用户还未开始输入时,系统自动将占位符<begin>作为所述t时刻输入的单词,并根据所述先验概率值按照概率从大到小的顺序输出一个可供用户选择的候选词列表。当用户已经完成“you are vevy”的键入时,LSTM计算单元2根据t时刻的词向量即“vevy”对应的词向量,结合t-1时刻的状态记忆,即“you are”,进行常用词词表V中所有单词的概率计算,并将该概率输出至输出模块5。此时系统将LSTM循环神经网络模型计算的常用词词表V中所有单词的概率进行比较,并按照概率从小到大的顺序输出一个候选词列表,并显示输出。当用户滑动输入“good”完毕,但还未从候选词列表中挑出“good”这个词时。则输出模块5根据S4中的步骤对接收到滑动轨迹识别模块7输入的初始候选词列表进行修正,从而得到最终候选词列表,并显示输出。

以上所述,仅为本发明的具体实施方式,应当指出,任何熟悉本领域的技术人员在本发明所揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1