在输入法词库中添加未登录词的方法及文字输入装置
技术领域
本发明涉及文字输入技术,尤其涉及一种在输入法词库中添加未登录词的方法及文字输入装置。
背景技术
中文输入软件是运行于操作系统上的一个工具软件,是一种把键盘输入的编码或其他非键盘输入的媒体数据转换为中文输入的软件。目前,中文输入软件从输入方式来区分可分为键盘中文输入软件和非键盘中文输入软件两种,下面分别予以说明:
键盘中文输入软件就是利用键盘,根据一定的编码规则来输入汉字的一种方式。英文字母只有26个,它们对应着键盘上的26个字母键,所以,对于英文输入而言是不存在什么输入软件的,直接输入英文字母就可以。汉字的字数有几万个,它们和键盘没有任何对应关系,但为了向电脑中输入汉字,我们必须对汉字进行编码,并将这些编码与键盘上的键关联起来,才能使我们通过键盘输入某个汉字的编码,然后将编码转换成汉字。
目前,汉字编码方案已经有数百种,其中在电脑上已经运行的就有几十种,作为一种图形文字,汉字是由字的音、形、义来共同表达的,汉字输入的编码方法,基本上都是采用将音、形、义与特定的键相联系,再根据不同汉字对所述特定的键进行组合来完成汉字输入的目的。
非键盘中文输入软件包括手写输入软件、语音输入软件、OCR(OpticalCharacter Recognition,光学字符识别)输入软件等。
手写输入软件是一种笔式环境下的手写中文识别输入软件,符合中国人用笔写字的习惯,只要在手写板上按平常的习惯写字,电脑就能将其识别显示出来。手写输入软件需要配套的硬件手写板,在配套的手写板上用笔(可以是任何类型的硬笔)来书写录入汉字,不仅方便、快捷,而且错字率也比较低。另外也可在指定区域内通过操作鼠标写出字来,然后使用手写输入软件转换成汉字,只是鼠标操作要求非常熟练。
语音输入软件是通过话筒输入声音然后转换成文字的一种输入软件。虽然使用起来很方便,但错字率仍然比较高,特别是一些未经训练的专业名词以及生僻字。语音输入软件在硬件方面要求电脑必须配备声卡及麦克风,用户通过麦克风使用普通话进行文字录入。如果用户的普通话不够标准,通过使用语音输入软件提供的语音训练程序进行一段时间的训练后,同样可以通过语音来实现文字输入。
OCR输入软件把要输入的文稿通过扫描仪转化为图形进行文字输入,原稿的印刷质量越高,识别的准确率就越高。
未登录词是指在词典中没有收录过,但又确实能称为词的词,最典型的是人名及地名,现有技术中在中文输入软件的词库中添加未登录词的方法主要采用以下两种方式,下面分别予以说明:
第一种在中文输入软件的词库中添加未登录词的方法是在中文输入软件的自定义词设置窗口中手动添加未登录词,这种方法不具有即时性,用户每次向词库中添加未登录词时都要打开自定义词设置窗口进行添加,操作较烦琐。
第二种在中文输入软件的词库中添加未登录词的方法是中文输入法程序根据用户的输入习惯自动学习添加未登录词,其主要过程如下:首先,用户输入未登录词的连续拼音串,然后选出未登录词中的每个汉字的序号,中文输入软件即可将该未登录词添加到词库中。这种方法对用户的输入习惯有一定的限制,要求用户必须采用整体输入的方式输入未登录词,如果用户采用分别输入未登录词中每个独立的字的方式来输入未登录词,则中文输入软件无法学习到该未登录词。
发明内容
本发明提供一种在输入法词库中添加未登录词的方法及文字输入装置,使得输入法程序可从用户输入的汉字序列中自动识别出其中的未登录词,将其添加到自身的词库中。
本发明技术方案包括:
一种在输入法词库中添加未登录词的方法,包括步骤:
A、检测用户输入的文字序列,根据其中的间隔符号提取序列中包含的文字片断;
B、识别所述文字片断中包含的未登录词,将该未登录词与其对应的键值编码序列关联保存到输入法的词库中。
较佳的,所述步骤B具体包括步骤:
对所述文字片断进行原子切分,将其中每一个原子标注为一个切分单元;
根据当前输入法词库中包含的词汇,识别出所述原子序列中包含的现有词汇,将其标注为切分单元,并且根据预先确定的隐马尔科夫模型参数,利用Viterbi算法对所述原子序列进行角色标注,以此识别出所述原子序列中包含的未登录词,则将其标注为切分单元;
根据切分单元的标注结果确定出最终的切分词图,从该切分词图中确定出概率最大的分词路径,将该分词路径中包含的未登录词与其对应的键值编码序列关联保存到输入法的词库中。
较佳的,所述隐马尔科夫模型参数包括初始概率、转移概率及发射概率。
较佳的,所述未登录词为人名和/或地名。
较佳的,所述未登录词对应的键值编码序列为拼音键值编码序列或者字形键值编码序列。
较佳的,将所述未登录词与其对应的键值编码序列关联保存到输入法的词库中的具体过程为:
判断输入法词库的索引表中是否存在所述未登录词对应的键值编码序列,若是,则将所述未登录词添加到该键值编码序列指向的链表中,否则,将所述键值编码序列添加到输入法词库的索引表中,然后将所述未登录词添加到该键值编码序列指向的链表中。
一种文字输入装置,包括:
文字片断获取模块,用于检测用户输入的文字序列,根据其中的间隔符号提取序列中包含的文字片断;
未登录词识别模块,用于识别所述文字片断中包含的未登录词,将该未登录词与其对应的键值编码序列关联保存到输入法的词库中。
较佳的,所述未登录词识别模块具体包括:
原子切分子模块,用于对所述文字片断进行原子切分,将其中每一个原子标注为一个切分单元;
现有词汇标注子模块,用于根据当前输入法词库中包含的词汇,识别出原子序列中包含的现有词汇,将其标注为切分单元;
未登录词标注子模块,用于根据预先确定的隐马尔科夫模型参数,利用Viterbi算法对原子序列进行角色标注,以此识别出所述原子序列中包含的未登录词,则将其标注为切分单元;
分词路径确定子模块,用于根据切分单元的标注结果确定出切分词图,从该切分词图中确定出概率最大的分词路径;
未登录词添加子模块,用于将所述概率最大的分词路径中包含的未登录词与其对应的键值编码序列关联保存到输入法的词库中。
较佳的,所述未登录词为人名和/或地名。
较佳的,所述未登录词对应的键值编码序列为拼音键值编码序列或者字形键值编码序列。
本发明有益效果如下:
本发明所述技术方案通过检测用户输入的文字序列,根据其中的间隔符号提取序列中包含的文字片断,并且识别出该文字片断中包含的未登录词,将该未登录词与其对应的键值编码序列关联保存到输入法的词库中。从而在不改变用户输入习惯的前提下,无需用户进行任何操作,即可自动将用户输入的文字序列中包含的未登录词添加到输入法词库中。
附图说明
图1为本发明在输入法词库中添加未登录词的方法的较佳实施例的流程图;
图2为本发明实施例中对文字序列进行原子切分后建立的切分词图的示意图;
图3为本发明实施例中利用Viterbi算法对图2所示原子序列进行未登录词识别的示意图;
图4为本发明实施例中将未登录词添加到其对应的拼音键值编码序列指向的链表中的示意图;
图5为本发明文字输入装置的组成结构框图。
具体实施方式
本发明技术方案的主要设计构思是针对现有技术中在向中文输入软件的词库中添加未登录词时,需要通过自定义词设置窗口添加,操作较烦琐的问题,或者需要由中文输入法程序根据用户的输入习惯自动学习添加,对用户的输入习惯有一定的限制的问题,而提出一种在输入法词库中添加未登录词的方法及文字输入装置,本发明所述技术方案通过检测用户输入的文字序列,根据其中的间隔符号提取序列中包含的文字片断,并且识别出该文字片断中包含的未登录词,将该未登录词与其对应的键值编码序列关联保存到输入法的词库中。从而使得输入法程序在不改变用户输入习惯的前提下,能够自动将用户输入的文字序列中包含的未登录词添加到输入法词库中。
下面将结合各个附图对本发明技术方案的主要实现原理、具体实施方式及其对应能够达到的有益效果进行详细的阐述。
请参阅图1,该图为本发明在输入法词库中添加未登录词的方法的较佳实施例的流程图,其主要包括步骤:
步骤S10、在用户进行文字输入的过程中,输入法程序检测用户输入的文字序列,根据其中的间隔符号提取序列中包含的文字片断,所述文字序列中的间隔符号为标点符号或非文字符号。
输入法程序检测用户输入键值编码序列,若用户输入的键值编码对应的是文字,则将该文字添加到预先设置的一块初始为空的内存缓冲区中,如果用户输入的键值编码对应的是标点符号或其他非文字符号,如空格,回车,Tab等,并且当前缓冲区非空,则提取缓冲区中的文字片断,然后清空缓冲区,等待接下来的输入。
步骤S11、输入法程序对提取出的文字片断进行原子切分,将其中每一个原子标注为一个切分单元;
所述原子为分词的最小单位,典型的一个汉字就是一个原子,一个连续的半角字符串也是一个原子。
输入法程序对提取出的文字片断进行从前往后的扫描,按顺序切分出其中所有的原子并保存到一个数组中,之后根据数组中存储的原子个数建立初始的切分词图,将其中每一个原子标注为一个切分单元,在切分词图中,在原子两侧的节点之间添加一条圆弧用以标注该切分单元;请参阅图2,该图为对文字序列进行原子切分后建立的切分词图的示意图,其中每两个节点之间的一个圆弧代表一个切分单元。
步骤S12、输入法程序对切分词图中的原子序列进行遍历,根据当前输入法词库中包含的词汇,查找该原子序列中包含的在输入法词库中出现过的词,将其标注为切分单元,在切分词图中,在查找出的现有词汇两侧的节点之间添加一条圆弧用以标注该切分单元。
步骤S13、输入法程序根据预先确定的隐马尔科夫模型参数,包括初始概率、转移概率和发射概率,利用Viterbi算法对切分词图中的原子序列进行角色标注,以此识别出所述原子序列中包含的未登录词,将其标注为切分单元;
本实施例中所述未登录词为人名和/或地名。
隐马尔科夫模型是一种用于序列标注的统计模型,下面首先对本发明中用到的一些隐马尔科夫模型参数进行解释:
初始概率:指一个角色出现在文字序列起始位置的概率。
转移概率:指的是角色A出现的情况下,下一个角色是角色B的概率。
发射概率:指的是角色R出现的所有次数中原子O作为角色R出现的次数所占的比例。
进行未登录词识别之前要先确定出隐马尔科夫模型的参数,包括初始概率、转移概率和发射概率,隐马尔科夫模型参数的确定过程采用现有技术中常用的方式完成,这里不再给予过多赘述。
根据确定出的隐马尔科夫模型的参数,利用Viterbi算法对切分词图中的原子序列进行角色标注,利用Viterbi算法进行角色标注的过程同样为现有技术,因此不再给予过多赘述。本发明中设置的角色标记主要包括以下几种:
人名中的姓:X
二字人名中的名:S
三字人名中名的第一个字:H
三字人名中名的第二个字:T
地名的首字:F
地名的中间的字:M
地名的末尾字:E
其他:O
根据角色标注结果识别出原子序列中包含的人名和/或地名未登录词,将其标注为切分单元,在切分词图中,在识别出的未登录词两侧的节点之间添加一条圆弧用以标注该切分单元。请参阅图3,该图为利用Viterbi算法对图2所示原子序列进行未登录词识别的示意图,根据角色标注结果,“张会鹏”被识别为人名未登录词。
步骤S14、输入法程序根据切分单元的标注结果确定出最终的切分词图,从该切分词图中确定出概率最大的分词路径,将该分词路径中包含的未登录词与其对应的键值编码序列关联保存到输入法的词库中;
所述未登录词对应的键值编码序列为拼音键值编码序列或者字形键值编码序列。
其中,将未登录词与其对应的键值编码序列关联保存到输入法的词库中的具体过程如下:
判断输入法词库的索引表中是否存在所述未登录词对应的键值编码序列,若是,则将所述未登录词添加到该键值编码序列指向的链表中,否则,将所述键值编码序列添加到输入法词库的索引表中,然后将所述未登录词添加到该键值编码序列指向的链表中,请参阅图4,该图为将未登录词添加到其对应的拼音键值编码序列指向的链表中的示意图。
在本发明上述方法的实现流程中,步骤S12及步骤S13无必然的先后顺序,可以同时进行,也可以根据需要按序进行。
相应于本发明上述提出的方法原理,本发明这里还对应的提出了一种文字输入装置,请参阅图5,该图为本发明文字输入装置的组成结构框图,其主要包括文字片断获取模块50及未登录词识别模块60,其中各个组成模块的主要作用如下:
文字片断获取模块50,用于检测用户输入的文字序列,根据其中的间隔符号提取序列中包含的文字片断;
检测用户输入键值编码序列,若用户输入的键值编码对应的是文字,则将该文字添加到预先设置的一块初始为空的内存缓冲区中,如果用户输入的键值编码对应的是标点符号或其他非文字符号,并且当前缓冲区非空,则提取缓冲区中的文字片断,然后清空缓冲区,等待接下来的输入。
未登录词识别模块60,用于识别所述文字片断中包含的未登录词,所述未登录词为人名和/或地名,将该未登录词与其对应的键值编码序列关联保存到输入法的词库中。
所述未登录词识别模块60具体包括原子切分子模块601、现有词汇标注子模块602、未登录词标注子模块603、分词路径确定子模块604及未登录词添加子模块605,其中各个子模块的主要作用如下:
原子切分子模块601,用于对所述文字片断进行原子切分,将其中每一个原子标注为一个切分单元;
现有词汇标注子模块602,用于根据当前输入法词库中包含的词汇,识别出原子序列中包含的现有词汇,将其标注为切分单元;
未登录词标注子模块603,用于根据预先确定的隐马尔科夫模型参数,利用Viterbi算法对原子序列进行角色标注,以此识别出所述原子序列中包含的未登录词,则将其标注为切分单元;
分词路径确定子模块604,用于根据切分单元的标注结果确定出切分词图,从该切分词图中确定出概率最大的分词路径;
未登录词添加子模块605,用于将所述概率最大的分词路径中包含的未登录词与其对应的键值编码序列关联保存到输入法的词库中,所述未登录词对应的键值编码序列为拼音键值编码序列或者字形键值编码序列。
有关本发明文字输入装置中的其他相关技术实现细节请参照本发明上述方法原理中的相应技术实现细节描述,这里不再给以过多赘述。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。