CN101667099A - 一种连笔键盘文字输入的方法和设备 - Google Patents

一种连笔键盘文字输入的方法和设备 Download PDF

Info

Publication number
CN101667099A
CN101667099A CN200910178326A CN200910178326A CN101667099A CN 101667099 A CN101667099 A CN 101667099A CN 200910178326 A CN200910178326 A CN 200910178326A CN 200910178326 A CN200910178326 A CN 200910178326A CN 101667099 A CN101667099 A CN 101667099A
Authority
CN
China
Prior art keywords
strings
string
optimum matching
text strings
coding
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN200910178326A
Other languages
English (en)
Other versions
CN101667099B (zh
Inventor
程彩虹
彭石磊
孟建春
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shapewriter Inc
Original Assignee
Shapewriter Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shapewriter Inc filed Critical Shapewriter Inc
Priority to CN200910178326.2A priority Critical patent/CN101667099B/zh
Publication of CN101667099A publication Critical patent/CN101667099A/zh
Application granted granted Critical
Publication of CN101667099B publication Critical patent/CN101667099B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Document Processing Apparatus (AREA)

Abstract

本发明公开了一种连笔键盘文字输入的方法和设备,属于输入法领域。所述方法包括:接收用户通过连笔方式在键盘上输入的编码串;根据编码库存储的编码串,识别所述输入编码串表示的候选编码串;根据所述候选编码串,输入相应的文字串。所述设备包括:编码接收模块、编码识别模块和输入模块。本发明通过接收用户通过连线方式输入的编码串后,将其转换为对应的文字串,减少了用户输入过程中的抬笔和落笔的操作,输入过程更加流畅,极大的提高了输入的速度。

Description

一种连笔键盘文字输入的方法和设备
技术领域
本发明涉及输入法领域,特别涉及一种连笔键盘文字输入的方法和设备。
背景技术
随着中文输入法广泛地应用于电脑、机顶盒、及各种手持设备中,各类中文输入法迅速发展起来,如T9中文输入法,A4中文输入法,梅花中文输入法等,这些输入法虽然都可以使用户通过各种硬件设备实现中文输入,但是用户和输入法的接口设计上却各有不同。
传统输入法通过按键或手写方式接收用户输入的编码。然而,按键输入过程序需要很多手指抬起按下的动作,并且键盘面积较小,按键大小非常有限,输入容易出现错误,影响输入速度。手写输入的弊端在于,用户输入速度很大程度上依赖于汉字识别模块的好坏,当用户输入汉字很潦草或其它原因导致软件识别不准确时候,用户需要删除原来的汉字,重新输入。当汉字笔画较多时,用户也必须输入整个汉字,输入速度慢。
鉴于传统输入法的缺点,业界已提出连笔键盘输入的设想。连笔键盘输入法可以识别用户通过连线方式输入的字母,将输入的字母与字库中的单词直接匹配得到候选单词,并从中选择一个作为输入。目前,连笔键盘输入法允许用户通过连线方式输入多种西方国家语言,如英语、法语等。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
中文与西方国家语言不同,中文输入还需要借助特定的编码。因此,何如将连笔键盘输入应用于中文输入,还是一个亟待解决的问题。
发明内容
为了实现连笔键盘文字输入法,本发明实施例提供了一种连笔键盘文字输入的方法和设备。所述技术方案如下:
一种连笔键盘文字输入的方法,所述方法包括:
接收用户通过连笔方式在键盘上输入的编码串;
根据编码库存储的编码串,识别所述输入编码串表示的候选编码串;
根据所述候选编码串,输入相应的文字串。
其中,所述根据编码库存储的编码串,识别所述输入编码串表示的候选编码串包括:
将所述输入编码串与所述编码库存储的编码串进行匹配;
按照匹配程度由强到弱的顺序,从所述编码库中选出与所述输入编码串匹配的编码串作为候选编码串。
其中,所述根据编码库存储的编码串,识别所述输入编码串表示的候选编码串包括:
将所述输入编码串与所述编码库存储的编码串进行匹配;
按照匹配程度由强到弱的顺序,从所述编码库中选出与所述输入编码串匹配的编码串作为候选编码串;
根据用户输入的前一个文字串,通过Ngram算法,对所述候选编码串的顺序进行调整。
其中,所述根据所述候选编码串,输入相应的文字串包括:
从所述候选编码串中选出最佳匹配编码串;
对所述最佳匹配编码串进行解码;
根据词库,将所述解码后的最佳匹配编码串转换为候选文字集;
从所述候选文字集中选出最佳匹配文字串;
将所述最佳匹配文字串作为欲输入的文字串。
其中,所述从所述候选编码串中选出最佳匹配编码串包括:
将所述编码库中匹配程度最强的编码串作为最佳匹配编码串;或者,
将用户选择的编码串作为最佳匹配编码串。
其中,所述根据词库,将所述解码后的最佳匹配编码串转换为候选文字集包括:
从所述词库中查找与所述解码后的最佳匹配编码串匹配的第一文字串,或者根据第一公式p(w1…wn)=p(w1)p(w2|w1)p(w3|w2)…p(wn|wn-1)以及第二公式 P ( w n | w n - 1 ) = C * ( w n - 1 w n ) C ( w n - 1 ) , C ( w n - 1 w n ) > 0 α ( w n - 1 ) P ( w n ) , C ( w n - 1 w n ) = 0 , 计算所述解码后的最佳匹配编码串中各个编码对应的文字串的组合概率;其中,p(w1…wn)表示所述解码后的最佳匹配编码串各个编码对应的文字串的组合概率,p(wn|wn-1)表示文字串wn-1出现的情况下,文字串wn出现的概率,C(wn-1wn)是wn-1wn在语料中出现的次数,C*(wn-1wn)是通过GOOD-Turing平滑算法得到的wn-1wn打折后在语料里出现的次数,α(wn-1)是回溯权值;按照组合概率由大到小的顺序排列,从中选择概率最大的一个作为第一文字串,将所述第一文字串作为所述候选文字集;或者,
从所述词库中查找与所述解码后的最佳匹配编码串的部分编码匹配的第二文字串,将所述第二文字串作为所述候选文字集;或者,
当所述解码后的最佳匹配编码串对应的文字串的个数小于预设长度时,在所述字库中查找包含所述最佳匹配编码串、且长度小于等于所述预设长度的编码对应的第三文字串,将所述第三文字串作为所述候选文字集。
其中,所述从所述候选文字集中选出最佳匹配文字串包括:
将所述候选文字集中概率最大的文字串作为最佳匹配文字串;或者,
将用户选择的文字串替换所述概率最大的文字串,将所述用户选择的文字串作为最佳匹配文字串。
其中,当所述输入编码串包括命令触发键和至少一个命令编码时,所述方法还包括:
根据编码库存储的编码串,识别所述命令编码表示的候选命令;
从所述候选命令中选择一个作为输入命令,并执行所述输入命令。
其中,所述对所述最佳匹配编码串进行解码包括:
根据用户添加的编码切分符,对所述最佳匹配编码串进行解码。
其中,所述对所述最佳匹配编码串进行解码之后包括:
判断解码后得到的所述最佳匹配编码串的各个编码的状态是完整编码或非完整编码,并存储判断结果。
其中,所述方法还包括:
通过模糊编码集,预先建立输入编码串与校正编码之间的映射;
根据所述映射,将所述输入编码串转换为相应的校正编码;
则根据编码库存储的编码串,识别所述输入编码串表示的候选编码串包括:
根据所述编码库存储的编码串,识别所述输入编码串表示的候选编码串和所述转换后的校正编码表示的候选编码串。
其中,所述将所述最佳匹配文字串作为欲输入的文字串之后包括:
在所述字库中查找与所述最佳匹配文字串相关的文字串;
在所述最佳匹配文字串出现的情况下,按照所述相关的文字串出现概率由大到小的顺序,提示用户下一次输入的候选文字串。
其中,所述从所述候选文字串中选出最佳匹配文字串之后包括:
设所述候选文字串为(h1,h2…hn),其对应的概率分别为(p1,p2…pn),并设所述最佳匹配文字串为hm,其对应的概率为pm
将除所述最佳匹配文字串之外的其他候选文字串hi的概率pi减去kpi,则所述其他候选文字串hi的概率变为(1-k)pi,i≠m,0<k<0.5;
将所述最佳匹配文字串hm的概率pm加上kpi,则所述最佳匹配文字串hm的概率变为 p m + Σ i = 1 i = n kp i ( i ≠ m ) .
其中,所述方法还包括:
当所述编码库中不存在所述输入编码串或者所述输入编码串对应的候选文字串中没有用户欲输入的文字串时,选取所述输入编码串的部分编码;
根据所述词库,将所述部分编码转换为第二候选文字集,从所述第二候选文字串集选出第二最佳匹配文字串,将所述第二最佳匹配文字串作为第二欲输入的文字串;
根据所述词库,将除所述部分编码之外的其他所述输入编码串转换为第三候选文字集,并按照在所述第二最佳匹配文字串存在的情况下,所述第三候选文字集中的文字串在所述词库中出现概率由大到小的顺序排列,从所述第三候选文字集中选出第三最佳匹配文字串,将所述第三最佳匹配文字串作为第三欲输入的文字串。
其中,所述方法还包括:
在所述编码库中存储所述输入编码串,并将所述输入编码串及其对应的所述第二最佳匹配文字串和所述第三最佳匹配文字串存储到所述词库中
一种连笔键盘文字输入的设备,所述设备包括:
编码接收模块,用于接收用户通过连笔方式在键盘上输入的编码串;
编码识别模块,用于根据编码库存储的编码串,识别所述输入编码串表示的候选编码串;
输入模块,用于根据所述候选编码串,输入相应的文字串。
其中,所述编码识别模块具体用于
将所述输入编码串与所述编码库存储的编码串进行匹配;
按照匹配程度由强到弱的顺序,从所述编码库中选出与所述输入编码串匹配的编码串作为候选编码串。
其中,所述编码识别模块具体用于
将所述输入编码串与所述编码库存储的编码串进行匹配;
按照匹配程度由强到弱的顺序,从所述编码库中选出与所述输入编码串匹配的编码串作为候选编码串;
根据用户输入的前一个文字串,通过Ngram算法,对所述候选编码串的顺序进行调整。
其中,所述输入模块包括:
编码选择单元,用于从所述候选编码串中选出最佳匹配编码串;
编码解码单元,用于对所述最佳匹配编码串进行解码;
文字转换单元,用于根据词库,将所述解码后的最佳匹配编码串转换为候选文字集;
文字选择单元,用于从所述候选文字集中选出最佳匹配文字串;
文字输入单元,用于将所述最佳匹配文字串作为欲输入的文字串。
其中,所述编码选择单元具体用于
将所述编码库中匹配程度最强的编码串作为最佳匹配编码串;或者,
将用户选择的编码串作为最佳匹配编码串。
其中,所述编码解码单元具体用于
根据用户添加的编码切分符,对所述最佳匹配编码串进行解码。
其中,所述文字转换单元具体用于
从所述词库中查找与所述解码后的最佳匹配编码串匹配的第一文字串,或者根据第一公式p(w1…wn)=p(w1)p(w2|w1)p(w3|w2)…p(wn|wn-1)以及第二公式 P ( w n | w n - 1 ) = C * ( w n - 1 w n ) C ( w n - 1 ) , C ( w n - 1 w n ) > 0 α ( w n - 1 ) P ( w n ) , C ( w n - 1 w n ) = 0 , 计算所述解码后的最佳匹配编码串中各个编码对应的文字串的组合概率;其中,p(w1…wn)表示所述解码后的最佳匹配编码串各个编码对应的文字串的组合概率,p(wn|wn-1)表示文字串wn-1出现的情况下,文字串wn出现的概率,C(wn-1wn)是wn-1wn在语料中出现的次数,C*(wn-1wn)是通过GOOD-Turing平滑算法得到的wn-1wn打折后在语料里出现的次数,α(wn-1)是回溯权值;按照组合概率由大到小的顺序排列,从中选择概率最大的一个作为第一文字串,将所述第一文字串作为所述候选文字集;或者,
从所述词库中查找与所述解码后的最佳匹配编码串的部分编码匹配的第二文字串,将所述第二文字串作为所述候选文字集;或者,
当所述解码后的最佳匹配编码串的对应的文字串的个数小于预设长度时,在所述字库中查找包含所述最佳匹配编码串、且长度小于等于所述预设长度的编码对应的第三文字串,将所述第三文字串作为所述候选文字集。
其中,所述文字选择单元,具体用于
将所述候选文字集中概率最大的文字串作为最佳匹配文字串;或者,
将用户选择的文字串替换所述概率最大的文字串,将所述用户选择的文字串作为最佳匹配文字串。
其中,所述设备还包括:命令模块,用于当所述输入编码串包括命令触发键和至少一个命令编码时,
根据编码库存储的编码串,识别所述命令编码表示的候选命令;
从所述候选命令中选择一个作为输入命令,并执行所述输入命令。
其中,所述设备还包括:简全拼模块,用于判断解码后得到的所述最佳匹配编码串的各个编码的状态是完整编码或非完整编码,并存储判断结果。
其中,所述设备还包括:模糊编码模块,用于通过模糊编码集,预先建立输入编码串与校正编码之间的映射;
根据所述映射,将所述输入编码串转换为相应的校正编码;
所述编码识别模块,还用于根据所述编码库存储的编码串,识别所述输入编码串表示的候选编码串和所述转换后的校正编码表示的候选编码串。
其中,所述设备还包括:字词关联模块,用于在所述字库中查找与所述最佳匹配文字串相关的文字串;
在所述最佳匹配文字串出现的情况下,按照所述相关的文字串出现概率由大到小的顺序,提示用户下一次输入的候选文字串。
其中,所述设备还包括:词频调整模块,用于设所述候选文字串为(h1,h2…hn),其对应的概率分别为(p1,p2…pn),并设所述最佳匹配文字串为hm,其对应的概率为pm
将除所述最佳匹配文字串之外的其他候选文字串hi的概率pi减去kpi,则所述其他候选文字串hi的概率变为(1-k)pi,i≠m,0<k<0.5;
将所述最佳匹配文字串hm的概率pm加上kpi,则所述最佳匹配文字串hm的概率变为 p m + Σ i = 1 i = n kp i ( i ≠ m ) .
其中,所述设备还包括:分解处理模块,用于当所述编码库中不存在所述输入编码串或者所述输入编码串对应的候选文字串中没有用户欲输入的文字串时,选取所述输入编码串的部分编码;
根据所述词库,将所述部分编码转换为第二候选文字集,从所述第二候选文字串集选出第二最佳匹配文字串,将所述第二最佳匹配文字串作为第二欲输入的文字串;
根据所述词库,将除所述部分编码之外的其他所述输入编码串转换为第三候选文字集,并按照在所述第二最佳匹配文字串存在的情况下,所述第三候选文字集中的文字串在所述词库中出现概率由大到小的顺序排列,从所述第三候选文字集中选出第三最佳匹配文字串,将所述第三最佳匹配文字串作为第三欲输入的文字串。
其中,所述设备还包括:存储模块,用于在所述编码库中存储所述输入编码串,并将所述输入编码串及其对应的所述第二最佳匹配文字串和所述第三最佳匹配文字串存储到所述词库中。
本发明实施例提供的技术方案带来的有益效果是:
通过接收用户通过连笔方式在键盘上输入的编码串,根据编码库存储的编码串,识别输入编码串表示的候选编码串,根据候选编码串,输入相应的文字串,减少了用户输入过程中的抬笔和落笔的操作,输入过程更加流畅,极大的提高了输入的速度。
附图说明
图1是本发明实施例1中提供的连笔键盘文字输入的方法流程图;
图2是本发明实施例1中提供的连笔键盘文字输入的信息交互图;
图3是本发明实施例1中提供的连笔键盘文字输入的另一方法流程图;
图4是本发明实施例1中提供的词库文件示意图;
图5是本发明实施例1中提供的uni-gram词库文件示意图;
图6是本发明实施例1中提供的连笔输入示意图;
图7是本发明实施例1中提供的编码串切分流程图;
图8是本发明实施例1中提供的连笔输入命令示意图;
图9是本发明实施例1中提供的简/全拼及模糊音流程图;
图10是本发明实施例1中提供的字词联想示意图;
图11是本发明实施例1中提供的长词组联想流程图;
图12是本发明实施例1中提供的长词组联想示意图;
图13是本发明实施例1中提供的自动调整一元信息示意图;
图14是本发明实施例1中提供的自动调整二元信息示意图;
图15是本发明实施例2中提供的连笔键盘文字输入的设备结构示意图;
图16是本发明实施例2中提供的连笔键盘文字输入另一设备结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例1
参见图1,本实施例提供了一种连笔键盘文字输入的方法,包括:
101:接收用户通过连笔方式在键盘上输入的编码串;
102:根据编码库存储的编码串,识别该输入编码串表示的候选编码串;
其中,编码库用来存放词库中所有字词的编码串。其中,编码串可以为拼音编码串(包括字词完整的拼音和首拼)或字形编码串(如笔画编码串),本实施例并不限定编码的具体方式。
103:根据候选编码串,输入相应的文字串。
其中,文字串可以是汉字串,或类似中文的语言,如韩语或日语等等。本实施例以汉字串为例进行说明,其他文字串的处理过程与汉字串相同,本实施不再赘述。
具体的,本实施例并不限定候选编码串转换为文字串的具体过程,现有技术中可实现该转换过程的方法均可采用。优选的,本实施例也提供了一种转换方法,包括:
103a:从该候选编码串中选出最佳匹配编码串;
其中,候选编码串可以是一个或多个。
103b:对该最佳匹配编码串进行解码;
其中,解码即按照一定的规则将编码串划分为若干系统可处理的单元,对于拼音编码来说,解码过程可以为切分过程,。
103c:根据词库,将该解码后的最佳匹配编码串转换为候选文字集;
其中,词库是将编码串转换为文字串的基础,用来存储字词的一元信息和多元信息。一元信息,用来表征单个字词的属性信息,包括单个字词、字词编码、平滑后的概率和回溯权值。多元信息,用来表征多个字词之间的关联信息。
103d:从该候选文字集中选出最佳匹配文字串;
其中,候选文字集可以包括一个或多个文字串。
103e:将该最佳匹配文字串作为欲输入的文字串。
本实施例提供的方法,通过接收用户通过连笔方式在键盘上输入的编码串,根据编码库存储的编码串,识别输入编码串表示的候选编码串,根据候选编码串,输入相应的文字串,减少了用户输入过程中的抬笔和落笔的操作,输入过程更加流畅,极大的提高了输入的速度。
参见图2和图3,以根据拼音编码串输入中文为例,连笔键盘中文输入的具体实现过程如下。其他编码与此类似,这里不再赘述。
201:设计词库和编码库。
首先介绍设计词库时采用的Ngram算法及平滑算法。
在智能输入法中,根据当前或以往输入的词来预测下一个词,这种预测可以用条件概率p表示:
P(wn|w1…wn-1)        (1)
上述公式表示第n项候选字词的出现概率取决于前n-1个字词项,这种根据前n-1个已经出现的词来预测第n个词的模型,称为n元语法模型,也称为n-1阶马尔可夫模型。
如果用最大似然估计(MLE,Maximum likelihood estimation)估计p的值,则:
P ( w n | w 1 · · · w n - 1 ) = N ( w 1 · · · w n ) N ( w 1 · · · w n - 1 ) - - - ( 2 )
其中,N(w1...wn)是在训练语料中词串w1...wn出现的次数,N(w1...wn-1)是在训练语料中词串w1...wn-1出现的次数。当n=1的时,该语言模型被称为uni-gram模型,依此当n=2时为bi-gram模型,当n=3时为tri-gram模型,当n=4时为four-gram模型。理论上,n值越大,计算出来p的值越贴近人们使用语言的习惯。但这种方式需要保存大量的数据,且随着n的增加,数据量将以指数级增长。如果输入法使用的字词库有K个字词项,则所需的数据量为K的n阶幂。由于数据量过大,在实际应用中,n的取值往往设为2或3。考虑到当前手机设备的存储空间和处理能力,本实施例以bi-gram模型为例进行说明,其他模型与此类似,这里不再赘述。
对分词后的语料库进行uni-gram统计,得到在语料库中出现的所有词的概率p(wi)。在筛选一些有意义的词的后,再通过bi-gram计算出这些词在语料库中的条件概率:
P ( w i | w j ) = N ( w j w i ) N ( w j ) - - - ( 3 )
对于词w1…wn连续出现的概率,采用如下公式计算:
p(w1…wn)=p(w1)p(w2|w1)p(w3|w2)…p(wn|wn-1)        (4)
在获取概率数据的过程中,本实施例使用了最大似然估计的方法,但这种方法有一个缺点:再大的语料库,也会有大量的词串没有出现,这就不可避免地会出现大量估计值为0的条件概率,这就是所谓地数据稀疏问题。最大似然估计的方法只统计了在语料中已出现词串的概率,对于语料中未出现词串,根据公式(4),在计算P的过程中,若有一个二元项P为0,则无论其他二元项组合的概率有多大,计算结果P必然为0。这样的结果是不合理的。为了解决这个问题,本实施例引入数据平滑技术。
数据平滑的基本思想:整最大似然估计的概率值,使零概率增值,使大概率下调,消除零概率,“劫富济贫”,改进模型的整体正确率。目前,数据平滑有多种方法,Katz平滑算法对于从较小的语料中统计二元语法模型效果较好。
P Katz ( y | x ) = C * ( xy ) C ( x ) ifC ( xy ) > 0 α ( x ) P Katz ( y ) ifC ( xy ) = 0
其中,xy是用户先后输入的拼音、汉字或词组,C(xy)是xy在语料中出现的次数,C*(xy)是通过GOOD-Turing平滑算法得到的xy打折后在语料里出现的次数,α(x)是回溯权值。当用户输入的xy在预料中出现的次数为0时,数据平滑之前PKatz(y|x)为0,数据平滑之后,PKatz(y|x)=α(x)PKatz(y),消除了0概率。
基于上述介绍的算法,下面介绍词库和编码库的设计。
词库,是输入法将编码串转换为汉字的基础。通过对分词后的语料进行Ngram(本实施例以n=2为例进行说明)及平滑运算,得到uni-gram和bi-gram词库文件。参见图4,词库文件的设计过程如下:
通过Ngram算法对大量的文本语料进行统计,得到常用的字词组合,或称短语;将常用的字词组合添加到中文分词工具。具体操作时,可以限定常用字词组合的长度,本实施例限定为4。通过对语料进行bi-gram(n=2)、tri-gram(n=3)、four-gram(n=4)的计算,我们得到了在语料中出现频率较高,即p(w1…wn)(n=2、3、4)较大的两字短语,三字短语和四字短语,然后我们从中筛选出一些有意义的短语并将其加入中文分词工具。对于单字,将GB2312字符集中的全部6763个汉字加入中文分词工具。分词后的语料经过平滑算法,得到uni-gram和bi-gram词库文件。本实施例并不限定单字的具体来源,仅以GB2312字符集中的汉字为例加以说明。
uni-gram词库文件存储了字词的一元信息,包含了分词后的语料库中出现的所有的单个字词、字词的编码、平滑后的概率和回溯权值。本实施例剔除了长度大于四的词和一些不常见的人名,地名及一些分词噪音,同时还对语料中的多音字进行校对,并对其概率进行了处理。假设常用字词组合的长度为4,参见图5,则uni-gram词库文件的结构包括:单字词信息、两字词信息、三字词信息和四字词信息。
接下来对uni-gram词库出现的词进行二元信息统计,将分词结果中两两相邻的字词对的出现次数进行统计,得到二元信息的原始数据,并将其存储到bi-gram词库。
bi-gram词库存储了分词后的语料库中所有两个字词之间的二元关系(w1,w2,pKatz(w1|w2)),即词w1、w2,以及在w2出现的条件下w1出现的概率。
基于上述uni-gram词库和bi-gram词库的介绍可知:与uni-gram词库文件相比,二元信息文件(bi-gram词库文件)的大小将远远大于字词库文件(uni-gram词库文件)。另外,在计算整句输入和联想词的输出过程中,需要频繁查找二元字词对的概率,因此二元信息文件的设计必须充分考虑到其存储空间的占用以及查找算法的效率。
在uni-gram词库里,按照字词的编码升序排序,并为每个字和词分配一个唯一的ID值,对于多音字,根据其不同的读音分配不同的ID值,并按照ID值的升序排列。这样查找用户输入的编码时,或者是根据ID值查找对应的汉字时,就可以运用二分查找算法,快速查找。同时,每个w1的结点中,有一个指向w2集合的指针,这样也实现了从w1快速定位到二元信息的目的。
uni-gram词库与bi-gram词库在具体实现时,可参考如下代码:
   typedef struct bigram
   {
      int word2;//w2的ID值
      float pro;//pKatz(w1|w2)
   }bigramWordNode;
   typedef struct unigram
   {
      char*hz;//w1代表的汉字
      char**py;//根据w1的长度,为py对应的赋值
      float pro;//w1在Unigram里的概率
int id//;w1的ID值
      float bow;//回溯权值
      bigramWordNode*bigram_list;//和w1存在二元关系的w2的集合
      int bigram_len;//w2的个数
}unigramWordNode;
编码库文件,是用来存放词库中所有字词的编码串。其中,编码串包括音码和形码,音码可以是拼音输入法,形码可以是笔画输入法。拼音输入法,遵循汉语普通话语音习惯和汉语拼音方案,通过声母和韵母的组合和设备中内置编码库进行比对,并显示相应的中文。笔画输入法,依据中文的一些笔画组合规则,把中文字按其笔画顺序拆开分解,依照笔画顺序输入,最后组合成汉字。
另外,为了支持简拼输入,本实施例的编码库文件除了存储某一词组完整的拼音,还存储该词组的首拼,即声母部分。比如,词库中有“我们”这个词,则在编码库就有对应的拼音串“women”,为了让连笔键盘输入更加快速地输入中文,在编码库中还存贮了该词组对应的首拼,如“wm”。这样可以减少了用户连线的轨迹。
202:接收用户通过连笔方式或按键方式在键盘上输入的编码串。
其中,连笔方式输入的编码串送到连笔识别器进行识别,按键方式输入的编码串送到编码串切分模块进行切分。
其中,编码串可以为拼音编码串或笔画编码串,如五笔编码串。本实施例以拼音编码串为例进行说明,其他编码与此类似,不再赘述。
203:根据编码库存储的编码串,识别出通过连笔方式输入的编码串表示的候选编码串。
具体的,连笔识别器智能地按照匹配程度由强到弱,依次从编码库中选出与用户输入编码串匹配的编码,作为候选编码串。
例如,用户想输入“women”,参见图6,用户连笔输入的划线轨迹只需要在虚键盘上把w,o,m,e,n五个字母连接起来。候选编码串“women”、“wuhan”、“weiyuan”、“wennuan”等,按照匹配程度由强到弱依次显示在编码校正显示器上,供用户选择。
204:存储所有的候选编码串,从中选出最佳匹配编码串。
具体的,编码串集合中存储所有的候选编码串,从中选出最佳匹配编码串,并将其送到编码串切分模块进行切分。
默认情况下,将匹配程度最强的候选编码串,如“women”作为用户本次输入的最佳匹配编码串,可采用独特的背景颜色显示。
如果默认候选编码串不是用户想输入的编码串,接收用户通过手动方式选择的候选编码串作为最佳匹配编码串。其中,可以将候选编码串显示在编码校正显示器上。当候选编码串较多时,可以在编码校正显示器的两端设置翻页的箭头,当箭头可用时,以独特的背景颜色显示。
205:如果接收到用户以按键方式输入的编码串,则将输入的编码串直接送到编码串切分模块进行切分。
206:对最佳匹配编码串(或用户以按键方式输入的编码串)进行切分。
其中,切分是按照一定的规则将编码串划分为若干系统可处理的单元。
具体的,编码串切分模块判断输入的编码串是否为合法的编码串,并对合法的编码串进行切分。参见图7,用户输入编码串后,编码串切分模块对输入的编码串进行检测,判断输入的编码串是否为合法的编码串;如果不合法,返回;如果合法,对输入的编码串采用拼音切换算法进行切分,进一步的,对于切分有歧义的拼音,本实施例还支持用户自行切分,例如:设定‘来隔开不同的音节,则fangan->fang′an,或fangan->fan′gan;然后判断切分后的编码串是否小于系统可接受的最大长度;如果否,则输入法不予接受;如果是,将该编码串送到编码串汉字转换模块进行汉字转换。
进一步的,连笔键盘中文输入法把切分后的编码串放入数组*py[],如果拼音串中的音节个数大于预设个数(设为4),则取出前4个切分好的拼音音节,并从词库中四字词的词表中查找,如果切分后的编码串的长度小于4,则直接送入对应长度的词表中查找。如果找到则保存查找结果,如果没找到,则去掉最后一个音节,在对应长度的词表中查找,剩下的拼音作为用户下次的输入。
207:根据设计的词库,将切分后的最佳匹配编码串(或切分后的用户按键输入的编码串)转换为候选汉字集。
其中,候选汉字集中的汉字串可能有三种情况:
第一种是从词库中查找与切分后的最佳匹配编码串匹配的第一汉字串;
第二种是从词库中查找与切分后的最佳匹配编码串的部分编码匹配的第二汉字串;
第三种是当切分后的最佳匹配编码串的各个编码的长度小于预设长度时,在字库中查找包含最佳匹配编码串、且长度小于等于预设长度的编码对应的第三汉字串;
其中,候选汉字集可以为三种情况中的一种或几种的组合。
进一步的,为了提高存取速度,可以在缓存中存储切分后的最佳匹配编码串(或切分后的用户按键输入的编码串)对应的候选汉字集。
208:从候选汉字集中选出最佳匹配汉字串。
默认情况下,将候选汉字集中概率最大的汉字串作为最佳匹配汉字串,可采用独特的背景颜色显示。如果默认的汉字串不是用户想输入的汉字串,接收用户通过手动方式选择的汉字串,将用户选择的汉字串替换默认的汉字串(即概率最大的汉字串),将用户选择的汉字串作为最佳匹配汉字串。
其中,可以在汉字校正显示器上显示候选汉字串,当候选汉字串较多时,可以在汉字校正显示器的两端设置翻页的箭头,当箭头可用时,以独特的背景颜色显示。
进一步的,可以将编码和汉字校正显示器与虚拟键盘集成在一起,使预览编码或汉字能够位于非常邻近用户关注的虚键盘区域。还有,校正显示器能够显示不止一个预览字/编码。由于许多字/编码都有可能与用户(完成的或未完成的)输入匹配,因此显示其他一些接近匹配的候选字/编码而不仅仅是最匹配的字/编码是有好处的。
209:将最佳匹配汉字串作为欲输入的汉字串,并显示在文字编辑器中,完成一次连笔(或按键)输入过程。
进一步的,当不能识别输入编码串时或者输入编码串对应的候选汉字串中没有用户欲输入的汉字串时,本实施例提供了两种处理方法:
一种是根据公式4、5,计算输入编码串各个音节对应的汉字串的组合概率,并按照组合概率由大到小的顺序呈现给用户,将用户从中选择的作为欲输入的汉字串。
另一种是选取输入编码串的部分编码;根据词库,将部分编码转换为第二候选汉字集,从第二候选汉字串集选出第二最佳匹配汉字串,将第二最佳匹配汉字串作为欲输入的汉字串;根据词库,将除部分编码之外的其他输入编码串转换为第三候选汉字集,并按照在第二最佳匹配汉字串存在的情况下,第三候选汉字集中的汉字串在词库中出现概率由大到小的顺序显示,从第三候选汉字集中选出第三最佳匹配汉字串(或者将第三候选汉字集中概率最大汉字串默认作为第三最佳匹配汉字串),将第三最佳匹配汉字串作为欲输入的汉字串。
基于以上介绍的连笔键盘中文输入过程,下面介绍连笔键盘中文输入法涉及的特定功能及其实现。
(1)连笔键盘输入命令(如复制、粘贴、剪切等)的功能。
具体的,输入命令的方法为:以命令触发键(设为Cmd)为起点,以连线方式输入命令的(全部或部分)编码,从候选命令中选择一个最佳匹配命令。其中,命令编码可以是中文拼音或英文单词,本实施例并不限定命令的具体形式。
本实施例以“复制”命令为例说明。参见图8,用户选中编辑文本里的一段文字后,先将笔(或手指)放在Cmd键或其他任何预设的命令触发键上,然后将笔拖动到该命令的第一个字母键,在本实施例中为C键,Cmd-C预览显示候选命令剪切(Cut)、复制、关闭(Close)、评论(Comment)等,用户从中选择复制命令,或继续将笔朝第二个字母键O滑动,Cmd-C-O与复制(Copy)命令匹配,预览显示命令“复制”。然后,当用户抬起笔时,发出“复制”命令。同样的,用户可以先将笔放在Cmd键或其他任何预设的命令触发键上,然后将笔拖动到该命令的第一和第二个字母键pa(paste),当用户抬笔时,发出“粘贴”命令。
(2)简拼、全拼、简/全拼混合输入,及模糊音功能。
简/全拼功能:判断各个音节分别是简拼或全拼,将判断的结果依次存储到预设的数组,然后分别按照该音节是简拼还是全拼,到词库查找相应的汉字串。其中,简/全拼功能是相对于拼音编码来说的,其他编码形式与此类似,该功能可以表述为:判断各个编码的状态是完整编码或非完整编码,并存储判断结果。
具体的,可采用如下数据结构typedef struct pinyin_lattice保存拼音串信息。其中,input_pinyin[60]用来存储用户通过按键或连线输入的拼音串,指针数组*py[11]用来存放切分用户输入拼音串后的切分结果,整形is_whole_py[11]记录了切分后的拼的状态,如果为1则表示该拼音为全拼,为0则表示该拼音只有声母,例如,当用户通过按键的方式输入拼音beij,经过拼音切分模块切分后,第一个拼音为bei,第二个拼音为j,则is_whole_py[0]的值为1,记录了第一个拼音为全拼状态,is_whole_py[1]的值为0,记录了第二个拼音只有声母。py_len为切分拼音串后的拼音音节的个数,unanalysed[60]为目前还没处理的拼音串。flag_vague是用来标志模糊音功能是否打开,*vague_py[]里保存了用户输入的编码串映射到模糊音节的集合,vague_py_len记录了集合中的模糊音的个数。
   typedef struct pinyin_lattice
   {
      char input_pinyin[60];//用户通过按键或连线输入的拼音串。
      char*py[11];//切分后的拼音串。
      int flag_vague;//标志模糊拼音功能是否开启。
      char*vague_py[];//如果模糊拼音功能开启,存放模糊拼音集。
      int vague_py_len;//模糊拼音集的个数。
      int is_whole_py[11];//切分后的第i个音节py[i]是否为全拼。
      int py_len;//拼音串中音节的个数。
      char unanalysed[60];//没处理完的拼音串。
}st_pinyinLattice;
模糊音功能:
本实施例是以拼音编码串为例进行说明,对于其他编码,此功能可相应的统称为模糊编码功能,具体包括:通过模糊编码集,预先建立输入编码串与校正编码之间的映射;根据该映射,将该输入编码串转换为相应的校正编码;根据该编码库存储的编码串,识别该输入编码串表示的候选编码串和该转换后的校正编码表示的候选编码串。相应的,模糊音功能包括:通过模糊音集,预先建立输入拼音串与校正音之间的映射;根据该映射,将该输入拼音串转换为相应的校正音;根据该编码库存储的编码,识别该输入拼音串表示的候选编码串和该转换后的校正音表示的候选编码串,并分别呈现给用户,供用户选择。
模糊音功能特别适合那些普通话不够标准及习惯用方言发音的用户使用。比如一些用户对si和shi、zi和zhi分不清楚,可以通过输入法中事先勾选相应的模糊音,例如“zi-zhi”,在输入“zi”时照样可以打出“只”来。通过对一些地方方言的发音和正确读音进行比较,及对用户常见拼音错误的观察。本实施例设置了模糊音集,用于存储输入拼音串与校正音之间的映射。本实施例并不限定模糊音集的具体内容,仅以下面列举的为例加以说明:
平舌音与卷舌音之间的映射:
s<=>sh
c<=>ch
z<=>zh
前鼻音与后鼻音之间的映射:
an<=>ang
en<=>eng
in<=>ing
除些之外,还有一些容易被用户拼错的读音,如:
l<=>n
f<=>h
因为该功能可能会产生很多错误匹配的汉字串,如在输入“zi”时,“只”字可以显示出来,所以用户可以根据自身的需要,关闭此功能。
基于上述设置,简/全拼及模糊音功能总体工作流程,参见图9:输入切分后的拼音*py[i],模糊音功能是否开启,如果是,映射到模糊音集,如果为否,直接判断该拼音是否为全拼,如果为是,与编码库中的拼音比较,如果为否,与编码库中的声母比较,然后判断是否还可以匹配拼音*py[i+1],如果为否,则输出汉字串候选集,如果为是,则处理拼音*py[i+1]。
(3)字词联想及长词组联想。
字词联想,是当用户输入某一汉字串wj后,系统可以通过词库的二元信息(bi-gram字库),查找与该汉字串wj相关的所有wi,并按照二元信息中P(wi|wj)从大到小的顺序显示用户下次可能要输入的汉字串。
例如,参见图10,用户选中“北京”后,在汉字显示区域按照概率由大到小,显示联想的汉字“时间”、“地区”、“移动”、“奥运会”、“人”、“城乡”等,用户可直接从联想字词中选择输入,提高了用户输入的效率。
长词组联想,是根据用户给出的拼音串联想出比拼音串音节个数更长的汉语词组。具体的,如果切分后音节长度(设为i)小于系统可处理的最大长度(设为L),则在字库的一元信息(uni-gram字库)中查找前i个音节为切分后音节、长度为i+j且i+j<=L的汉字候选集。
参见图11,长词组联想在uni-gram字库查找过程为:用户输入编码串,经编码串切分模块,得到切分后音节长度(设为i),判断i是否大于系统可处理的最大长度L,如果是,则设置数据结构st_pinyinLattice中未处理的拼音数据项(unanalysed),如果否,查找词库并保存结果;然后判断i+1是否大于L,如果是,返回;如果否,查找词库并保存结果。
例如,参见图12,当用户以连笔或按键的方式输入beijing时,拼音音节的个数为2,通过在两字词词表里查找得到“北京”和“背景”两个词,同时,输入法将这两个拼音在三字词和四字词uni-gram词典里查找,将用户输入的这个两个拼音与三字词和四字词的前两个字的拼音进行匹配,找到“北京市”和“背井离乡”两个词。
长词组联想具体可用如下代码实现:
    void py2hz(char*py,SwiPY2HZ_INPUT inputFlag)
    {
      int i=0;
      int py_len=0;
      if(SWI_PY2HZ_TRACE==inputFlag)//如果用连笔的方式输入拼音,通过
按键的方式输入的拼音,有专门拼音的处理逻辑
      {
         reset_pinyin_lattice();
       set_lattice_typed_py(py);
       set_lattice_seg_py(g_pinyin_lattice.input_pinyin);
       set_lattice_syllables(g_pinyin_lattice.seg_py);
    }//初始化st_pinyinLattice数据结构里的数据成员
    if(g_pinyin_lattice.py_len<=4){//如果用户输入的拼音长度大于4,则先处
理前4个拼音。
        py_len=g_pinyin_lattice.py_len;
    }else{
        py_len=4;
    }
    for(i=py_len;i>0;i--)
    {
        reset_hanzi_candidates();//重新初始化保存汉字候选集的数据结构。
        search_from_unigram(i,i);//从长度为i的词典里查找前i个拼音。
        if(g_hzCandidatesList.len>0)//如果长度为i的拼音从词典里找到了对
    应的汉字候选集,则停止,否则i减1,从长度为i的拼音从词典里查找。
        {
           g_hzCandidatesList.longer_phraess_count=0;
           break;
        }
    }
    if(i+1<=4)//如果Unigram词典中还有更长的词,继续查找。
    {
        find_from_longer_phrase(i);
    }
    memset(g_pinyin_lattice.unanalysed,′\0′,10);//没处理完的拼音放入
unanalysed中,下一步处理。
    if(i<g_pinyin_lattice.py_len)
    {
        //set the unanlized py to the current py
       for(;i<g_pinyin_lattice.py_len;i++){
          strcat(g_pinyin_lattice.unanalysed,g_pinyin_lattice.py[i]);
       }
   }
   sort_hanzi_candilists_by_fre(g_hzCandidatesList);
}
输入法这两种联想功能,减少了用户输入编码串的长度,从而提高了用户的输入速度。
(4)其他汉字编码。
其他汉字编码,本实施例可以通过更换输入法的编码表来更改不同的输入方式,比如二笔输入法、五笔输入法、郑码输入法、自然码输入法、仓颉输入法等中文输入法,这些输入法的原理和拼音输入法基本相同,只是更改了编码库和uni-gram词库里的汉字编码。
(5)自动调整词频。
自动调整词频算法具体为,设所述候选汉字串为(h1,h2…hn),其对应的概率分别为(p1,p2…pn),并设最佳匹配汉字串为hm,其对应的概率为pm
将除最佳匹配汉字串之外的其他候选汉字串hi的概率pi减去kpi,则其他候选汉字串hi的概率变为(1-k)pi,i≠m,0<k<0.5;
将最佳匹配汉字串hm的概率pm加上kpi,则最佳匹配汉字串hm的概率变为 p m + &Sigma; i = 1 i = n kp i ( i &NotEqual; m ) . 这样就使得用户经常使用的词被提到汉字校正显示器的前面。
利用用户输入的历史信息数据,基于上述算法对uni-gram和bi-gram词库文件进行修改。
对于uni-gram词库,参见图13,用户通过对某一编码串所对应的汉字串的选择,在一元信息数据中,调整这一编码串所对应的汉字串的概率,以及该汉字串在汉字候选集中出现的顺序。
对于bi-gram词库,参见图14,用户通过对联想汉字的选择,在二元信息数据中,调整联想汉字的概率,以及联想汉字在联想汉字候选集中出现的顺序。
在对用户历史数据的学习过程中,语言模型的任务包括对uni-gram词库文件和bi-gram词库文件进行修改,如添加、删除及更新。通过这种方式,用户的输入习惯可以逐渐被反馈到数据文件中,从而使这个输入模型能够适应用户的输入习惯。
(6)自造词功能。
自造词功能是用户通过输入词库里没有词,向词库里添加自己常用的词。具体实现过程为:
当不能识别该输入编码串或者该输入编码串对应的候选汉字串中没有用户欲输入的汉字串时,选取该输入编码串的部分编码;根据该词库,将该部分编码转换为第二候选汉字串,从该第二候选汉字串中选出第二最佳匹配汉字串,将该第二最佳匹配汉字串作为欲输入的汉字串;根据该词库,将除该部分编码之外的其他该输入编码串转换为第三候选汉字串,并按照在该第二最佳匹配汉字串存在的情况下,该第三候选汉字串在该词库中出现概率由大到小的顺序显示给用户,从该第三候选汉字串中选出第三最佳匹配汉字串,将该第三最佳匹配汉字串作为欲输入的汉字串(或者将概率最大的第三候选汉字串默认作为第三最佳匹配汉字串);存储该输入编码串及其对应的该第二最佳匹配汉字串和该第三最佳匹配汉字串。
例如,当用户通过连笔(或按键)的方式输入“beijhyingni”时,在uni-gram词库中没有找到与bei j h ying相匹配的四字词,系统还可以分多次对输入的拼音串进行查找处理,在回退到拼音串bei j的时候找到对应的汉字候选集,在用户在校正显示器上选择“北京”后,系统会记录前两个拼音对应的词为“北京”,然后系统开始处理拼音串h ying ni,重复上面的逻辑后最终得到用户输入的拼音串“beijhyingni”对应的汉字串为“北京欢迎你”,系统自动将拼音串和对应的词添加到系统的词库。这样用户就可以将自造的词或短语添加到词库,下次输入该拼音串的时候,就可以连线或按键方式输入对应的汉字串。
进一步的,连笔键盘中文输入还支持智能拼音、智能笔画、智能英文、大写字母、小写字母、数字和一些特殊符号七种输入模式,以及自定义字体、皮肤等界面元素。
进一步的,连笔键盘文字输入方法,可以实现中文、或类似中文如韩语或日语等的输入,可以用软件加以实现,该软件可以装入和运行在计算机、PDA、移动电话、智能手机、平板电脑或其他电子设备。作为本发明的扩展,该连笔键盘可以被运用和移植到有触摸屏且与用户有交互的各类硬件设备上,该连笔键盘可以采用不同的模式识别算法来实现用户输入的连线到编码串的转换,该连笔键盘可以采用设计不同的输入法键盘界面,该连笔键盘可以采用不同的中文输入逻辑等,均属于本发明保护范围。
本实施例提供的方法,用户通过连线方式输入编码串后,根据编码库存储的编码,识别所述输入编码串表示的候选编码串,从中选出最佳匹配编码串,根据词库,将所述解码后的最佳匹配编码串转换为候选汉字串,从所述候选汉字串中选出最佳匹配汉字串,将其作为欲输入的中文,减少了用户输入过程中的抬笔和落笔的操作,使输入过程更加流畅,极大的提高了输入的速度,给用户一种全新的连线输入汉字的理念,让中文输入变得快捷,轻松。另外,连笔键盘中文输入还具备一定的容错能力,即使连笔轨迹经过了不需要输入的字母,或是没有经过全部需要输入的字母,都可以正确识别,容错性好。
实施例2
参见图15,本实施例提供了一种连笔键盘文字输入的设备,包括:
编码接收模块301,用于接收用户通过连笔方式在键盘上输入的编码串;
编码识别模块302,用于根据编码库存储的编码串,识别该输入编码串表示的候选编码串;
输入模块303,用于根据候选编码串,输入相应的文字串。
其中,文字串可以是汉字串,或类似中文的语言,如韩语或日语等等。
其中,该编码识别模块302具体用于
将该输入编码串与该编码库存储的编码串进行匹配;
按照匹配程度由强到弱的顺序,从该编码库中选出与该输入编码串匹配的编码串作为候选编码串。
其中,该编码识别模块302具体还用于
将该输入编码串与该编码库存储的编码串进行匹配;
按照匹配程度由强到弱的顺序,从该编码库中选出与该输入编码串匹配的编码串作为候选编码串;
根据用户输入的前一个文字串,通过Ngram算法,对该候选编码串的顺序进行调整。
进一步的,该输入模块303包括:
编码选择单元303a,用于从该候选编码串中选出最佳匹配编码串;
编码解码单元303b,用于对该最佳匹配编码串进行解码;
文字转换单元303c,用于根据词库,将该切分后的最佳匹配编码串转换为候选文字集;
文字选择单元303d,用于从该候选文字集中选出最佳匹配文字串;
文字输入单元303e,用于将该最佳匹配文字串作为欲输入的文字串。
其中,该编码选择单元303a具体用于
将该编码库中匹配程度最强的编码串作为最佳匹配编码串,具体的,可以设定如果没有接收到用户手动选择的编码串,执行此操作;
将用户选择的编码串作为最佳匹配编码串,具体的,可以设定如果接收到用户手动选择的编码串,执行此操作。
其中,编码解码单元303b具体用于
根据用户添加的编码切分符,对最佳匹配编码串进行解码。
其中,该文字转换单元303c具体用于
从该词库中查找与该解码后的最佳匹配编码串匹配的第一文字串,或者根据第一公式p(w1…wn)=p(w1)p(w2|w1)p(w3|w2)…p(wn|wn-1)以及第二公式 P ( w n | w n - 1 ) = C * ( w n - 1 w n ) C ( w n - 1 ) , C ( w n - 1 w n ) > 0 &alpha; ( w n - 1 ) P ( w n ) , C ( w n - 1 w n ) = 0 , 计算该解码后的最佳匹配编码串中各个编码对应的文字串的组合概率;其中,p(w1…wn)表示该解码后的最佳匹配编码串各个编码对应的文字串的组合概率,p(wn|wn-1)表示文字串wn-1出现的情况下,文字串wn出现的概率,C(wn-1wn)是wn-1wn在语料中出现的次数,C*(wn-1wn)是通过GOOD-Turing平滑算法得到的wn-1wn打折后在语料里出现的次数,α(wn-1)是回溯权值;按照组合概率由大到小的顺序排列,从中选择概率最大的一个作为第一文字串,将该第一文字串作为该候选文字集;或者,
从该词库中查找与该解码后的最佳匹配编码串的部分编码匹配的第二文字串,将该第二文字串作为该候选文字集;或者,
当该解码后的最佳匹配编码串的各个编码的长度小于预设长度时,在该字库中查找包含该最佳匹配编码串、且长度小于等于该预设长度的编码对应的第三文字串,将该第三文字串作为该候选文字集。
进一步的,可以将上述三种情况的至少一种作为候选文字集。
其中,该文字选择单元303d具体用于
将该候选文字集中概率最大的文字串作为最佳匹配文字串,具体的,可以设定如果没有接收到用户手动选择的文字串,执行此操作;
将该用户选择的文字串替换该概率最大的文字串,将该用户选择的文字串作为最佳匹配文字串,具体的,可以设定如果接收到用户手动选择的文字串,执行此操作。
其中,参见图16,该设备还包括:命令模块304,用于当该输入编码串包括命令触发键和至少一个命令编码时,
根据编码库存储的编码串,识别该命令编码表示的候选命令;
从该候选命令中选择一个作为输入命令,并执行该输入命令。
其中,该设备还包括:编码状态模块305,用于判断解码后得到组成该最佳匹配编码串的各个编码的状态是完整编码或非完整编码,并存储判断结果,具体的,可将其存储到预设的数组。其中,如果是拼音编码,则完整编码和非完整编码则分别对应简拼和全拼。
其中,该设备还包括:模糊音模块306,用于通过模糊编码集,预先建立输入编码串与校正编码之间的映射;
根据该映射,将该输入编码串转换为相应的校正编码;
该编码识别模块302,还用于根据该编码库存储的编码串,识别该输入编码串表示的候选编码串和该转换后的校正编码表示的候选编码串。
其中,该设备还包括:字词关联模块307,用于在该字库中查找与该最佳匹配文字串相关的文字串;
在该最佳匹配文字串出现的情况下,按照该相关的文字串出现概率由大到小的顺序,提示用户下一次输入的候选文字串。
其中,该设备还包括:词频调整模块308,用于设该候选文字串为(h1,h2…hn),其对应的概率分别为(p1,p2…pn),并设该最佳匹配文字串为hm,其对应的概率为pm
将除该最佳匹配文字串之外的其他候选文字串hi的概率pi减去kpi,则该其他候选文字串hi的概率变为(1-k)pi,i≠m,0<k<0.5;
将该最佳匹配文字串hm的概率pm加上kpi,则该最佳匹配文字串hm的概率变为 p m + &Sigma; i = 1 i = n kp i ( i &NotEqual; m ) .
其中,该设备还包括:分解处理模块309,用于当不能识别该输入编码串或者该输入编码串对应的候选文字串中没有用户欲输入的文字串时,选取该输入编码串的部分编码;
根据该词库,将该部分编码转换为第二候选文字集,从该第二候选文字串集选出第二最佳匹配文字串,将该第二最佳匹配文字串作为第二欲输入的文字串;
根据该词库,将除该部分编码之外的其他该输入编码串转换为第三候选文字集,并按照在该第二最佳匹配文字串存在的情况下,该第三候选文字集中的文字串在该词库中出现概率由大到小的顺序排列,从该第三候选文字集中选出第三最佳匹配文字串,将该第三最佳匹配文字串作为第三欲输入的文字串;
进一步的,第二欲输入的文字串和第三欲输入的文字串为用户欲输入的编码串。
其中,该设备还包括:存储模块310,用于在编码库中存储输入编码串,并将输入编码串及其对应的第二最佳匹配文字串和第三最佳匹配文字串存储到词库中。
本实施例提供的设备,与方法实施例属于同一构思,其实现过程详见方法实施例,这里不再赘述。
本实施例提供的设备,通过接收用户以连线键盘方式输入的编码串后,根据编码库存储的编码,识别所述输入编码串表示的候选编码串,从中选出最佳匹配编码串,根据词库,将所述解码后的最佳匹配编码串转换为候选文字串,从所述候选文字串中选出最佳匹配文字串,将其作为欲输入的中文,减少了用户输入过程中的抬笔和落笔的操作,使输入过程更加流畅,极大的提高了输入的速度,给用户一种全新的连线输入文字的理念,让中文输入变得快捷,轻松。另外,连笔键盘中文输入还具备一定的容错能力,即使连笔轨迹经过了不需要输入的字母,或是没有经过全部需要输入的字母,都可以正确识别,容错性好。
以上实施例提供的技术方案中的全部或部分内容可以通过软件编程实现,其软件程序存储在可读取的存储介质中,存储介质例如:计算机中的硬盘、光盘或软盘。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (30)

1、一种连笔键盘文字输入的方法,其特征在于,所述方法包括:
接收用户通过连笔方式在键盘上输入的编码串;
根据编码库存储的编码串,识别所述输入编码串表示的候选编码串;
根据所述候选编码串,输入相应的文字串。
2、如权利要求1所述的方法,其特征在于,所述根据编码库存储的编码串,识别所述输入编码串表示的候选编码串包括:
将所述输入编码串与所述编码库存储的编码串进行匹配;
按照匹配程度由强到弱的顺序,从所述编码库中选出与所述输入编码串匹配的编码串作为候选编码串。
3、如权利要求1所述的方法,其特征在于,所述根据编码库存储的编码串,识别所述输入编码串表示的候选编码串包括:
将所述输入编码串与所述编码库存储的编码串进行匹配;
按照匹配程度由强到弱的顺序,从所述编码库中选出与所述输入编码串匹配的编码串作为候选编码串;
根据用户输入的前一个文字串,通过Ngram算法,对所述候选编码串的顺序进行调整。
4、如权利要求1所述的方法,其特征在于,所述根据所述候选编码串,输入相应的文字串包括:
从所述候选编码串中选出最佳匹配编码串;
对所述最佳匹配编码串进行解码;
根据词库,将所述解码后的最佳匹配编码串转换为候选文字集;
从所述候选文字集中选出最佳匹配文字串;
将所述最佳匹配文字串作为欲输入的文字串。
5、如权利要求4所述的方法,其特征在于,所述从所述候选编码串中选出最佳匹配编码串包括:
将所述编码库中匹配程度最强的编码串作为最佳匹配编码串;或者,
将用户选择的编码串作为最佳匹配编码串。
6、如权利要求4所述的方法,其特征在于,所述对所述最佳匹配编码串进行解码之后包括:
判断解码后得到的所述最佳匹配编码串的各个编码的状态是完整编码或非完整编码,并存储判断结果。
7、如权利要求6所述的方法,其特征在于,所述根据词库,将所述解码后的最佳匹配编码串转换为候选文字集包括:
从所述词库中查找与所述解码后的最佳匹配编码串匹配的第一文字串,或者根据第一公式p(w1…wn)=p(w1)p(w2|w1)p(w3|w2)…p(wn|wn-1)以及第二公式 P ( w n | w n - 1 ) = C * ( w n - 1 w n ) C ( w n - 1 ) , C ( w n - 1 w n ) > 0 &alpha; ( w n - 1 ) P ( w n ) , C ( w n - 1 w n ) = 0 , 计算所述解码后的最佳匹配编码串中各个编码对应的文字串的组合概率;其中,p(w1…wn)表示所述解码后的最佳匹配编码串各个编码对应的文字串的组合概率,p(wn|wn-1)表示文字串wn-1出现的情况下,文字串wn出现的概率,C(wn-1wn)是wn-1wn在语料中出现的次数,C*(wn-1wn)是通过GOOD-Turing平滑算法得到的wn-1wn打折后在语料里出现的次数,α(wn-1)是回溯权值;按照组合概率由大到小的顺序排列,从中选择概率最大的一个作为第一文字串,将所述第一文字串作为所述候选文字集;或者,
从所述词库中查找与所述解码后的最佳匹配编码串的部分编码匹配的第二文字串,将所述第二文字串作为所述候选文字集;或者,
当所述解码后的最佳匹配编码串对应的文字串的个数小于预设长度时,在所述字库中查找包含所述最佳匹配编码串、且长度小于等于所述预设长度的编码对应的第三文字串,将所述第三文字串作为所述候选文字集。
8、如权利要求4所述的方法,其特征在于,所述从所述候选文字集中选出最佳匹配文字串包括:
将所述候选文字集中概率最大的文字串作为最佳匹配文字串;或者,
将用户选择的文字串替换所述概率最大的文字串,将所述用户选择的文字串作为最佳匹配文字串。
9、如权利要求4所述的方法,其特征在于,当所述输入编码串包括命令触发键和至少一个命令编码时,所述方法还包括:
根据编码库存储的编码串,识别所述命令编码表示的候选命令;
从所述候选命令中选择一个作为输入命令,并执行所述输入命令。
10、如权利要求4所述的方法,其特征在于,所述对所述最佳匹配编码串进行解码包括:
根据用户添加的编码切分符,对所述最佳匹配编码串进行解码。
11、如权利要求1所述的方法,其特征在于,所述方法还包括:
通过模糊编码集,预先建立输入编码串与校正编码之间的映射;
根据所述映射,将所述输入编码串转换为相应的校正编码;
则根据编码库存储的编码串,识别所述输入编码串表示的候选编码串包括:
根据所述编码库存储的编码串,识别所述输入编码串表示的候选编码串和所述转换后的校正编码表示的候选编码串。
12、如权利要求4所述的方法,其特征在于,所述将所述最佳匹配文字串作为欲输入的文字串之后包括:
在所述字库中查找与所述最佳匹配文字串相关的文字串;
在所述最佳匹配文字串出现的情况下,按照所述相关的文字串出现概率由大到小的顺序,提示用户下一次输入的候选文字串。
13、如权利要求4所述的方法,其特征在于,所述从所述候选文字串中选出最佳匹配文字串之后包括:
设所述候选文字串为(h1,h2…hn),其对应的概率分别为(p1,p2…pn),并设所述最佳匹配文字串为hm,其对应的概率为pm
将除所述最佳匹配文字串之外的其他候选文字串hi的概率pi减去kpi,则所述其他候选文字串hi的概率变为(1-k)pi,i≠m,0<k<0.5;
将所述最佳匹配文字串hm的概率pm加上kpi,则所述最佳匹配文字串hm的概率变为 p m + &Sigma; i = 1 i = n kp i ( i &NotEqual; m ) .
14、如权利要求1所述的方法,其特征在于,所述方法还包括:
当所述编码库中不存在所述输入编码串或者所述输入编码串对应的候选文字串中没有用户欲输入的文字串时,选取所述输入编码串的部分编码;
根据所述词库,将所述部分编码转换为第二候选文字集,从所述第二候选文字串集选出第二最佳匹配文字串,将所述第二最佳匹配文字串作为第二欲输入的文字串;
根据所述词库,将除所述部分编码之外的其他所述输入编码串转换为第三候选文字集,并按照在所述第二最佳匹配文字串存在的情况下,所述第三候选文字集中的文字串在所述词库中出现概率由大到小的顺序排列,从所述第三候选文字集中选出第三最佳匹配文字串,将所述第三最佳匹配文字串作为第三欲输入的文字串。
15、如权利要求14所述的方法,其特征在于,所述方法还包括:
在所述编码库中存储所述输入编码串,并将所述输入编码串及其对应的所述第二最佳匹配文字串和所述第三最佳匹配文字串存储到所述词库中。
16、一种连笔键盘文字输入的设备,其特征在于,所述设备包括:
编码接收模块,用于接收用户通过连笔方式在键盘上输入的编码串;
编码识别模块,用于根据编码库存储的编码串,识别所述输入编码串表示的候选编码串;
输入模块,用于根据所述候选编码串,输入相应的文字串。
17、如权利要求16所述的设备,其特征在于,所述编码识别模块具体用于
将所述输入编码串与所述编码库存储的编码串进行匹配;
按照匹配程度由强到弱的顺序,从所述编码库中选出与所述输入编码串匹配的编码串作为候选编码串。
18、如权利要求16所述的设备,其特征在于,所述编码识别模块具体用于
将所述输入编码串与所述编码库存储的编码串进行匹配;
按照匹配程度由强到弱的顺序,从所述编码库中选出与所述输入编码串匹配的编码串作为候选编码串;
根据用户输入的前一个文字串,通过Ngram算法,对所述候选编码串的顺序进行调整。
19、如权利要求16所述的设备,其特征在于,所述输入模块包括:
编码选择单元,用于从所述候选编码串中选出最佳匹配编码串;
编码解码单元,用于对所述最佳匹配编码串进行解码;
文字转换单元,用于根据词库,将所述解码后的最佳匹配编码串转换为候选文字集;
文字选择单元,用于从所述候选文字集中选出最佳匹配文字串;
文字输入单元,用于将所述最佳匹配文字串作为欲输入的文字串。
20、如权利要求19所述的设备,其特征在于,所述编码选择单元具体用于
将所述编码库中匹配程度最强的编码串作为最佳匹配编码串;或者,
将用户选择的编码串作为最佳匹配编码串。
21、如权利要求19所述的设备,其特征在于,所述编码解码单元具体用于
根据用户添加的编码切分符,对所述最佳匹配编码串进行解码。
22、如权利要求16所述的设备,其特征在于,所述设备还包括:编码状态模块,用于判断解码后得到的所述最佳匹配编码串的各个编码的状态是完整编码或非完整编码,并存储判断结果。
23、如权利要求22所述的设备,其特征在于,所述文字转换单元具体用于
从所述词库中查找与所述解码后的最佳匹配编码串匹配的第一文字串,或者根据第一公式p(w1…wn)=p(w1)p(w2|w1)p(w3|w2)…p(wn|wn-1)以及第二公式 P ( w n | w n - 1 ) = C * ( w n - 1 w n ) C ( w n - 1 ) , C ( w n - 1 w n ) > 0 &alpha; ( w n - 1 ) P ( w n ) , C ( w n - 1 w n ) = 0 , 计算所述解码后的最佳匹配编码串中各个编码对应的文字串的组合概率;其中,p(w1…wn)表示所述解码后的最佳匹配编码串各个编码对应的文字串的组合概率,p(wn|wn-1)表示文字串wn-1出现的情况下,文字串wn出现的概率,C(wn-1wn)是wn-1wn在语料中出现的次数,C*(wn-1wn)是通过GOOD-Turing平滑算法得到的wn-1wn打折后在语料里出现的次数,α(wn-1)是回溯权值;按照组合概率由大到小的顺序排列,从中选择概率最大的一个作为第一文字串,将所述第一文字串作为所述候选文字集;或者,
从所述词库中查找与所述解码后的最佳匹配编码串的部分编码匹配的第二文字串,将所述第二文字串作为所述候选文字集;或者,
当所述解码后的最佳匹配编码串的对应的文字串的个数小于预设长度时,在所述字库中查找包含所述最佳匹配编码串、且长度小于等于所述预设长度的编码对应的第三文字串,将所述第三文字串作为所述候选文字集。
24、如权利要求19所述的设备,其特征在于,所述文字选择单元,具体用于将所述候选文字集中概率最大的文字串作为最佳匹配文字串;或者,
将用户选择的文字串替换所述概率最大的文字串,将所述用户选择的文字串作为最佳匹配文字串。
25、如权利要求16所述的设备,其特征在于,所述设备还包括:命令模块,用于当所述输入编码串包括命令触发键和至少一个命令编码时,
根据编码库存储的编码串,识别所述命令编码表示的候选命令;
从所述候选命令中选择一个作为输入命令,并执行所述输入命令。
26、如权利要求16所述的设备,其特征在于,所述设备还包括:模糊编码模块,用于通过模糊编码集,预先建立输入编码串与校正编码之间的映射;
根据所述映射,将所述输入编码串转换为相应的校正编码;
所述编码识别模块,还用于根据所述编码库存储的编码串,识别所述输入编码串表示的候选编码串和所述转换后的校正编码表示的候选编码串。
27、如权利要求16所述的设备,其特征在于,所述设备还包括:字词关联模块,用于在所述字库中查找与所述最佳匹配文字串相关的文字串;
在所述最佳匹配文字串出现的情况下,按照所述相关的文字串出现概率由大到小的顺序,提示用户下一次输入的候选文字串。
28、如权利要求16所述的设备,其特征在于,所述设备还包括:词频调整模块,用于设所述候选文字串为(h1,h2…hn),其对应的概率分别为(p1,p2…pn),并设所述最佳匹配文字串为hm,其对应的概率为pm
将除所述最佳匹配文字串之外的其他候选文字串hi的概率pi减去kpi,则所述其他候选文字串hi的概率变为(1-k)pi,i≠m,0<k<0.5;
将所述最佳匹配文字串hm的概率pm加上kpi,则所述最佳匹配文字串hm的概率变为 p m + &Sigma; i = 1 i = n kp i ( i &NotEqual; m ) .
29、如权利要求16所述的设备,其特征在于,所述设备还包括:分解处理模块,用于当所述编码库中不存在所述输入编码串或者所述输入编码串对应的候选文字串中没有用户欲输入的文字串时,选取所述输入编码串的部分编码;
根据所述词库,将所述部分编码转换为第二候选文字集,从所述第二候选文字串集选出第二最佳匹配文字串,将所述第二最佳匹配文字串作为第二欲输入的文字串;
根据所述词库,将除所述部分编码之外的其他所述输入编码串转换为第三候选文字集,并按照在所述第二最佳匹配文字串存在的情况下,所述第三候选文字集中的文字串在所述词库中出现概率由大到小的顺序排列,从所述第三候选文字集中选出第三最佳匹配文字串,将所述第三最佳匹配文字串作为第三欲输入的文字串。
30、如权利要求29所述的设备,其特征在于,所述设备还包括:存储模块,用于在所述编码库中存储所述输入编码串,并将所述输入编码串及其对应的所述第二最佳匹配文字串和所述第三最佳匹配文字串存储到所述词库中。
CN200910178326.2A 2009-10-16 2009-10-16 一种连笔键盘文字输入的方法和设备 Expired - Fee Related CN101667099B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200910178326.2A CN101667099B (zh) 2009-10-16 2009-10-16 一种连笔键盘文字输入的方法和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910178326.2A CN101667099B (zh) 2009-10-16 2009-10-16 一种连笔键盘文字输入的方法和设备

Publications (2)

Publication Number Publication Date
CN101667099A true CN101667099A (zh) 2010-03-10
CN101667099B CN101667099B (zh) 2016-04-06

Family

ID=41803730

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910178326.2A Expired - Fee Related CN101667099B (zh) 2009-10-16 2009-10-16 一种连笔键盘文字输入的方法和设备

Country Status (1)

Country Link
CN (1) CN101667099B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014139173A1 (en) * 2013-03-15 2014-09-18 Google Inc. Virtual keyboard input for international languages
CN104834392A (zh) * 2015-06-05 2015-08-12 庄建楼 一种笔画动态组字的汉字输入方法
CN105224666A (zh) * 2015-10-08 2016-01-06 广东欧珀移动通信有限公司 一种输入方法、装置以及终端
CN107340880A (zh) * 2016-05-03 2017-11-10 北京搜狗科技发展有限公司 一种联想输入方法、装置及用于实现联想输入的电子设备
CN108700996A (zh) * 2016-02-23 2018-10-23 迈思慧公司 用于多输入管理的系统和方法
CN110780750A (zh) * 2018-07-31 2020-02-11 北京搜狗科技发展有限公司 一种输入方法及装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100464285C (zh) * 2004-08-30 2009-02-25 黄金富 手机码手机输入平台
CN101286118B (zh) * 2007-04-10 2012-04-18 北京搜狗科技发展有限公司 一种快速调用程序指令的方法、系统
CN101441527B (zh) * 2008-12-24 2010-10-06 腾讯科技(深圳)有限公司 拼音输入中提示正确读音的方法及装置
CN101504585B (zh) * 2009-03-09 2011-04-06 广东威创视讯科技股份有限公司 触摸屏的滑动式输入方法

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014139173A1 (en) * 2013-03-15 2014-09-18 Google Inc. Virtual keyboard input for international languages
CN105431809A (zh) * 2013-03-15 2016-03-23 谷歌公司 用于国际语言的虚拟键盘输入
US10073536B2 (en) 2013-03-15 2018-09-11 Google Llc Virtual keyboard input for international languages
CN105431809B (zh) * 2013-03-15 2018-12-18 谷歌有限责任公司 用于国际语言的虚拟键盘输入
CN104834392A (zh) * 2015-06-05 2015-08-12 庄建楼 一种笔画动态组字的汉字输入方法
CN104834392B (zh) * 2015-06-05 2017-09-08 庄建楼 一种笔画动态组字的汉字输入方法
CN105224666A (zh) * 2015-10-08 2016-01-06 广东欧珀移动通信有限公司 一种输入方法、装置以及终端
CN108700996A (zh) * 2016-02-23 2018-10-23 迈思慧公司 用于多输入管理的系统和方法
CN107340880A (zh) * 2016-05-03 2017-11-10 北京搜狗科技发展有限公司 一种联想输入方法、装置及用于实现联想输入的电子设备
CN107340880B (zh) * 2016-05-03 2021-11-02 北京搜狗科技发展有限公司 一种联想输入方法、装置及用于实现联想输入的电子设备
CN110780750A (zh) * 2018-07-31 2020-02-11 北京搜狗科技发展有限公司 一种输入方法及装置

Also Published As

Publication number Publication date
CN101667099B (zh) 2016-04-06

Similar Documents

Publication Publication Date Title
CN106598939B (zh) 一种文本纠错方法及装置、服务器、存储介质
CN109190131B (zh) 一种基于神经机器翻译的英语单词及其大小写联合预测方法
CN100549915C (zh) 去多义性语音输入系统和方法
CN102455845B (zh) 一种文字输入方法和装置
CN103578464A (zh) 语言模型的建立方法、语音辨识方法及电子装置
CN102915122B (zh) 基于语言模型的智能移动平台拼音输入法
CN101667099B (zh) 一种连笔键盘文字输入的方法和设备
CN105404621A (zh) 一种用于盲人读取汉字的方法及系统
US20100106481A1 (en) Integrated system for recognizing comprehensive semantic information and the application thereof
CN100462901C (zh) Gb拼音输入法
CN102214238B (zh) 一种汉语词语相近性匹配装置及方法
CN100504733C (zh) 音形编码汉字输入法
CN100403239C (zh) 基于英文键盘的藏文输入法
CN103246354B (zh) 以通用语文字编码表达汉字的输入法及其键盘
CN111428509B (zh) 一种基于拉丁字母的维吾尔语处理方法和系统
CN105511636B (zh) 改进的全部汉字汉词简易无重码统一输入法
CN114896966A (zh) 一种中文文本语法错误定位方法、系统、设备及介质
CN114548049A (zh) 一种数字正则化方法、装置、设备及存储介质
CN100465860C (zh) 数字键盘智能拼音汉字输入方法
CN112307759A (zh) 一种面向社交网络不规则短文本的粤语分词方法
CN116822495B (zh) 基于对比学习的汉-老、泰平行句对抽取方法及装置
CN100390711C (zh) 一种中文词的计算机处理和键盘输入的方法
CN116306597A (zh) 一种中文拼写纠错方法
CN102279653A (zh) 一种用于输入中文的键盘
CN101587381A (zh) 音形汉字无重码输入法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160406

Termination date: 20161016

CF01 Termination of patent right due to non-payment of annual fee