CN102866782B - 一种提高整句生成效率的输入法和输入法系统 - Google Patents
一种提高整句生成效率的输入法和输入法系统 Download PDFInfo
- Publication number
- CN102866782B CN102866782B CN201110187945.5A CN201110187945A CN102866782B CN 102866782 B CN102866782 B CN 102866782B CN 201110187945 A CN201110187945 A CN 201110187945A CN 102866782 B CN102866782 B CN 102866782B
- Authority
- CN
- China
- Prior art keywords
- phonetic
- cutting route
- entry
- whole sentence
- character
- 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.)
- Active
Links
Abstract
本发明实施例提供一种提高整句生成效率的输入法和输入法系统,所述方法包括:拼音流切分步骤和音字转换步骤,所述拼音流切分步骤用于对输入拼音流中按照时间顺序输入的每一个字符进行拼音流切分处理;所述音字转换步骤用于实现拼音到汉字的转换,并将可能的汉字候选去重后按一定顺序排序。本发明实施例提供的输入法和输入法系统,通过对用户输入的拼音流进行切分和纠错,得到最接近用户意愿的多条拼音切分路径,通过对该多条拼音切分路径进行音字转换,得到最接近用户意愿的整句输入结果和词组结果供用户选择,提高了输入法的整句生成效率。
Description
技术领域
本发明涉及输入法,尤其涉及一种提高整句生成效率的输入法和输入法系统。
背景技术
近年来,移动通信和国际互联网成为当今世界市场潜力最大,发展最为迅猛,前景最为广阔的两大产业。本世纪初,全球移动用户总数仅为7.2亿左右,互联网用户为3.6亿左右。到2010年,全球移动用户数突破50亿大关;国际互联网用户超过了20亿。我国移动用户的总数也于今年超过了5亿,互联网用户则接近4亿。随着这两大产业的迅速发展和技术进步,越来越多的人希望在移动的过程中高速地接入互联网查询获取信息及完成工作。于是,体现移动通信与互联网相结合的移动互联网成为历史的必然。
移动互联网是一个覆盖全球的以宽带IP为技术核心,可同时提供话音、传真、数据、图像、多媒体等高品质电信服务的新一代开放的电信基础网络。目前,移动互联网正逐渐渗透到人们生活工作的各个领域,短信、媒体播放、游戏、移动办公、位置服务等丰富多彩的移动互联网应用正在深刻改变信息时代的社会生活。2010年初,国务院常务会议决定加快推进电信网、广播电视网和互联网三网融合,并明确提出了推进三网融合的阶段性目标,更是将发展移动互联网业务推向了我国经济发展优先发展的战略高度。
移动互联网的主要终端设备包括智能手机,具备上网功能的媒体播放器(mp4播放器),平板电脑等便携设备。其中,智能手机(Smart Phone)是移动互联网的直接终端,是用户体验移动互联网各项服务的窗口。它具备通话、个人信息管理、媒体播放、电子邮件、基于无线数据通信的浏览器等先进功能,并配有操作系统。与传统手机相比较而言,智能手机的电话功能不占优势,但是网络应用是传统手机无法实现的。随着移动互联网在我国的迅速发展,智能手机也获得了迅速的普及。2010年中国智能手机市场分析报告显示:2010年我国智能手机出货量连续三个季度破千万。另据全球电信软件市场研究公司AnalysysMason发布的最新报告称,2010年~2014年预计全球智能手机销量年均增长率为32%,其中,超过50%的增长来自亚太和拉丁美洲等发展中市场。具备上网功能的媒体播放器由于其能随时随地满足人们欣赏视频音乐和上网冲浪的愿望而备受人们的喜爱,成为便携式娱乐设备的新宠。平板电脑则是一种新型的便携式移动设备,具备普通笔记本电脑的一切功能,还具备触控或手写等便于操作的功能,成为人们移动办公、休闲娱乐的必备之选。
苹果公司于2007年推出的智能手机iphone、媒体播放器ipod touch,以及2010年推出的平板电脑ipad无疑是近年来涌现出来的最引人注目的移动互联网终端设备。iphone是结合照相摄像、个人数码助理、媒体播放器和无线通讯装置的,具有Multi-touch触摸屏界面的智能手机,由苹果公司首席执行官史蒂夫.乔布斯在2007年1月9日举行的Macworld年会上宣布推出,并于2007年6月29日在美国上市。2007年11月,iphone被《时代》杂志选为2007年度最佳发明。2008年6月9日,苹果于全球开发者大会2008(Worldwide DeveloperConference 2008)上发表新一代iphone-iphone 3G及iphone 2.0固件。2008年7月11日,全球22个国家和地区率先发售iphone 3G。2009年6月8日,苹果在全球开发者大会2009上宣布了新一代的iphone 3GS,并于6月19日开始发售。2010年6月7日,苹果于全球开发者大会2010发表新一代的iphone 4。2010年6月24日,iphone 4在美国、法国、德国、英国、日本五个国家率先上市,随即扩展至全球。2009年10月1日,中国联通官方开放了中国大陆地区预定iphone的网页,同年10月30日下午17时开始在北京世贸天阶举行中国大陆首发仪式。2009年11月1日,iphone正式在中国大陆由联通发售。仅仅用了一年多时间,iphone在中国市场的销量就翻了一番。目前iphone4成为已经成为中国大陆最为热销的智能手机之一。ipod touch是一款由苹果公司推出的便携式媒体播放器,在2007年9月5日举行的“The Beat Goes On”产品发表会中公开。ipod touch可以比喻成不含电话及GPS等功能的iphone(An iphone without a phone),造型较轻薄,是苹果公司以"最好玩的ipod"为概念所推出的ipod。目前已经升级至第四代,成为时尚人士的新宠。ipad是苹果公司于2010年1月27日发布的一款平板电脑,定位介于苹果的智能手机iphone和笔记本电脑产品(MacBook、MacBook Pro与MacBook Air)之间,提供上网、电子邮件、电子书、音频视频播放等功能。2010年9月ipad正式进入中国市场,已经成为最为热销的平板电脑。
上述的三款苹果产品均采用了IOS操作系统,IOS是由苹果公司为iphone开发的操作系统,供iphone、ipod touch以及ipad使用。与苹果的基于Mac OS X操作系统一样,它也是以Darwin为基础的。IOS的系统架构分为四个层次:核心操作系统层(the Core OS layer),核心服务层(the Core Services layer),媒体层(the Media layer),可轻触层(the Cocoa Touchlayer)。IOS的用户界面最典型的特色是对多点触控操作的支持。它允许用户采用滑动、轻按、挤压、旋转等操作与系统交互,便于用户使用。苹果公司支持第三方应用程序研发,于2008年发布了软件开发工具包,允许全世界的开发人员开发iphone和ipod touch应用程序,Xcode是iphone软件开发工具包的开发环境。第三方程序开发者开发出应用后,需经过苹果的审核才能通过App Store进行发布和下载。并非所有的软件都会通过苹果的审核,例如苹果不支持中文输入法的研发。
苹果IOS系统配置中文输入法包括一个手写输入法和一个拼音输入法。IOS系统配置手写输入法能进行简体中文和繁体中文的手写输入。用户在触摸屏上手写输入法的输入区按正确笔顺输入汉字后,输入法在输入区右侧竖排的候选列表中列出候选字。用户选择后,输入法还提供该字的联想字,用户可以持续点击联想字以提高输入的效率。苹果手写输入法的优点在于手写识别正确率比较高,手写输入符合人的书写习惯,对于不知读音的字也能正确输入,缺点是输入效率比较低。IOS系统配置的拼音输入法为用户提供了全拼整句输入、带联想功能的全拼词输入等多种输入方式。全拼整句输入方式是IOS 4.0以上版本提供的新的拼音输入方式。在全拼整句输入方式中,用户连续打入一句话的全拼字符串,在用户键入的过程中,输入法将音字转换结果显示在候选窗中,用户选择候选窗中的正确字词,直至音字转换全部正确为止。在IOS 4.0以下版本中,用户只能采用带联想功能的全拼词输入方式输入汉字,在这种输入方式中,用户打入一个词的拼音串后,该拼音对应的候选词在候选窗显示出来,用户选择后,在候选窗中自动显示出该词对应的联想词供用户进一步选择。IOS系统配置输入法的优点在于输入方式简单,无需学习即可上手,缺点是音字转换正确率比较低,选字环节需浪费大量时间,输入效率比较低,另外未能对中国人的输入习惯(如平卷舌不分的模糊音,双拼等等)提供必要的支持。
尽管苹果公司不支持第三方输入法研发,国内许多著名IT公司仍旧纷纷推出了自己的IOS平台输入法。其中,比较著名的输入法有:百度输入法、QQ输入法、搜狗输入法、Wefit输入法等等。百度iphone输入法是目前IOS平台上最受欢迎的第三方输入法,是一种支持全拼、简拼、双拼、模糊音,具有整句输入和带有联想的词输入等输入方式的输入法,最新版本(2.0)带有拼音自动纠错功能,还提供了T9、笔画、五笔等输入方式。QQ iphone输入法是腾讯公司推出的输入法。搜狗iphone输入法是搜狗公司推出的输入法。Wefit输入法是由威锋网开发团队推出的iphone输入法。这些输入法的功能特点与百度输入法类似。与IOS系统自带中文输入法相比较而言,这些由国内IT公司自主研发的输入法均针对中国人的输入习惯进行了特别的设计,为用户在IOS平台上的中文输入提供了更加丰富的选择。
发明人在实现本发明的过程中发现,以上这些输入法尽管较系统自带的输入法在符合中国人的输入习惯方面均有了不同程度的提高,但仍然存在一些缺点,主要体现在:
1、多数第三方输入法都支持整句输入,但整句输入音字转换的准确率还比较低。
2、双拼是一种对生母韵母进行编码,两键输入一个拼音音节的拼音输入方式。在进行语句输入时,因为按键次数较少,适于手机全键盘的输入。多数输入法未能提供对双拼输入的有效支持。个别输入法允许用户自定义双拼,但用户自定义难度较大。
3、手机等移动平台全键盘按键较小,进行连续拼音输入时非常容易按错,影响了整句输入的效率。多数输入法没有提供连续输入拼音自动纠错的功能。
4、许多用户发音不准(如z|zh不分),多数输入法未能提供对模糊音输入的支持。
5、多数输入法的候选词窗选择在紧邻软键盘的位置上,在用户键入过程中不断更新的候选词干扰了用户的注意力,使打字容易出错。另外,受移动设备的触屏物理空间的限制,候选词显示个数较少,为选择一个生僻字需要翻多页,输入效率低。
发明内容
本发明实施例的主要目的在于提供一种提高整句生成效率的输入法和输入法系统,通过对用户输入的拼音流(全拼、双拼或者模糊音)进行切分和纠错,得到最接近用户意愿的多条拼音切分路径,通过对该多条拼音切分路径进行音字转换,得到最接近用户意愿的整句输入结果和词组结果供用户选择,以达到提高输入法的整句生成效率的目的。
本发明实施例的上述目的是通过如下技术方案实现的:
一种提高整句生成效率的输入法,所述输入法包括:
拼音流切分步骤,对输入拼音流中按照时间顺序输入的每一个字符,进行如下处理:
以所述字符作为结束字符,确定所述字符与在先输入的且与所述字符相邻的0~3个字符组合后的至少一个合法音节;
根据所述至少一个合法音节确定以所述字符为结束符的所述输入拼音流的多条拼音切分路径;
计算每一条拼音切分路径的路径权值,根据路径权值由大到小的顺序提取预定数量的拼音切分路径,作为以所述字符作为结束符的所述输入拼音流的切分结果;
音字转换步骤,包括:
整句生成步骤,按照拼音切分路径权重计算规则,对以当前字符结尾的拼音流的所有拼音切分路径排序,选择所述所有拼音切分路径中权重值最高的第一预定数量的拼音切分路径进行整句生成;
Unigram出词步骤,对所述以当前字符结尾的拼音流的所有拼音切分路径进行Unigram出词;
处理步骤,将所述整句生成结果和所述Unigram出词结果进行去重和排序,获得所述以当前字符结尾的拼音流的音字转换结果;
在所述拼音流切分步骤中,根据所述至少一个合法音节确定以所述字符为结束符的所述输入拼音流的多条拼音切分路径,包括:
将每一个合法音节与之前确定的每一条拼音切分路径连接在一起,构成一条新的拼音切分路径;
根据所述每一个合法音节的分类,去除掉所述新的拼音切分路径中不合理的切分路径。
一种输入法系统,所述系统包括拼音流切分部和音字转换部,其中:
所述拼音流切分部用于对输入拼音流中按照时间顺序输入的每一个字符进行拼音流切分处理,所述拼音流切分部包括:
第一确定单元,用于以所述字符作为结束字符,确定所述字符与在先输入的且与所述字符相邻的0~3个字符组合后的至少一个合法音节;
第二确定单元,用于根据所述第一确定单元确定的至少一个合法音节确定以所述字符为结束符的所述输入拼音流的多条拼音切分路径;
计算单元,用于计算所述第二确定单元确定的每一条拼音切分路径的路径权值;
选择单元,用于根据所述计算单元计算的路径权值由大到小的顺序提取预定数量的拼音切分路径,作为以所述字符作为结束符的所述输入拼音流的切分结果;
所述音字转换部包括:
整句生成单元,用于按照拼音切分路径权重计算规则,对以当前字符结尾的拼音流的所有拼音切分路径排序,选择所述所有拼音切分路径中权重值最高的第一预定数量的拼音切分路径进行整句生成;
Unigram出词单元,用于对所述以当前字符结尾的拼音流的所有拼音切分路径进行Unigram出词;
处理单元,用于将所述整句生成结果和所述Unigram出词结果进行去重和排序,获得所述以当前字符结尾的拼音流的音字转换结果;
所述第二确定单元包括:
连接模块,用于将每一个合法音节与之前确定的每一条拼音切分路径连接在一起,构成一条新的拼音切分路径;
第二调整模块,用于根据所述每一个合法音节的分类,去除掉所述连接模块连接后的新的拼音切分路径中不合理的切分路径。
本发明实施例提供的方法和系统,通过对用户输入的拼音流(全拼、双拼或者模糊音)进行切分和纠错,得到最接近用户意愿的多条拼音切分路径,通过对该多条拼音切分路径进行音字转换,得到最接近用户意愿的整句输入结果和词组结果供用户选择,提高了输入法的整句生成效率。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。在附图中:
图1为输入法系统结构示意图;
图2为本发明实施例的输入法流程图;
图3为本发明实施例的输入法的拼音流切分步骤中计算拼音切分路径权值的方法流程图;
图4为拼音流“wangluozhineng”的拼音切分路径的示意图;
图5为拼音流“wangluo”的拼音切分路径集示意图;
图6为全拼切分词典和纠错切分词典的结构示意图;
图7为本发明实施例的输入法的音字转换步骤对一条拼音切分路径进行整句生成的一个实施例的流程图;
图8为拼音切分路径“yi’zhi’mei’li’de’xiao’hua”对应的整句生成示意图;
图9为对一条拼音切分路径进行整句生成的另外一个实施例的流程图;
图10为用户输入字符示意图;
图11为对以当前字符结尾的拼音流的一条拼音切分路径进行Unigram出词的流程图;
图12为拼音切分路径“yi’zhi’mei’li’de’xiao’hua”的Unigram出词示意图;
图13为将整句生成结果和Unigram出词结果进行去重和排序的流程图;
图14为机器学习示意图;
图15为Word词典结构示意图;
图16为Unigram词典结构示意图;
图17为Bigram词典结构示意图;
图18为用户词库结构示意图;
图19为用户词典结构示意图;
图20为本发明实施例的输入法系统的组成示意图;
图21为本发明实施例的输入法系统的拼音流切分部的组成示意图;
图22为本发明实施例的输入法系统的音字转换部的组成示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
图1为本发明实施例的输入法系统的结构示意图,如图1所示,该输入法系统包括用户交互子系统、音字转换子系统和辅助工具子系统。其中,用户交互子系统完成输入法与用户和操作系统的信息交互,其包括:设置模块、初始化模块、键盘响应模块和输入界面模块;音字转换子系统是输入法系统的核心部分,其完成拼音串到汉字串的转换,该音字转换子系统包括:拼音流切分模块、音字转换模块以及机器学习模块;辅助工具子系统为音字转换提供语言模型资源,其包括语言模型训练模块。另外,图1所示的输入法系统还包括数据库,该数据库用于保存拼音切分词典、用户词库、语言规则库、系统词库以及语言模型等,数据库中存储的各类数据用于为音字转换子系统和辅助工具子系统提供必要的支持。
请参照图1,用户交互子系统完成的功能是根据当前移动平台的操作系统的输入法的接口,将本发明实施例提供的输入法嵌入到该操作系统中,接管用户按键操作,根据用户的设定进行系统初始化,并在系统中注册成为系统级输入法。进而接受用户在键盘上的按键消息以及用户的其他触摸消息,通过输入法界面与用户交互信息,显示用户输入及本发明实施例提供的输入法处理结果,最后将用户输入拼音的音字转换结果送入编辑窗口。
其中,设置模块允许用户对个人的输入偏好进行设定。在本发明实施例提供的输入法中,用户可以设定其熟悉的双拼,难以区分的发音,是否启动输入拼音智能纠错,是否启动词语联想功能,等等。还包括用户词库构建、从用户通讯录中导入,用户词库备份等功能。拼音智能纠错仅在用户全拼输入模式中有效。此外,还包括输入法用户手册及其他相关信息。
其中,初始化模块完成将本发明实施例提供的输入法嵌入当前移动平台的操作系统,成为该系统输入法之一的工作。首先把输入法相关的一些接口函数做函数替换,把本发明实施例提供的输入法的代码写到被替换的函数中,并把它们编译成动态链接库。然后利用GCC(一种Linux平台下的软件开发编译器)的扩展机制,使系统每次运行一个应用程序之前,先执行本发明实施例提供的输入法的动态链接库中的初始化代码,这样就将本发明实施例提供的输入法的代码加载到了内存中,等待被调用。在该初始化模块中,将本发明实施例提供的输入法需要用到的系统资源加载到内存中。同时,在初始化过程中,也将本发明实施例提供的输入法的名字加到了系统可用的输入法列表中,以保证用户能切换到本发明实施例提供的输入法。
其中,键盘响应模块是本发明实施例提供的输入法响应用户操作的模块,根据用户按键、触屏操作完成相关处理。对于用户输入的字母键进行拼音检查并对拼音流进行切分,作为参数传递给音字转换模块,音字转换模块利用输入拼音流计算出候选词列表并返回给IME(Input Method Editor,输入法编辑器)。IME把这些候选词传递给系统。系统把这些候选词显示在屏幕上。对用户输入的其他字符,例如删除最近一次输入的字母、选择了一个候选词、按下回车键把输入的拼音串上屏等操作时,也分别作出处理和响应。
其中,输入界面模块完成本发明实施例提供的输入法的输入界面的设置。当系统切换到本发明实施例提供的输入法时,首先生成相关的IME。然后加载本发明实施例提供的输入法的键盘。如果键盘不存在,则利用已有的键盘配置文件生成键盘,并把它保存在系统的指定目录下,以备后用。当以上操作都结束后,系统就开始等待用户的输入。用户的每一次输入都会保存在IME中。
通过以上用户交互子系统完成基本的设置以后,即可利用本发明实施例提供的输入法完成对用户输入的拼音流(也即字符串)的切分和音字转换,进而获得用户期望的输入结果。本发明实施例的输入法和输入法系统就是对图1所示的输入法系统中音字转换子系统的拼音流切分模块和音字转换模块进行的改进。以下将结合附图对本实施例的输入法和输入法系统进行详细说明。
本发明实施例提供了一种提高整句生成效率的输入法,如下面的实施例1所述。
实施例1
图2为本发明实施例提供的一种提高整句生成效率的输入法的流程图,请参照图2,该方法包括:拼音流切分步骤201和音字转换步骤202,其中:
拼音流切分步骤201是对输入拼音流中按照时间顺序输入的每一个字符,进行如下处理:
步骤2011:以当前字符作为结束字符,确定所述字符与在先输入的且与所述字符相邻的0~3个字符组合后的至少一个合法音节;
步骤2012:根据所述至少一个合法音节确定以所述字符为结束符的所述输入拼音流的多条拼音切分路径;
步骤2013:计算每一条拼音切分路径的路径权值,根据路径权值由大到小的顺序提取预定数量的拼音切分路径,作为以所述字符作为结束符的所述输入拼音流的切分结果。
音字转换步骤202是实现拼音到汉字的转换,并将可能的汉字候选去重后按一定顺序排序。其中拼音转换为汉字的方式包括整句生成和Unigram出词。整句生成是指对某些特定的拼音切分路径,预测出最有可能对应的句子;Unigram出词是指对于所有可能的拼音切分路径,预测出所有可能的前缀词组或字。最后,将整句生成的结果和Unigram出词的结果去重并按照特定的规则进行排序,完成整个拼音汉字转换过程。
为使本实施例的输入法清楚易懂,以下分别对拼音流切分步骤201和音字转换步骤202进行说明。
以下对拼音流切分步骤201进行说明。
在步骤2011中,合法音节是指能作为一个拼音组合中的声母或者韵母,而与其他韵母或者声母组合成一个拼音组合的部分。例如,字母“g”、字母组合“ang”、“uang”都可以是一个合法音节,其中,字母“g”作为声母可以和韵母组成一个拼音,例如和韵母“u”组成拼音“gu”;字母组合“ang”可以和声母组成一个拼音,例如和声母“d”组成拼音“dang”;字母组合“uang”可以和声母组成一个拼音,例如和声母“h”组成拼音“huang”。而字母组合“ng”由于不能和声母或者韵母组合成一个拼音,则字母组合“ng”不是一个合法音节。
在步骤2011中,用户在输入一串拼音流时,可能将分隔符同时输入,以指示该分隔符的下一个字符与该分隔符的上一个字符是不同的拼音组合,在本实施例中,如果输入的字符为分隔符,则去掉该分隔符,并记录该分隔符在输入拼音流中的位置,以作为后续确定合法音节的参考。例如,用户在输入“huan g”这个拼音流时,在字母“n”的后面输入了分隔符,则本实施例会去掉该分隔符,记录该分隔符位于字母“n”后面,而不对该分隔符进行处理,接着处理下一个字母“g”,此时,由于字母“n”后面有个分隔符,则根据本实施例的方法确定字母“g”为下一个拼音组合的声母,即,该字母“g”与在先输入的2个字母“an”构成的字母组合“ang”不是一个合法音节,与在先输入的3个字母“uan”构成的字母组合“uang”也不是一个合法音节。当然,在本举例中,字母“g”与在先输入的1个字母“n”构成的字母组合“ng”也不是一个合法音节,只有字母“g”与在先输入的0个字母构成的字母组合“g”是一个合法音节,也即为下一个拼音组合的声母。
其中,确定是否为合法音节除了参考以上分隔符的位置以外,一般通过查询拼音切分词典来确定,拼音切分词典中保存有合法音节的指示以及一些限制条件,根据拼音切分词典中指示的合法音节以及限制条件,可以确定组合后的音节是否合法。其中,对于拼音切分词典将在以下的实施例中进行详细说明。
其中,如果组合后的音节不合法,例如前述组合“ng”不合法,则可以放弃该不合法音节,也可以根据纠错策略将该不合法音节调整为拼音切分词典中对应的合法音节。例如通过表格的形式存储不合法音节对应的合法音节,根据该表格,确定“ng”对应哪个合法音节。其中纠错策略也可以保存于拼音切分词典中。
在步骤2012中,将每一个合法音节与之前确定的每一条拼音切分路径连接在一起,构成一条新的拼音切分路径。但由于合法音节的类型不同,例如该合法音节可能是声母,也可能是零声母韵母,还可能是不能独立成为拼音的韵母等,因此,经连接后得到的新的拼音切分路径不一定是合法的,有时是合法的,但不一定是合理的,因此,本实施例还可以根据每一个合法音节的分类,去除掉该新的拼音切分路径中不合理的切分路径。例如,声母和韵母要能够成合法的拼音才能切分到一起,不能独立成为拼音的韵母必须有合法的声母搭配才可以切分等。
在一个实施例中,将每一个合法音节与之前确定的每一条拼音切分路径连接在一起,构成一条新的拼音切分路径,可以通过以下方法实现:
如果当前字符为第n(n≥1)位字符且长度为p(p≥1且n≥p)的合法音节可以与以第n-p位字符为结尾的拼音切分路径中的m(m≥1)条路径组合成更长的拼音切分路径,则将组合后路径更新到以该合法音节的最后一个字符为结尾的拼音切分路径中。并记录每一条更新后的路径的节点前驱。
例如拼音流为“yuwang”,当前字符“g”为第6位字符,以它结尾组成长度为3的合法音节“ang”,那么音节“ang”可以和以第3位字符“w”为结尾的拼音路径组成更长的拼音路径,在例子中,一条合法的切分路径为“y u w”,由于“w”和“ang”可以组成合法拼音,因此可以将音节“ang”加入到该路径中得到更长的路径“y u w ang”,而更新后路径节点“ang”的前驱就是节点“w”。
在步骤2013中,由于拼音切分存在歧义,也即二义性,例如,拼音流“xian”会有“xian”和“xi’an”两种拼音切分结果。可见一条拼音流得到的拼音切分路径并不唯一。这样一条拼音切分路径是不能满足要求的,拼音切分的处理结果应该是拼音切分路径的集合。然而,语句级拼音输入法的拼音流长度较长,在应用本实施例的拼音流切分方法的输入法支持简拼功能的情况下,可能在该拼音流中还包括简拼的结果,因此,用户输入拼音流中可能给拼音切分带来二义性的地方可能会有很多,也即,根据步骤202获得的拼音切分路径有很多,而枚举所有的拼音切分路径需要消耗大量的空间来临时存储这些路径的信息。同时,在所有的拼音切分路径中,某些路径的切分虽然合法,但看起来并不合理。如:拼音串“ong”被当作简拼切分成“o’n’g”。因此,本实施例的步骤203采用了对路径加权,取Top N的方法来处理拼音切分路径过多的问题。
在步骤2013中,计算每一条拼音切分路径的路径权值可以通过图3所示实施例的方法实现,请参照图3,该方法包括:
步骤301:统计所述拼音切分路径的字符中声母的个数和韵母的个数,以及切分路径长度;
步骤302:将所述声母的个数与声母权值的乘积以及所述韵母的个数与韵母权值的乘积相加;
步骤303:将所述相加的结果与第一预定系数的乘积除以所述切分路径长度的平方,得到所述拼音切分路径的路径权值。
在一个实施例中,声母权值为1,韵母权值为4,第一预定系数为100。也即:如果该拼音切分路径的拼音组合中有声母,将权值加1;如果该拼音切分路径的拼音组合中有韵母,将权值加4;在一个特例中,如果该拼音组合的最后一个字母为“a”,则将权值加5而不是加4;再将以上结果乘以100再除以拼音切分路径长度的平方,就得到该拼音切分路径的路径权值。
通过观察实际语料测试结果,发现:在以零声母韵母为结尾的句子中,韵母以“a”为结尾的频数较高,仅给结尾“a”权值加4的拼音切分效果不够理想。原因在于:“a”易与“ang”、“eng”、“an”、“en”、“un”等韵母的最后一个字符合并产生合法拼音,这样与用户输入意图不一致的拼音切分会得到更高的权值;另一方面,“a”也易与“i”、“u”等韵母字符结合成新的韵母,在能与声母结合成合法拼音的情况下可以得到长度较短的拼音切分路径,受“步骤303”的影响,长度短的拼音切分路径会得到更高的权值。基于以上两点考虑,为适当调整以零声母韵母“a”为结尾的拼音切分路径权重情况,所以设定以上以字母“a”结尾的特例。具体举例如下:
假设用户输入的一个拼音流为“wangluo”,其切分路径为“w-an-g-l-uo”,则在该切分路径中,声母为“w”、“g”、“l”,韵母为“an”、“uo”,路径长度为3,则该拼音切分路径的路径权值为如果该拼音流“wangluo”的切分路径为“w-ang-l-uo”,则该拼音切分路径的路径权值为显然,后者的权值要高于前者,也就是说,后者的准确率更高。在本实施例中,就是按照权值由大到小的顺序取预定数量的拼音切分路径为切分结果,例如,取前50条拼音切分路径。
在一个实施例中,在步骤2011可能对该拼音切分路径上的某些字符进行了纠错处理,则本实施例在确定该拼音切分路径中存在进行了纠错处理的字符时,将得到的该路径权值乘以一个第二预定系数的纠错字符个数次方,作为对这条拼音切分路径的惩罚,也即由于进行了纠错,可能这条拼音切分路径并非是用户想要的结果。这里的第二预定系数可以是0.95。例如,在这条拼音切分路径中,有m个字符进行了纠错处理,则在以上计算完这条拼音切分路径的路径权值后,将该路径权值乘以0.95m。这里应该是算出权值和后就乘以0.95m。
在一个实施例中,如果出现了以上特例,也即所述当前字符为“a”,也就是说,该拼音流的最后一个字符为“a”,则本实施例将所述韵母的个数与韵母权值的乘积加上预定数量后,再与所述声母的个数与声母权值的乘积相加。例如,如果该条拼音切分路径的最后一个字母是“a”,尽管该字母是韵母,其权值不是加4,而是在4的基础上再加上一个预定数量,例如为1,也就是说,加上5,然后再将得到的结果乘以第一预定系数后除以该拼音切分路径的路径长度的平方。
本实施例的方法统计路径权值后,可以较好的处理全拼和简拼的问题,并且对按键纠错和句子长度的处理上都能得到比较好的切分效果。
图4为拼音流“wangluozhineng”的拼音切分路径的示意图。如图4所示,该拼音流中每个字符为结尾的子串都可能构成多种音节。例如,以第三个字符“n”为结尾的音节有“n”和“an”两个,以第四个字符“g”为结尾的音节有“g”、“ang”两个。在图4所示的示意图中,仅列举了一条完整的拼音切分路径,即“w-ang-l-uo-zh-i-n-eng”。
图5为拼音流“wangluo”的拼音切分路径集示意图,该拼音切分路径集的每一条切分路径都是按照本实施例前述方法实现的。如图5所示,将属于字母“o”结尾的节点沿前驱指针返回,即可得到该拼音切分路径集中的所有切分路径。
在步骤2013中,根据路径权值由大到小的顺序提取预定数量的拼音切分路径,可以通过将拼音切分路径节点(也即拼音切分路径的最后一个音节)压入到对应的最小二叉堆中的方法,实现拼音切分路径的路径权值的排序及预定数量的结果的取出。待排序后将该节点取出,即可根据前驱指针还原完整的拼音切分路径。其中,最小(大)二叉堆是一种用来快速查找一个集合中最小(大)元素的数据结构。它支持三种操作:插入操作、查询操作、删除操作。插入操作即向最小(大)二叉堆中插入一个元素,二叉堆会自动调整以保持其结构性质。查询操作即查询当前集合中的最小(大)元素。删除操作即将当前集合中的最小(大)元素删除,二叉堆同样会自动调整以保持其结构性质。
在本实施例中,用户输入的拼音流可能有不合法的情况。比如在没开启“按键纠错”功能时,是没有以“u”或“i”开头的拼音的。于是,从第n位字符开始向前扫描,直到发现有拼音切分路径存在为止。例如,在没有开启拼音纠错的情况下,对于字符串“wangnp”,由于“np”不是一个合法音节,所以可能不存在以“p”结尾的合法切分路径,那么我们就向前扫描,直到扫描到“wang”中的“g”,以它结尾有合法的拼音切分路径“w-ang”,所以我们以该节点为结尾取出它结尾的拼音路径。为了提高路径排序的效果,将以最后一个字符结尾的合法拼音切分路径的权值加上一个足够大的值,例如1000。将发现到的所有无论纠错还是没有纠错的路径都统一压到最小二叉堆中进行排序。按权值顺序还原拼音切分路径,构造路径对应的显示拼音,标记用户输入的有效字符数,将结果保存,并标记拼音切分路径集中哪些路径的第一个字可以显示出来。标记firstWord为TRUE的很简单,取拼音字符串最长的字即可。将纠错和未纠错的路径分开处理。并特殊处理第一个字以“n”结尾,同时第二个字以“g”开头的路径。该信息供音字转换使用。
例如,字符串“hua”,可能的切分结果有“h-ua”和“hu-a”,那么对于拼音“hua”,我们标记最长的拼音的字的firstWord为TRUE,这里就是“hua”。
综合以上论述,拼音流切分的过程可以用伪码表示成如下的递推过程:
其中,len表示输入拼音串input_string的长度。
拼音流切分逐次处理input_string中的每个字符。每次初始化最小二叉堆binary_min_heap,之后取与当前字符和与之相邻的最多三个字符,即input_string中第j个字符至第i个字符组成的子串substring{j,i},构成音节syllable。
input_string的j前缀prefix[j]为input_string第1个字符至第j个字符组成的子串,即substring{1,j}。若由input_string的j前缀经拼音切分得到的拼音切分路径segment_path能与syllable连接,即在将syllable连接至segment_path后能够产生合法拼音,则通过segment_path与syllable构造新的拼音切分路径new_path,new_path即为input_string的i前缀经拼音切分得到的拼音切分路径。接着计算new_path的纠错数error_correcting_number、长度length和权值weight等信息,将new_path放入最小二叉堆binary_min_heap中。
最后的拼音切分结果result_set即为input_string的len前缀经拼音切分得到的拼音切分路径集合。
以上以全拼切分为例对本实施例的方法进行了说明,在实际应用过程中,双拼切分同样适用。
对于双拼模式,由于没有简拼,所有拼音都是严格通过两次按键获得。
在多种双拼规则中,零声母对应的按键可能不同。如“微软2003双拼”中,字母“o”是唯一的零声母按键;而在“自然码双拼”中,是以零声母韵母的首字母作为其对应的零声母键的。
在双拼拼音切分过程中遇到声母的位置,需要额外预先读入下一个字母的信息,以判断当前两个按键能否构成零声母韵母。
在遇到“半条路径”或处理完拼音串后,将当前路径切分结果保存。
所谓“半条路径”是指在对双拼路径进行切分的过程中,如果中途遇到某一对按键不能构成一个合法的拼音,那么到目前为止当前这条路径就是一条“半条路径”。
例如,当输入双拼nihd,当前切分出的全拼串为n-i-h,但h-d对应的全拼hiao不是一个合法的拼音,因此我们只将当前n-i-h这半条路径保存。
保存的切分路径信息为全拼形式,这样做是为了方便之后的拼音编码处理。
下面以音声双拼为例,对双拼切分进行举例说明。
对于字符串“niuihcrn”,首先n对应声母n,接着i代表韵母i,u代表声母sh,接着又是韵母i,到目前为止,我们得到的切分路径是“n-i-sh-i”。当处理到最后一个音节,我们得到了路径“n-i-sh-i-h-ao-r-en”。
当模糊音开关“s<->sh”开启时,拼音切分模块对“s”和“sh”这一对模糊音音节不加以区分,而是留到拼音编码模块再进行处理。如上例:拼音切分模块的结果仅为“n-i-sh-i-h-ao-r-en”一条切分路径;而拼音编码模块的结果则是“n-i-sh-i-h-ao-r-en”和“n-i-s-i-h-ao-r-en”两条拼音切分路径的拼音编码路径。
通过本实施例的方法对用户输入的拼音流切分之后,即可通过输入法的音字转换模块将相应的拼音转换为汉字,其中,在进入音字转换模块之前,为了提高识别效率,节约资源,还可以对选取的预定数量的拼音切分路径进行编码。编码是语言处理中很常见的手段,即将字符串编码为数字以方便后处理。
与双拼类似,音节字符串和音节的数字编码是一一对应的,为了处理模糊音,拼音编码过程也需要枚举合法的拼音组合。举例来说:若开启“en<->eng”模糊音设置,拼音“nen”和“neng”是被同等看待的,此时不能因为拼音实际的不同而在拼音切分过程中加以区分,生成两条拼音切分路径。拼音编码作为输入法中的拼音切分和音字转换之间过度的模块,需要解决这样的问题。
于是,将所有的拼音切分路径直接转换成编码后的结果保存。对于每一条拼音切分路径,预处理出每个汉字位置上可能的韵母。处理方法采取直接与输入法模糊音设置信息匹配的顺序扫描的方式进行。
之后,根据预处理的内容,枚举汉字位置上的声母,最终得到合法的拼音编码路径。
在本实施例中,枚举拼音编码路径声母信息。采取验证的方式,在拼音编码路径中逐字排除不合法的拼音组合。通过验证的路径将最终被保存。
在一个实施例中,可以通过以下步骤进行验证:
1、验证普通的简拼和用户直接输入并由拼音切分模块处理后的“伪合法拼音结果”是否为合法拼音;
2、尝试构造c→ch、s→sh和z→zh这三种简拼(因为简拼一定是合法拼音,所以无需验证);
3、根据输入法模糊音设置信息,枚举可能的拼音组合候选,并验证这些候选;
4、将最后通过验证的拼音编码路径保存。
待执行结束后,将其它的信息,如按键纠错数、firstWord标记和有效字符数等复制并保存。这样,拼音编码路径集的信息就全部保存下来了,拼音编码结束。
这里是在编码过程中对于模糊音的处理,例如对于之前的例子“n-i-sh-i-h-ao-r-en”和“n-i-s-i-h-ao-r-en”,由于音字转换模块仅识别音节的编码结果,因此这里我们需要对切分出来的路径根据模糊音进行编码处理,例子里就是对于“sh”和“s”要分别编码,步骤1实际上根据音节进行验证的过程,因为对于模糊因“sh”和“s”,虽然有两种结果,比如“shuang”和“suang”,但是只有“shuang”是合法的,因此不能对“suang”进行编码。对于步骤2,是指对于“c s z”也可能对应着“ch sh zh”,因此在编码时要特别处理。步骤3就是枚举所有合法候选的过程,所谓合法,就是至在某些模糊音设置下,能够构成合法拼音,比如“leng”,如果有模糊音“l→n”,则“neng”也是合法的,因此也要加入到编码路径中,步骤3就是枚举这样的编码路径。
为了辅助拼音流切分,本发明实施例还提供了拼音切分词典,如图1所示,该拼音切分词典可以以数据库的形式随输入法的安装而存储于安装该输入法的计算机的硬盘中,以下对拼音切分词典进行说明。
在本实施例中,拼音切分词典分为三个部分:全拼切分词典、全拼纠错切分词典和双拼切分词典。
全拼切分词典以二进制文件形式存储,其记录各全拼音节的ID、分类信息,并且记录了合法拼音组合的信息。对应的常用词典操作有:查询音节ID、判断两个音节是否能组合成合法拼音等。全拼切分词典中的操作为全部拼音切分词典操作的核心,全拼纠错切分词典和双拼切分词典的操作依赖于全拼切分词典。
在全拼切分词典中,记录了对模糊音处理。例如,如果在输入法中开启了“l<->n”这个模糊音设置,在本实施例的拼音流切分过程中,当参照拼音切分词典确定是否为合法音节或者合法拼音时,就不对“l”和“n”两个声母加以区分,若用户输入“l”,则拼音切分模块不会再生成一条对应位置为“n”的切分路径,反之亦然。
在全拼切分词典中,还记录了一些限制切分规则。添加这些限制切分规则是为了提高语音流切分的质量。
在一个实施例中,定义了五类限制规则,如下:
1、后面音节不是韵母则不拆分。如:“an”只有后面跟能与“n”构成合法拼音的韵母才将“an”切分成“a”和“n”;
2、后面音节不是声母则不拆分。如:“iang”后面如果没有任何音节,却切分成“i”和“ang”的效果显然不好;
3、无条件强制不切分。如:“ong”,虽然能可以根据简拼规则将其切分成“o”、“n”和“g”,但这样的切分效果也不好;
4、后面音节是韵母则不切分。例如:对于前面的切分路径如果是“i-ao”,那么如果后面依然是个韵母,那么显然将“iao”切分为“i-ao”是不合理的,因为“ao”和韵母组合并不合理;
5、不在句子末尾则不切分。这一类主要是以“o”为结尾的韵母,如“ao”、“iao”等。例如:对于“iao”,不能切分成“ia-o”,因为“o”音节常出现在句子的末尾,因此如果不是末尾,切分成“ia-o”是不合理的。
对于以上规则,都是由实际测试中得到的一些特殊例子得到的,属于硬性规定的规则。
通过以上限制切分规则,提高了全拼切分质量,排除了部分没有意义的切分路径,将更好的全拼切分路径放在Top N中靠前的位置交给输入法中的音字转换模块,提高了长句音字转换的精度。
在本实施例中,全拼切分词典的结构与纠错切分词典的结构相似,如图6所示。请参照图6,每个词典文件中,都有文件头区、音节偏移区、音节扩展区三个部分。合法拼音组合区仅在全拼切分词典中出现。在“音节扩展区”中,分为三个部分:音节ID、音节标记和具体的拼音扩展信息。
其中,文件头区中记录词典文件的概要信息,如:版本号、文件大小、各个区的偏移位置等。
其中,音节偏移区中记录所有拼音音节(在纠错词典中为设定的待纠错音节,下同)扩展内容在词典文件中的偏移位置。偏移位置根据音节字符串和hash函数计算得到。Hash函数查找的效率可以认为是常数时间的,即是一个常量值,与规模无关。
其中,音节扩展区中的拼音ID为所有音节唯一识别ID。全拼切分词典中的拼音ID在输入法的音字转换模块中词典检索中使用。音节扩展区中的音节标记中记录对应音节类别,分为声母、韵母、不能独立成为音节的韵母或待纠错音节4类。音节扩展区中的扩展内容仅在全拼纠错切分词典中出现,记录待纠错音节经纠错后可以得到的正确音节。
其中,合法拼音组合区仅在全拼切分词典中出现。其记录中文拼音中合法的声母、韵母组合以及零声母韵母。可以通过声母、韵母ID和hash函数快速地得到拼音组合的合法性,时间复杂度仍为O(1)。
在本实施例中,双拼切分流程复用了部分全拼切分流程中的逻辑处理,所以在双拼切分词典的内容得以简化,仅记录对应的双拼规则,并且为明文记录。全部双拼切分词典中都是首先记录12个零声母韵母(a、ai、an、ang、ao、e、ei、en、eng、er、o、ou)的双拼规则,之后记录“;”以及a-z共27个字符在双拼规则中对应的声母和韵母信息。
本发明实施例的输入法应用上述拼音流切分步骤201,使得输入法在实际应用中响应迅速,智能化程度高,使用户在使用输入法过程中获得流畅、快速、精准的输入体验。
以下对音字转换步骤202进行说明。
在本实施例中,音字转换步骤202包括:
整句生成步骤2021:按照拼音切分路径权重计算规则,对以当前字符结尾的拼音流的所有拼音切分路径排序,选择所述所有拼音切分路径中权重值最高的第一预定数量的拼音切分路径进行整句生成;
Unigram出词步骤2022:对所述以当前字符结尾的拼音流的所有拼音切分路径进行Unigram出词;
处理步骤2023:将所述整句生成结果和所述Unigram出词结果进行去重和排序,获得所述以当前字符结尾的拼音流的音字转换结果。
对于步骤2021:
由于整句生成的效率较低,无法对所有可能的拼音切分进行整句生成。目前,按照拼音切分路径权重计算规则对所有可能的拼音切分路径排序,并选择分数最高的几条(第一预定数量)路径进行整句生成。例如可以选择分数最高的4条路径进行整句生成。
其中,对一条拼音切分路径进行整句生成,可以通过图7所示的方法来实现,也可以通过图9所示的方法来实现,以下分别加以说明。
请参照图7,该方法包括:
步骤701:根据核心词库和用户词库确定当前拼音切分路径中每一个拼音对应的所有词条;
其中,在一条拼音切分路径的每一个拼音下面都有一列词组,表示在该拼音切分路径下以此拼音结尾的所有可能的词条。此词条包括两个方面:1、核心词库。此词库包含大部分常用词,存储于核心词典中;2、用户词库。此词库包含此用户高频使用的个性化词组,存储于用户词典中。
步骤702:对于所述当前拼音路径中的每一个拼音,分别计算所述当前拼音切分路径下,以所述当前拼音的每一个词条结尾所对应的整句中概率最大的整句,将所述概率最大的整句对应的相关信息存储于相应的词条节点,根据预定策略选择第二预定数量的词条作为所述当前拼音的词条;
其中,计算当前拼音切分路径下,以每一个词条结尾所对应的整句中概率最大的整句,可以通过以下方法来实现,该方法包括:
S1:根据当前词条Ai的长度确定所述当前词条的前驱拼音B;
S2:分别计算所述前驱拼音B的每一个词条Bj到所述当前词条Ai的整句的概率;
S3:将所述整句的概率中的最大值对应的整句作为以所述当前词条Ai为结尾所对应的整句中概率最大的整句。
其中,整句的概率是指以词条Bj结尾的概率最大整句再接上词条Ai后生成的新整句概率。例如词条Ai为“美丽”,词条Bj为“枝”,则表示以“枝”结尾概率最大的整句再接上词条“美丽”后的新整句“*枝美丽”的概率。
其中,步骤S2分别计算所述前驱拼音B的每一个词条Bj到所述当前词条Ai的整句的概率,可以通过以下方法来实现,该方法包括:
S21:判断所述前驱拼音B的每一个词条Bj与所述当前词条Ai是否具有Bigram关系;
S22:如果所述Bj与所述Ai具有Bigram关系,则将所述Bj中保存的结果E(Bj),与所述Bj和所述Ai的Bigram关系的对数Log(Bigram(Bj,Ai))的和E(Bj)+Log(Bigram(Bj,Ai))作为所述Bj到所述Ai的整句的概率;
S23:如果所述Bj与所述Ai不具有Bigram关系,则将所述Bj中保存的结果E(Bj),与所述Bj的Alpha值的对数Log(Alpha(Bj)),以及与所述Ai的概率的对数Log(Pro(Ai))的和E(Bj)+Log(Alpha(Bj))+Log(Pro(Ai))作为所述Bj到所述Ai的整句的概率。
其中,概率最大的整句对应的相关信息包括:1、以该词条结尾所对应的概率最大整句的概率值,也就是在前述“分别计算所述前驱拼音B的每一个词条Bj到所述当前词条Ai的结果”中提到Bj中保存的结果E(Bj);2、以该词条结尾所对应的概率最大整句的前驱词条,例如词条“美丽”的前驱拼音下词条有“之”、“枝”等,但概率最大整句的前驱词条为“枝”。其中,前述相关信息1用于进行计算,前述相关信息2用于计算结束后通过最后一个词条将整个整句回溯出来,即“花”>“小”>“的”>“美丽”>“枝”>“一”。以上只是举例说明,在具体实施时,可以根据需要存储其他与概率最大的整句相关的信息,本实施例并不以此作为限制。
步骤703:选择所述当前拼音切分路径的最后一个拼音下的所有词条节点中概率最大的词条节点,根据所述概率最大的词条节点中存储的相关信息,回溯所述当前拼音切分路径,将所述当前拼音切分路径对应的整条句子输出。
在本实施例的方法中,对于特定某一条拼音切分路径的整句生成。主要采用了Viterbi算法和N元语法模型。以下以图8所示的拼音切分路径“yi’zhi’mei’li’de’xiao’hua”对应的整句生成过程为例,对图7所示的方法进行详细说明。
请参照图8。本实施例的整句生成是以拼音为单位从左向右扫描整个拼音切分路径,对某一个具体的拼音A,其整句生成的详细步骤如下:
步骤801:查询在此拼音切分路径下以拼音A结尾的Unigram词条,并作为词条节点A1、A2、A3、A4…An存储于拼音A下。该步骤801对应前述步骤701的处理。
例如,图8中以拼音“li”结尾的Unigram词条有“里”、“李”、“美丽”、“丽”等词条。
步骤802:对拼音A下的所有词条节点A1、A2、A3、A4、…、An,分别计算此拼音切分路径下以词条A1、A2、A3、A4、…、An结尾所对应的整句中概率最大的,并将相关信息存储于相应的词条节点中。然后从A1、A2、A3、A4、…、An中选择概率最大的几个(第二预定数量)作为最后的词条节点保留在拼音A下,剩下的词条节点舍弃。该步骤802对应前述步骤702的处理。
例如,图8中拼音“li”下有至少4个词条节点“里”、“李”、“美丽”、“丽”,分别计算“yi’zhi’mei’li”所对应“***里”、“***李”、“**美丽”、“***丽”概率最大的,并将结果分别存储于“里”、“李”、“美丽”、“丽”词条节点中。
在Viterbi算法计算过程中,一般每个拼音下面对应的词条节点为200~300个,随着拼音长度的增加,计算量会非常大。但最终需要的结果并非所有的,而是最有可能的那一个,所以本实施例对每个拼音对应的词条节点个数进行优化。对每一个拼音所对应的所有词条节点均通过最小堆进行管理,堆大小可以设定为20。这样每个拼音下只保存最有可能的20个词条节点。
例如,对于拼音“li”下的所有词条,可以按照各词条的概率从大到小的顺序保留前20个词条作为拼音“li”的词条节点。
步骤803:对最后一个拼音M下的所有词条节点M1、M2、M3、M4、…、Mn选择其中概率最大的,并根据词条节点中存储的相关信息回溯将整条句子输出。该步骤803对应前述步骤703的处理。
例如,图8中最后拼音为“hua”,其下的词条节点有“花”、“话”、“校花”、“消化”,其中概率最大的词条节点为“花”,根据词条节点“花”中的存储的信息进行回溯,最后的得到的结果为“一枝美丽的小花”。
在前述步骤802中,计算某拼音切分路径下以某一词条Ai结尾所对应的整句中概率最大的方法如下:
步骤8021:根据词条Ai的长度确定其前驱拼音B,由于整个计算过程是以拼音为单位从左向右扫描的,所以此时前驱拼音B下的所有词条节点B1、B2、B3、B4、…、Bn均已保存了计算结果。该步骤8021对应前述步骤S1的处理。
例如,图8中拼音“li”下的节点“美丽”,由于词条“美丽”的长度为2,则其前驱拼音应为“zhi”。并且根据上述的计算步骤,拼音“zhi”下的词条节点“之”、“枝”、“一直”、“一致”已保存了“yi’zhi”所对应“*之”、“*枝”、“一直”、“一致”概率最大的。
步骤8022:分别计算从B1、B2、B3、B4、…、Bn到Ai的结果,并将结果中的最大值存储于Ai中。
其中,若词条Bj和词条Ai有Bigram关系,则用Bj中保存的结果E(Bj)加上词条Bj和词条Ai的Bigram关系Bigram(Bj,Ai)的对数,即E(Bj)+Log(Bigram(Bj,Ai));若词条Bj和词条Ai没有Bigram关系,则用Bj中存储的结果E(Bj)加上词条Bj的Alpha值Alpha(Bj)的对数,然后再加上词条Ai的概率Pro(Ai)的对数,即E(Bj)+Log(Alpha(Bj))+Log(Pro(Ai))。
例如,图8中拼音“li”下的节点“美丽”,此时分别计算从拼音“zhi”下的词条节点“之”、“枝”、“一直”、“一致”到词条“美丽”的结果,若有Bigram关系如“枝”和“美丽”,则结果为E(“枝”)+Log(Bigram(“枝”,“美丽”));若没有Bigram关系如“一致”和“美丽”,则结果为E(“一致”)+Log(Alpha(“一致”))+Log(Pro(“美丽”)),并将概率最大的相关信息存储于词条节点“美丽”。
通过以上方法,最终得到的图8所示拼音切分路径的整句概率的公式为:
Log(Pro(一))+Log(Bigram(一,枝))+Log(Bigram(枝,美丽))+Log(Bigram(美丽,的))+Log(Bigram(的,小))+Log(Bigram(小,花))。
通过本实施例方法,在存储二元语法模型时,将相应概率值的对数值存储而非概率值本身。这样所有的乘法运算均转变为加法运算,减轻了小型移动设备的计算负担。
图7所示实施例的整句生成是以拼音为单位从左向右扫描整个拼音切分路径,按照前面介绍的方法进行整句生成。
然而,由于生成整句的过程非常耗时,本发明实施例还提供了一种整句生成方法,通过设计相应的缓存机制提高生成整句的效率。缓存机制是指通过申请额外的空间(缓存)存储有用信息,使得下次计算可以直接基于缓存里存储的有用信息来进行计算,从而提高效率,解决用户在句子输入较长后出现响应速度变慢的问题。
由于在用户输入过程中,需要对用户每次按键进行响应。因此在对拼音切分路径“yi’zhi’mei’li’de’xiao’hua”进行响应之前,已经对拼音切分路径“yi’zhi’mei’li’de’xiao’hu”进行过响应。在这种情况下,可以通过缓存记录“yi’zhi’mei’li’de’xiao’hu”响应结果,并基于此结果来对“yi’zhi’mei’li’de’xiao’hua”进行响应。
与图7所示实施例中每次都从左向右扫描整个拼音串并计算可能的整句不同,本实施例的整句生成方法只从当前输入的字符计算可能的整句,如图9所示,该方法包括:
步骤901:根据核心词库和用户词库确定所述当前字符对应的拼音的所有词条;
步骤902:分别计算所述当前拼音切分路径下,以所述每一个词条结尾所对应的整句中概率最大的整句,将所述概率最大的整句对应的相关信息存储于相应的词条节点,根据预定策略选择第二预定数量的词条作为所述当前拼音的词条;
步骤903:选择所述当前拼音切分路径的最后一个拼音下的所有词条节点中概率最大的词条节点,根据所述概率最大的词条节点中存储的相关信息,回溯所述当前拼音切分路径,将所述当前拼音切分路径对应的整条句子输出。
在本实施例中,步骤902和步骤903的处理与前述步骤702和步骤703的处理相同,在此不再赘述。
在本实施例中,由于每次对拼音路径权重TopN的路径生成整句,则相应的缓存需要存储N条路径动态规划的结果。当对某一条拼音切分路径生成整句时,首先让其跟缓存中存储的N条路径进行匹配并找出公共前缀最长的路径,然后在缓存中存储的相关信息基础上生成整句,并把最后结果保存在此缓存中,为下次生成整句保存相关信息。
在用户输入过程中,根据图7所示实施例的方法,每输入一个字符,都进行一次拼音切分和音字转换。例如,用户在输入“yizhimeilidexiaohua”的过程中总共进行了19次拼音切分和音字转换。正常的逻辑是每次的拼音切分和音字转换都从头开始,例如用户已经输入了“yizhimeilidexiao”,接着输入字符“h”,这时对新的字符串重新“yizhimeilidexiaoh”进行拼音切分,然后对新的拼音切分结果重新进行音字转换。由于图7所述方法的计算量和用户输入的字符串长度是成正比,即用户输入的拼音串越长,计算量越大,具体表现为用户输入越长,输入法反应越慢。所以,图9所示实施例的方法增加了“缓存”机制。
如图9所示,首先,假设用户已经输入了“yizhimeilidexiao”,此时可能有多种拼音切分结果,对于此拼音串,其切分结果按拼音切分中的排序规则进行排序可能的结果为:
“yi’zhi’mei’li’de’xiao”、
“yi’zhi’mei’li’de’xia’o”、
“yi’zhi’mei’li’de’xi’ao”等
接下来,对Top3拼音切分路径进行音字转换。此时,Top3的拼音切分路径每个拼音下的词条节点均已存储了计算结果。此时,用户输入字符“h”,重新进行拼音切分排序结果为:
“yi’zhi’mei’li’de’xiao’h”、
“yi’zhi’mei’li’de’xi’ao’h”、
“yi’zhi’mei’li’de’xia’o’h”等
此时在对拼音切分路径“yi’zhi’mei’li’de’xiao’h”进行音字转换时,根据图5所示实施例的方法,首先将其和缓存中3条路径,也即:
“yi’zhi’mei’li’de’xiao”、
“yi’zhi’mei’li’de’xia’o”、
“yi’zhi’mei’li’de’xi’ao”
进行匹配,发现“yi’zhi’mei’li’de’xiao”和“yi’zhi’mei’li’de’xiao’h”公共前缀最长为6(相同前缀拼音长度),并且缓存中“yi’zhi’mei’li’de’xiao”每个拼音下的词条节点相关信息均已在上一轮音字转换中计算,此时无需从“yi”开始计算,而是直接从第7个拼音“h”开始计算即可。即直接查询以第7个拼音“h”结尾的词条,并在其下建立相应的词条节点,然后根据每个词条节点中词条长度确定其前驱拼音,然后按前面所述的方法进行计算。
当然,输入字符“h”后其拼音切分路径“yi'zhi'mei'li'd'e'xiao'h”也有可能排在Top3,此路径和缓存中的最长前缀则为4,此时直接从第5个拼音“d”开始计算即可。其中,“h”、“d”均为简拼,表示生母为“h”、“d”的所有拼音。
为了确保缓存空间的充分利用,需要避免两条路径都基于缓存中存储的同一条路径生成整句。如图10所示,在用户输入“yizhimeilidexiao”后,系统会计算拼音切分路径中所有拼音下的词条节点里的信息。接下来用户输入“yizhimeilidexiaoh”,此时系统只需从拼音“h*”(简拼)继续进行计算即可,而无需按照基本算法中每次都从左向右扫描整个拼音串。从图10所示的流程中可以看出,缓存机制减少了大部分计算,极大程度的提高了用户按键响应速度。
以上对步骤2021进行了详细说明,通过步骤2021的处理,对某些特定的拼音切分路径预测出了最有可能对应的句子。
对于步骤2022:
在音字转换过程中,除了生成整句外,还需要生成较短的词组或字,方便用户进行更加灵活的输入。由于需要确保将用户所有想输入的汉字展示给用户,所以必须对所有有可能的拼音切分路径进行Unigram出词。
其中,对以当前字符结尾的拼音流的一条拼音切分路径进行Unigram出词,可以通过图7所示的方法来实现,请参照图11,该方法包括:
步骤1101:确定所述拼音切分路径的所有前缀;
步骤1102:判断每一个前缀对应的词组是否已经存在于预先建立的去重词组;
步骤1103:如果全部存在,则将所述所有前缀对应的词组作为所述拼音切分路径的Unigram出词结果;
步骤1104:如果全部不存在,则根据核心词库、用户词库以及生僻词库查询每一个前缀对应的所有词组,将所述所有词组作为所述拼音切分路径的Unigram出词结果;
步骤1105:如果部分存在,则根据核心词库、用户词库以及生僻词库查询不存在的每一个前缀对应的所有词组,将存在的前缀对应的词组以及所述查询获得的不存在的前缀对应的词组作为所述拼音切分路径的Unigram出词结果。
其中,拼音切分路径的前缀是指,分别以拼音长度1、2、3…对原始拼音切分路径从头进行截取,新生成的拼音切分路径即为原始拼音切分路径的前缀。
在本实施例中,在对于特定某一条拼音切分路径进行Unigram的过程中,主要是进行词典查询操作。下面以图12所示的拼音切分路径“yi’zhi’mei’li’de’xiao’hua”对应的Unigram出词过程对图11所示的方法进行说明。请参照图12:
在大多数情况下,拼音切分路径不止一条。例如“yi’zhi’mei’li’de’xiao’hua”其对应的拼音切分结果还有可能为“yi’zhi’mei’li’de’xiao’hu’a”。由于Unigram出词需要对所有可能的拼音切分结果进行出词,所以在对“yi’zhi’mei’li’de’xiao’hua”进行Unigram出词时会查询“yi’zhi”的结果;同样,在对“yi’zhi’mei’li’de’xiao’hu’a”进行Unigram出词时也会查询“yi’zhi”的结果。这样会导致重复查询,并且多余的结果会对去重增加额外的负担。
因此,本实施例的方法在对多条拼音切分结果进行Unigram出词前建立一个去重数组,在每次查询前先看去重数组中是否已存在该前缀及对应的词组。若已存在,则不进行查询;否则,正常查询,查询完成后再将此查询存储到去重数组中,避免下次重复查询。
其中,对该拼音切分路径所有前缀查询其可能对应的所有词组。此词组包括三个方面:1、核心词库。此词库包含大部分常用词,存储于核心词典中;2、用户词库。此词库包含此用户高频使用的个性化词组,存储于用户词典中;3、生僻词库。此词库包含大量的生僻字、词组,存储于生僻词典中。例如,图7中前5条前缀均没有结果,第六条前缀“yi’zhi”其对应的查询结果有:“一直”(核心词库)、“乙酯”(用户词库)等;第七条前缀“yi”其对应的查询结果有:“一”(核心词库)、“祎”(生僻词库)等。
以上对步骤2022进行了详细说明,通过步骤2022的处理,对所有可能的拼音切分路径,预测出了所有可能的前缀词组或字。
对于步骤2023:
得到了整句生成结果和Unigram出词结果后,还需要对所有结果进行去重和排序。
其中,将所述整句生成结果和所述Unigram出词结果进行去重和排序,可以通过图9所示的方法来实现,请参照图13,该方法包括:
步骤1301:对所述整句生成结果和所述Unigram出词结果进行权重调整;
步骤1302:根据哈希表对权重调整后的结果进行去重,去掉相同的结果中权重相对较低的结果;
步骤1303:对去重后的结果进行排序,获得所述以当前字符结尾的拼音流的音字转换结果。
在本实施例中,由于最终的整体排序均是按照词典中所存储的概率进行的,但由于整句生成和Unigram出词是完全独立的两个出词方法,所以其概率没有可比性。因此,本实施例的方法在整体排序之前,先对所有结果进行权重调整。
对于所有的结果(包括整句生成结果和Unigram出词结果),如果完全匹配,即该结果中汉字数目和其对应的拼音切分路径拼音数目一样,则该结果权重增加一个数值,例如增加10000;如果不完全匹配,即该结果中汉字数目小于其对应的拼音切分路径拼音数目。则该结果权重增加另一个数值,例如增加汉字数目*1000。由此,可以实现对所有结果的权重调整。
例如,“qim”对应的拼音切分路径可能为“qi’m”和“qin”(智能纠错结果),其中“qin”对应的所有结果“亲”、“琴”等均是完全匹配,则所有权重增加:10000;而“qi’m”对应的结果中“起码”、“期末”等为完全匹配,其权重增加:10000,但“起”、“其”等其汉字数目为1但其对应的拼音切分路径“qi’m”对应的拼音数目为2,为不完全匹配,所以其权重增加:1*1000=1000。
完成所有结果的权重调整后,可以通过哈希表对最后结果进行去重,若结果一样但权重不一样,则保留权重较高的结果。去重后进行排序即完成所有音字转换过程。
以上对步骤2023进行了详细说明,通过步骤2023的处理,对整句生成结果和Unigram出词结果,进行了权重调整和去重及排序,完成了拼音切分路径的音字转换过程。
通过步骤202的音字转换步骤的处理,实现了拼音到汉字的转换,通过将可能的整句或词组或汉字候选去重后按一定顺序排序,提高了整句生成效率。
根据本实施例的音字转换步骤202,还可以在使用本实施例的输入法的过程中,采用机器学习方法智能的进行学习,并根据用户的一些特定输入习惯优化出词结果,为用户提供个性化的输入体验。
在本实施例中,机器学习的方法可以通过比较输入法自动生成的语句(原语句)和用户最终选择的语句(目标语句)不同,采用规则和统计相结合的方法对现有模型进行调整,使其更符合用户输入习惯。
在本实施例中,机器学习的内容包括:学习新词、调整现有词词频、去除噪音。以下通过举例对以上机器学习的内容进行说明,在本例中,设定原语句为S,目标语句为ABCDE(由于目标语句需要用户多次选择确认,则每一个字母表示用户一次选择确认的词语)。请参照图14。
对于学习新词:
由于数据稀疏问题,现有模型不可能完全包括所有的词组,缺少的词组在音字转换过程中只能有更小的词组片段生成,严重影响整句生成精度,通过本实施例设定的规则从用户行为中挖掘出新词组添加到现有模型中能够有效地填补缺少的词组,提高精度。本实施例设定的规则如下:
首先,比较S和ABCDE,将不一样的片段作为新词组,单字除外。例如:B和E和S中所对应的片段不一致,但由于B为单字,则只将E作为新词组。如果有连续几个片段不一致例如C、D、E,则将CDE组合在一起作为一个新词组,而非分别作为三个新词组。
其次,比较S和ABCDE,如果不一样的片段为单字,则看其左右是否也有一个单字,如果有则合并为一个新词组。例如:B为单字,且A为单字则将AB作为一个新词组;但由于C不是单字,则BC不能作为一个新词组。
再次,如果ABCDE小于等于6汉字,则将ABCDE整体作为一个新词组。
通过以上规则的设定,从用户行为中挖掘出新词组添加到现有模型中,能够有效地填补缺少的词组,提高精度。
对于调整现有词词频:
现有词词频不准确在一定程度上也会导致原语句和目标语句不一致,可以通过分析用户行为动态的调整现有模型中某些词组的词频。现有规则如下:
首先,比较S和ABCDE,将不一样的片段的词组的词频提高,单字除外。例如:B和E和S中所对应的片段不一致,但由于B为单字,则只将E的词频提高。如果有连续几个片段不一致例如C、D、E,则将CDE组合在一起作为一个词组,而非分别作为三个词组。
其次,比较S和ABCDE,如果不一样的片段为单字,则看其左右是否也有一个单字,如果有则合并为一个词组来提供词频。例如:B为单字,且A为单字则将AB作为一个词组来提高词频;但由于C不是单字,则BC不能作为一个词组来提供词频。
再次,如果ABCDE小于等于6汉字,则将ABCDE整体作为一个词组提高词频。
最后,如果S的词频被提高过,则降低S的词频。
通过以上调整词频的处理,提高了整句生成的效率和精度。
对于去除噪音:
用户在使用过程中,由于误操作可能会产生一些噪音信息。而这些噪音信息会对现有模型做出一些不合理的调整,对出词结果产生不好的影响。为此需要相应的去噪机制将这些噪音信息从有用信息中过滤出来。
在本实施例中,假设对词组E进行调整(添加为新词组或调整此词组词频),具体去噪步骤如下:
首先,在缓存区查看E是否已经存在,若不存在着先存入缓存区。
其次,若E已经在缓存区中,则删除缓存区中与E同拼音的所有词组,然后将E从缓存区转移到用户习惯信息区。
在本实施例中,当首次对某一词组进行调整(添加为新词组或调整此词组词频)时,由于此时无法确定此次调整是否是用户误操作导致还是用户输入习惯的真实表现,所以暂时将调整信息保存到缓存区中;若对该词组进行了多次调整,则认为此调整并非用户误操作,将调整信息转移到用户习惯信息区,同时可以认定在缓存区中与此词组同拼音的词组很有可能为噪音信息,应该将其滤掉。
另外,用户习惯信息区容量较大,并且其内的词组在一般情况下是不会被删除的,只有当用户习惯信息区满时,才会删除一些极不常用的词组,保证用户习惯信息的时效性;而缓存区较小,通过频繁的插入、删除操作及时的过滤掉用户误操作信息,达到去噪的效果。
在本实施例中,机器学习的过程中,也即学习新词、调整现有词词频以及去除噪音等过程都只是针对于用户词典的操作。机器学习目前只影响Unigram出词结果,在进行Unigram出词的时候,除了查询Unigram词典,系统还会查询用户词典。1、新词学习,这些新词会在Unigram出词中查询用户词典的时候查出;2、调整现有词词频,这些现有词在Unigram出词中查询Unigram词典和查询用户词典均会查出,但由于用户词典查出的权重会高于Unigram词典的,在通过最后的去重操作后只会留下权重高的用户词典出词,由于和原先权重相比权重更高了,则此词在最后的排序中会更靠前一些,这样用户最后看到的现象是选过的词排序会越来越靠前;3、去除噪音,由于用户经常会误选,导致一些不合理的新词进入用户词典,这些词同样会通过Unigram出词中查询用户词典的时候查出,这时则需要通过一定的方法将这些新词去除。
以上对音字转换和机器学习进行了详细说明。而支持音字转换和机器学习的系统资源也必不可少,以下对支持本发明实施例的系统资源进行说明。
在本实施例中,系统资源包含了系统词库、语言模型库、用户词库、语言规则库。以下分别进行说明。
对于系统词库:
系统词库用于存储汉字串到数字ID之间的映射关系。由于数字比较比字符串比较快很多,所以在整个输入法内部都是用数字ID代替汉字串操作,只是在最后给用户进行展示的时候才获取相应的汉字串。
图15为系统词库的Word词典的结构示意图,如图15所示。其中:
文件头记录整个词对应ID词典的相关信息。包括文件长度、文件头长度、文件体偏移。表1为Word词典文件头内容细节表。
文件头内容(Word词典文件头) | 占用空间 |
文件长度 | 4Byte |
文件头长度 | 2Byte |
文件体偏移 | 2Byte |
表1
词头区记录普通词的数量(普通词的个数),普通词区对应的偏移(普通词区的起始位置),特殊词的数量(特殊词的个数),特殊词区对应的偏移(特殊词区的起始位置),词流区的偏移(词流的开始位置)。表2为Word词典词头内容细节表。
内容(Word词典词头) | 占用空间 |
普通词的数量 | 4Byte |
普通词区对应的偏移 | 4Byte |
特殊词的数量 | 4Byte |
特殊词区对应的偏移 | 4Byte |
词流区的偏移 | 4Byte |
表2
普通词区记录词编号(词的编号),对应词偏移(该编号对应在词流中的位置),词权重(该编号对应的权重值)。其中,该普通词区可以按词的编号排序,方便二分查找编号。表3为普通词区内容细节表。
内容(普通词区) | 占用空间 |
词编号 | 4Byte |
对应词偏移 | 4Byte |
词权重 | 4Byte |
表3
特殊词区记录特殊信息(表示所有特殊词的一些共有的信息),平滑值(特殊词的共有的默认平滑值),词编号(词的编号)以及对应词偏移(该编号对应在词流中的位置)。表4为特殊词区内容细节表。
内容(特殊词区) | 占用空间 |
特殊信息 | 4Byte |
平滑值 | 4Byte |
词编号 | 4Byte |
对应词偏移 | 4Byte |
表4
词流区记录词串。词串存储每个词,每个词以‘\0’字符结尾。
对于语言模型库,包括Unigram词典和Bigram词典。
在本实施例中,Unigram词典用于存储词的拼音、权重、汉字串ID等相关信息。在本发明实施例中,首先根据词所含汉字个数,把词分为1区,2区,3区,4区。1区表示汉字所含个数为1的词。2区表示所含汉字个数为2的词。3区表示所含汉字个数为3、4的词。4区表示所含汉字个数为5、6、7、8的词。在查询时,根据词的长度便能确定应该去哪个区查询。然后,把该词的所有声母提取出来。再根据声母编号找到该声母编号对应的韵母起始位置和终止位置。再在那段区间里查询韵母对应的词的编号。
例如,要查“中国”,首先确定其长度为2。在“词长度偏移区”查找到声母二区的开始和结束偏移假设是1024和2048。然后再在该区查找声母ID。在本实施例中,可以定义词的声母编码规则为拼音“zh’ongg’uo”的声母ID为((ID(zh)<<8)|ID(g))。三个字以上的以此类推。假设中国的声母ID为10048。由此便在偏移区间[1024,2048]中查找10048所在的位置。找到后,便能得到该声母编号对应的所有韵母的位置和个数。同理再在韵母区间里查找其韵母编号(编码方式同声母)对应的词编号。由此便能查出“zh’ongg’uo”所对应的所有词,例如“中国”,“种过”等。
图16为Unigram词典结构图示意图。如图16所示,其中:
文件头与图15所示的Word词典的文件头相同,在此不再赘述。
拼音头记录的内容如表5所示。
内容(拼音头) | 占用空间 |
声母区开始偏移 | 4Byte |
声母区结束偏移 | 4Byte |
韵母区开始偏移 | 4Byte |
韵母区结束偏移 | 4Byte |
词编号区偏移 | 4Byte |
词编号区结束偏移 | 4Byte |
表5
声母区记录的内容如表6所示。
内容(声母区) | 占用空间 |
词长度区偏移 | 24Byte |
声母1区 | … |
声母2区 | … |
声母3区 | … |
声母4区 | … |
表6
其中,词长度区偏移记录的内容如表7所示。
内容(词长度区偏移) | 占用空间 |
声母1区开始偏移 | 2Byte |
声母1区结束偏移 | 2Byte |
声母2区开始偏移 | 2Byte |
声母2区结束偏移 | 2Byte |
声母3区开始偏移 | 4Byte |
声母3区结束偏移 | 4Byte |
声母4区开始偏移 | 4Byte |
声母4区结束偏移 | 4Byte |
表7
其中,声母1区记录的内容如表8所示。
内容(声母1区) | 占用空间 |
编号 | 1Byte |
对应韵母偏移 | 2Byte |
对应韵母个数 | 2Byte |
表8
其中,声母2区记录的内容如表9所示。
内容(声母2区) | 占用空间 |
编号 | 2Byte |
对应韵母偏移 | 2Byte |
对应韵母个数 | 2Byte |
表9
其中,声母3区记录的内容如表10所示。
内容(声母3区) | 占用空间 |
编号 | 4Byte |
对应韵母偏移 | 2Byte |
对应韵母个数 | 2Byte |
表10
其中,声母4区记录的内容如表11所示。
内容(声母4区) | 占用空间 |
编号 | 8Byte |
对应韵母偏移 | 2Byte |
对应韵母个数 | 2Byte |
表11
韵母区记录的内容如表12所示。
内容(韵母区) | 占用空间 |
词长度区偏移 | 24Byte |
韵母1区 | … |
韵母2区 | … |
韵母3区 | … |
表12
其中,词长度区偏移记录的内容如表13所示。
内容(词长度区偏移) | 占用空间 |
韵母1区开始偏移 | 2Byte |
韵母1区结束偏移 | 2Byte |
韵母2区开始偏移 | 2Byte |
韵母2区结束偏移 | 2Byte |
韵母3区开始偏移 | 4Byte |
韵母3区结束偏移 | 4Byte |
韵母4区开始偏移 | 4Byte |
韵母4区结束偏移 | 4Byte |
表13
其中,韵母1区记录的内容如表14所示。
内容(韵母1区) | 占用空间 |
编号 | 1Byte |
对应词偏移 | 2Byte |
对应词个数 | 2Byte |
表14
其中,韵母2区记录的内容如表15所示。
内容(韵母2区) | 占用空间 |
编号 | 2Byte |
对应词偏移 | 2Byte |
对应词个数 | 2Byte |
表15
其中,韵母3区记录的内容如表16所示。
内容(韵母3区) | 占用空间 |
编号 | 4Byte |
对应词偏移 | 2Byte |
对应词个数 | 2Byte |
表16
其中,韵母4区记录的内容如表17所示。
内容(韵母4区) | 占用空间 |
编号 | 8Byte |
对应词偏移 | 2Byte |
对应词个数 | 2Byte |
表17
词编号区记录的内容如表18所示。
内容(词编号) | 占用空间 |
编号 | 4Byte |
表18
在本实施例中,Bigram词典的主要功能是根据输入词ID查询预期关联的词以及权重。词典首先按照第一个词ID建立索引(升序),记录关联词的起始和结束位置,第二词同样按照升序排列。针对第一/二词均可以进行折半查找(O(log(n)+O(log(m)),查找ID对应权重。
图17为Bigram词典结构图示意图。如图17所示,其中:
文件头与图15所示的Word词典的文件头相同,在此不再赘述。
词头记录的内容如表19所示。
内容(词头) | 占用空间 |
Bigram总数量 | 4Byte |
第一词区偏移 | 4Byte |
第二词区偏移 | 4Byte |
表19
第一词区记录的内容如表20所示。
内容(第一词区) | 占用空间 |
词编号 | 2Byte |
对应第二词偏移 | 4Byte |
对应第二词总个数 | 2Byte |
表20
第二词区记录的内容如表21所示。
内容(第二词区) | 占用空间 |
词编号 | 2Byte |
对应bigram权重 | 4Byte |
表21
在本实施例中,对于系统词库和语言模型库,所有偏移均为相对偏移。即相对它所在区域的偏移,例如:文件体偏移是指相对文件起始位置,普通词区偏移是指相对文件起始位置,特殊词区偏移是指相对文件起始位置,词流区偏移是指相对文件起始位置,声母/韵母区开始/结束偏移是指相对文件起始位置,词编号区开始/结束偏移是指相对文件起始位置,对应词偏移是指相对词流区起始位置,声母n区开始/结束偏移是指相对声母区起始位置,韵母n区开始/结束偏移是指相对韵母区起始位置,对应韵母偏移是指相对韵母n区起始位置,词偏移是指相对词编号区起始位置。另外,由于所有ID都是有序存储,故二分查找最坏情况时间复杂度应为:max(log(声母区n所含id数)*log(韵母n区所含id数))n=1,2,3,4。
对于用户词库:
在本实施例中,用户词库是为了弥补核心词典词库的不足,更改候选字序、词序,提高长句准确性而设计的。用户词库拥有较高的可扩展性,支持动态编辑。用户词库主要通过两种方式导入字词:1.新词自动学习;2.外部词典导入。
图18为用户词库结构示意图。如图18所示,其中:
文件头与图15所示的Word词典的文件头相同,在此不再赘述。
声母区头记录的内容如表22所示。
内容(声母区头) | 占用空间 |
内存池空闲偏移 | 4Byte |
内存池已用节点数 | 4Byte |
空闲 | 9Byte |
表22
声母区单元记录的内容如表23所示。
内容(声母区单元) | 占用空间 |
声母id | 8Byte |
左子树偏移 | 2Byte |
右子数偏移 | 2Byte |
所对应韵母在韵母区开始偏移 | 2Byte |
平衡树平衡标记 | 1Byte |
内存池下一单元偏移 | 2Byte |
表23
韵母区头记录的内容如表24所示。
内容(韵母区头) | 占用空间 |
内存池空闲偏移 | 4Byte |
内存池已用节点数 | 4Byte |
空闲 | 6Byte |
表24
韵母区单元记录的内容如表25所示。
内容(韵母区单元) | 占用空间 |
韵母id | 8Byte |
所对应词在词母区开始偏移 | 2Byte |
对应同声母的下一韵母偏移 | 2Byte |
内存池下一单元偏移 | 2Byte |
表25
词区头记录的内容如表26所示。
内容(词区头) | 占用空间 |
内存池空闲偏移 | 4Byte |
内存池已用节点数 | 4Byte |
空闲 | 18Byte |
表26
词区单元记录的内容如表27所示。
内容(词区单元) | 占用空间 |
词字符串 | 19Byte |
对应词同拼音的下一词偏移 | 2Byte |
词属性 | 1Byte |
词权重 | 4Byte |
内存池下一单元偏移 | 2Byte |
表27
缓存区头记录的内容如表28所示。
内容(缓存区头) | 占用空间 |
内存池空闲偏移 | 4Byte |
内存池已用节点数 | 4Byte |
空闲 | 31Byte |
表28
缓冲区单元记录的内容如表29所示。
内容(缓存区单元) | 占用空间 |
声母id | 8Byte |
韵母id | 8Byte |
词字符串 | 19Byte |
词权重 | 4Byte |
内存池下一单元偏移 | 2Byte |
表29
图19为用户词典结构示例图,该示例中的用户词典是图19所示的用户词库的一个示例。请参照图19,在该用户词典中,声母区为平衡二叉树结构,其他3区为链式结构,查找的时间复杂度为声母区:O(log(n)),其他3区:O(n)。在本实施例中,可以对该用户词典里面的词附加词性信息,其中,词性可以分成核心词和新词,核心词是核心词典内的词,加入用户词典以更新候选词词序;新词也就是核心词典内没有的词。在本实施例中,对每次添加词语的请求,可以先判断该词是否在用户词典中,如果在用户词典中,则清理缓冲区中同拼音的词,更新该词在词典区中的权重;如果不在用户词典中,则判断其词性,如果是核心词,则清理缓冲区中同拼音的词,并将该词加入到词典区中;如果是新词,则判断该词是否在缓冲区中,如果在缓冲区中,则将其移到词典区中,否则将其加入到缓冲区中,同时清理缓冲区中同拼音的词。
对于语言规则库:
在本实施例中,语言规则库是指生产整句所利用的规则。在本实施例中,为了进一步提升音字转换的准确性,还可以引入语言学规则来描述语言单位间长距离的约束关系,如“一枝美丽的小花”中量词“枝”对“花”存在约束关系,在一个实施例中,可以通过引入正则表达式规则来描述这种约束关系,正则表达式具有简单快速,易于扩充的优点,语言规则库可以保存用于描述语言搭配规则的正则表达式的集合。
通过本实施例的音字转换步骤202,可以达成如下有益效果:
1、通过本实施例的音字转换步骤202,实现了精准的音字转换。为测试本实施例的音字转换方法的音字转换精度,发明人设计了如下实验:首先实现一个字音转换程序,能够将汉字串转换为无音调拼音串。给定一个测试语料库,首先将它转换为拼音串,进而将拼音串通过本实施例的音字转换方法转换为汉字串,将这个结果与原始汉字串进行自动比对,从而获得音字转换的准确率。经北大人民日报语料库2000年一月份语料测试表明,目前本实施例的音字转换方法的准确率为89%,百度拼音为85%。
2、本实施例的音字转换步骤202融合了智能纠错技术,智能纠错使用户获得了前所未有的输入体验。对用户输入的容错,使用户不再小心翼翼地按动键盘,输入的按键速度大幅提升。
3、通过本实施例的音字转换步骤202,使得候选窗中不仅仅包含当前候选字词,而是将具有较大生成概率的短语至于前列,便于用户尽早地选择更多的局部正确音字转换结果,提高输入的效率。
4、通过本实施例的音字转换步骤202,对双拼的充分支持进一步提升了输入的效率。双拼是输入效率最高的拼音输入方式之一,其输入效率已经接近汉字输入每字按键的理论极限。本实施例的方法是对双拼支持最充分的输入法,极大地方便了双拼输入用户的使用。
5、通过本实施例的音字转换步骤202,对全拼与简拼混合输入的方式使用户体验到一种随心所欲输入拼音的新体验。
6、通过本实施例的音字转换步骤202,对模糊音的支持方便了有特别口音用户的使用。以上的一些设计,极大地提高了应用本实施例的音字转换方法的输入法的输入效率,提升了用户的输入体验。
本实施例提供的音字转换步骤202所涉及的各项技术方案,均针对移动平台硬件配置相对较低,系统资源较少的特点进行了专门的设计,对技术性能进行了优化,使得本发明所提及的各项技术方案在实际应用中响应迅速,智能化程度高,使用户在使用本发明实施例提供的输入法过程中获得流畅、快速、精准的输入体验。
本发明实施例还提供了一种拼输入法系统,如下面的实施例2所述。由于该输入法系统解决问题的原理与上述实施例1的方法相似,因此该输入法系统的实施可以参见实施例1的方法的实施,重复之处不再赘述。
实施例2
图20是本发明实施例提供的一种输入法系统的组成示意图。该系统包括拼音流切分部700和音字转换部800,其中:
拼音流切分部700用于对输入拼音流中按照时间顺序输入的每一个字符进行拼音流切分处理。
音字转换部800用于实现拼音到汉字的转换,并将可能的汉字候选去重后按一定顺序排序。
图21是本发明实施例的拼音流切分部700的示意图,如图21所示,该拼音流切分部包括:
第一确定单元71,用于以所述字符作为结束字符,确定所述字符与在先输入的且与所述字符相邻的0~3个字符组合后的至少一个合法音节;
第二确定单元72,用于根据所述第一确定单元71确定的至少一个合法音节确定以所述字符为结束符的所述输入拼音流的多条拼音切分路径;
计算单元73,用于计算所述第二确定单元72确定的每一条拼音切分路径的路径权值;
选择单元74,用于根据所述计算单元73计算的路径权值由大到小的顺序提取预定数量的拼音切分路径,作为以所述字符作为结束符的所述输入拼音流的切分结果。
在一个实施例中,该系统还包括:
判断单元75,用于判断所述输入拼音流中是否包含分隔符;
调整单元76,用于在所述判断单元75的判断结果为所述输入拼音流中包含分隔符时,去除所述分隔符,并记录所述分隔符在所述输入拼音流中的位置,以便所述第一确定单元71参考所述位置,确定所述至少一个合法音节。
在一个实施例中,第一确定单元71包括:
第一确定模块711,用于根据拼音切分词典中指示的合法音节以及限制条件,确定所述组合后的音节是否合法;
第一调整模块712,用于在所述第一确定模块711确定组合后的音节合法时,记录该合法音节,并在所述第一确定模块711确定组合后的音节不合法时,放弃该不合法音节,或者根据纠错策略将所述不合法音节调整为所述拼音切分词典中对应的合法音节并记录。
在一个实施例中,第二确定单元72包括:
连接模块721,用于将每一个合法音节与之前确定的每一条拼音切分路径连接在一起,构成一条新的拼音切分路径;
第二调整模块722,用于根据所述每一个合法音节的分类,去除掉所述连接模块721连接后的新的拼音切分路径中不合理的切分路径,而保留合理的切分路径。
在一个实施例中,计算单元73包括:
统计模块731,用于统计所述拼音切分路径的字符中声母的个数和韵母的个数,以及切分路径长度;
计算模块732,用于将所述声母的个数与声母权值的乘积以及所述韵母的个数与韵母权值的乘积相加,并将所述相加的结果与第一预定系数的乘积除以所述切分路径长度的平方,得到所述拼音切分路径的路径权值。优选的,所述声母权值为1,所述韵母权值为4,所述第一预定系数为100。
其中,在一个实施例中,计算模块732还用于在所述拼音切分路径中存在进行了纠错处理的字符时,将所述拼音切分路径的路径权值乘以第二预定系数的纠错字符个数次方。优选的,所述第二预定系数为0.95。
其中,在另外一个实施例中,计算模块732还用于在所述拼音切分路径中的最后一个字符为a时,将所述韵母的个数与韵母权值的乘积加上预定数量后,再与所述声母的个数与声母权值的乘积相加。优选的,所述预定数量为1。
应用本发明实施例所提供的拼音流切分部700,使得输入法系统在实际应用中响应迅速,智能化程度高,使用户在使用输入法过程中获得流畅、快速、精准的输入体验。
图22是本发明实施例的音字转换部800的示意图,请参照图22,该音字转换部800包括:
整句生成单元81,用于按照拼音切分路径权重计算规则,对以当前字符结尾的拼音流的所有拼音切分路径排序,选择所述所有拼音切分路径中权重值最高的第一预定数量的拼音切分路径进行整句生成;
Unigram出词单元82,用于对所述以当前字符结尾的拼音流的所有拼音切分路径进行Unigram出词;
处理单元83,用于将所述整句生成结果和所述Unigram出词结果进行去重和排序,获得所述以当前字符结尾的拼音流的音字转换结果。
在本实施例2中,整句生成单元81具体用于对所述第一预定数量的拼音切分路径的每一条进行整句生成。
在一个实施例中,该整句生成单元81包括:
第二确定模块811,用于根据核心词库和用户词库确定当前拼音切分路径中每一个拼音对应的所有词条;
第一处理模块812,对于所述当前拼音路径中的每一个拼音,用于分别计算所述当前拼音切分路径下,以所述当前拼音的每一个词条结尾所对应的整句中概率最大的整句,将所述概率最大的整句对应的相关信息存储于相应的词条节点,根据预定策略选择第二预定数量的词条作为所述当前拼音的词条;
第一生成模块813,用于选择所述当前拼音切分路径的最后一个拼音下的所有词条节点中概率最大的词条节点,根据所述概率最大的词条节点中存储的相关信息,回溯所述当前拼音切分路径,将所述当前拼音切分路径对应的整条句子输出。
在另外一个实施例中,该整句生成单元81包括:
第三确定模块811’,用于根据核心词库和用户词库确定所述当前字符对应的拼音的所有词条;
第二处理模块812’,用于分别计算所述当前拼音切分路径下,以所述每一个词条结尾所对应的整句中概率最大的整句,将所述概率最大的整句对应的相关信息存储于相应的词条节点,根据预定策略选择第二预定数量的词条作为所述当前拼音的词条;
第二生成模块813’,用于选择所述当前拼音切分路径的最后一个拼音下的所有词条节点中概率最大的词条节点,根据所述概率最大的词条节点中存储的相关信息,回溯所述当前拼音切分路径,将所述当前拼音切分路径对应的整条句子输出。
在前述整句生成单元81的两个实施例中,第一处理模块812和第二处理模块812’分别用于计算当前拼音切分路径下,以每一个词条结尾所对应的整句中概率最大的整句,该第一处理模块812和第二处理模块812’可以分别包括:
确定子模块8121,用于根据当前词条Ai的长度确定所述当前词条的前驱拼音B;
计算子模块8122,用于分别计算所述前驱拼音B的每一个词条Bj到所述当前词条Ai的整句的概率;
处理子模块8123,用于将所述整句的概率中的最大值对应的整句作为以所述当前词条Ai为结尾所对应的整句中概率最大的整句。
其中,计算子模块8122具体用于判断所述前驱拼音B的每一个词条Bj与所述当前词条Ai是否具有Bigram关系;在所述Bj与所述Ai具有Bigram关系时,将所述Bj中保存的结果E(Bj),与所述Bj和所述Ai的Bigram关系的对数Log(Bigram(Bj,Ai))的和E(Bj)+Log(Bigram(Bj,Ai))作为所述Bj到所述Ai的整句的概率;在所述Bj与所述Ai不具有Bigram关系时,将所述Bj中保存的结果E(Bj),与所述Bj的Alpha值的对数Log(Alpha(Bj)),以及与所述Ai的概率的对数Log(Pro(Ai))的和E(Bj)+Log(Alpha(Bj))+Log(Pro(Ai))作为所述Bj到所述Ai的整句的概率。
在本实施例2中,Unigram出词单元82具体用于对所述以当前字符结尾的拼音流的每一条拼音切分路径进行Unigram出词,该Unigram出词单元82包括:
第四确定模块821,用于确定所述拼音切分路径的所有前缀;
判断模块822,用于判断每一个前缀对应的词组是否已经存在于预先建立的去重词组;
出词模块823,用于在所述判断模块的判断结果为全部存在时,将所述所有前缀对应的词组作为所述拼音切分路径的Unigram出词结果;在所述判断模块的判断结果为全部不存在时,根据核心词库、用户词库以及生僻词库查询每一个前缀对应的所有词组,将所述所有词组作为所述拼音切分路径的Unigram出词结果;在所述判断模块的判断结果为部分存在时,根据核心词库、用户词库以及生僻词库查询不存在的每一个前缀对应的所有词组,将存在的前缀对应的词组以及所述查询获得的不存在的前缀对应的词组作为所述拼音切分路径的Unigram出词结果。
在本实施例2中,处理单元83包括:
第三调整模块831,用于对所述整句生成结果和所述Unigram出词结果进行权重调整;
去重模块832,用于根据哈希表对权重调整后的结果进行去重,去掉相同的结果中权重相对较低的结果;
排序模块833,用于对去重后的结果进行排序,获得所述以当前字符结尾的拼音流的音字转换结果。
与实施例1提供的输入法中的音字转换步骤202所达成的有益效果相同,本实施例提供的输入法的音字转换部800所涉及的各项技术方案,均针对移动平台硬件配置相对较低,系统资源较少的特点进行了专门的设计,对技术性能进行了优化,使得本发明所提及的各项技术方案在实际应用中响应迅速,智能化程度高,使用户在使用输入法过程中获得流畅、快速、精准的输入体验。
本发明以上的方法和系统可以由硬件实现,也可以由硬件结合软件实现。本发明涉及这样的计算机可读程序,当该程序被逻辑部件所执行时,能够使该逻辑部件实现上文所述的装置或构成部件,或使该逻辑部件实现上文所述的各种方法或步骤。逻辑部件例如现场可编程逻辑部件、微处理器、计算机中使用的处理器等。本发明还涉及用于存储以上程序的存储介质,如硬盘、磁盘、光盘、DVD、flash存储器等。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (25)
1.一种提高整句生成效率的输入法,其特征在于,所述输入法包括:
拼音流切分步骤,对输入拼音流中按照时间顺序输入的每一个字符,进行如下处理:
以所述字符作为结束字符,确定所述字符与在先输入的且与所述字符相邻的0~3个字符组合后的至少一个合法音节;
根据所述至少一个合法音节确定以所述字符为结束符的所述输入拼音流的多条拼音切分路径;
计算每一条拼音切分路径的路径权值,根据路径权值由大到小的顺序提取预定数量的拼音切分路径,作为以所述字符作为结束符的所述输入拼音流的切分结果;
音字转换步骤,包括:
整句生成步骤,按照拼音切分路径权重计算规则,对以当前字符结尾的拼音流的所有拼音切分路径排序,选择所述所有拼音切分路径中权重值最高的第一预定数量的拼音切分路径进行整句生成;
Unigram出词步骤,对所述以当前字符结尾的拼音流的所有拼音切分路径进行Unigram出词;
处理步骤,将所述整句生成结果和所述Unigram出词结果进行去重和排序,获得所述以当前字符结尾的拼音流的音字转换结果;
在所述拼音流切分步骤中,根据所述至少一个合法音节确定以所述字符为结束符的所述输入拼音流的多条拼音切分路径,包括:
将每一个合法音节与之前确定的每一条拼音切分路径连接在一起,构成一条新的拼音切分路径;
根据所述每一个合法音节的分类,去除掉所述新的拼音切分路径中不合理的切分路径。
2.根据权利要求1所述的输入法,其特征在于,在所述拼音流切分步骤中,以所述字符作为结束字符,确定所述字符与在先输入的且与所述字符相邻的0~3个字符组合后的至少一个合法音节,包括:
根据拼音切分词典中指示的合法音节以及限制条件,确定所述组合后的音节是否合法;
如果组合后的音节不合法,则放弃不合法音节,或者根据纠错策略将所述不合法音节调整为所述拼音切分词典中对应的合法音节。
3.根据权利要求1所述的输入法,其特征在于,在所述拼音流切分步骤中,计算每一条拼音切分路径的路径权值,包括:
统计所述拼音切分路径的字符中声母的个数和韵母的个数,以及切分路径长度;
将所述声母的个数与声母权值的乘积以及所述韵母的个数与韵母权值的乘积相加;
将所述相加的结果与第一预定系数的乘积除以所述切分路径长度的平方,得到所述拼音切分路径的路径权值。
4.根据权利要求3所述的输入法,其特征在于,如果所述拼音切分路径中存在进行了纠错处理的字符,则将所述拼音切分路径的路径权值乘以第二预定系数的纠错字符个数次方。
5.根据权利要求3所述的输入法,其特征在于,如果所述拼音切分路径中的最后一个字符为a,则将所述韵母的个数与韵母权值的乘积加上预定数量后,再与所述声母的个数与声母权值的乘积相加。
6.根据权利要求1所述的输入法,其特征在于,在所述整句生成步骤中,对一条拼音切分路径进行整句生成,包括以下步骤:
根据核心词库和用户词库确定当前拼音切分路径中每一个拼音对应的所有词条;
对于所述当前拼音路径中的每一个拼音,分别计算所述当前拼音切分路径下,以所述当前拼音的每一个词条结尾所对应的整句中概率最大的整句,将所述概率最大的整句对应的相关信息存储于相应的词条节点,根据预定策略选择第二预定数量的词条作为所述当前拼音的词条;
选择所述当前拼音切分路径的最后一个拼音下的所有词条节点中概率最大的词条节点,根据所述概率最大的词条节点中存储的相关信息,回溯所述当前拼音切分路径,将所述当前拼音切分路径对应的整条句子输出。
7.根据权利要求1所述的输入法,其中,在所述整句生成步骤中,对一条拼音切分路径进行整句生成,包括以下步骤:
根据核心词库和用户词库确定所述当前字符对应的拼音的所有词条;
分别计算所述当前拼音切分路径下,以所述每一个词条结尾所对应的整句中概率最大的整句,将所述概率最大的整句对应的相关信息存储于相应的词条节点,根据预定策略选择第二预定数量的词条作为所述当前拼音的词条;
选择所述当前拼音切分路径的最后一个拼音下的所有词条节点中概率最大的词条节点,根据所述概率最大的词条节点中存储的相关信息,回溯所述当前拼音切分路径,将所述当前拼音切分路径对应的整条句子输出。
8.根据权利要求6或7所述的输入法,其中,计算当前拼音切分路径下,以每一个词条结尾所对应的整句中概率最大的整句,包括:
根据当前词条Ai的长度确定所述当前词条的前驱拼音B;
分别计算所述前驱拼音B的每一个词条Bj到所述当前词条Ai的整句的概率;
将所述整句的概率中的最大值对应的整句作为以所述当前词条Ai为结尾所对应的整句中概率最大的整句。
9.根据权利要求8所述的输入法,其中,分别计算所述前驱拼音B的每一个词条Bj到所述当前词条Ai的整句的概率,包括:
判断所述前驱拼音B的每一个词条Bj与所述当前词条Ai是否具有Bigram关系;
如果所述Bj与所述Ai具有Bigram关系,则将所述Bj中保存的结果E(Bj),与所述Bj和所述Ai的Bigram关系的对数Log(Bigram(Bj,Ai))的和E(Bj)+Log(Bigram(Bj,Ai))作为所述Bj到所述Ai的整句的概率;
如果所述Bj与所述Ai不具有Bigram关系,则将所述Bj中保存的结果E(Bj),与所述Bj的Alpha值的对数Log(Alpha(Bj)),以及与所述Ai的概率的对数Log(Pro(Ai))的和E(Bj)+Log(Alpha(Bj))+Log(Pro(Ai))作为所述Bj到所述Ai的整句的概率。
10.根据权利要求1所述的输入法,其中,在所述Unigram出词步骤中,对所述以当前字符结尾的拼音流的一条拼音切分路径进行Unigram出词,包括以下步骤:
确定所述拼音切分路径的所有前缀;
判断每一个前缀对应的词组是否已经存在于预先建立的去重词组;
如果全部存在,则将所述所有前缀对应的词组作为所述拼音切分路径的Unigram出词结果;
如果全部不存在,则根据核心词库、用户词库以及生僻词库查询每一个前缀对应的所有词组,将所述所有词组作为所述拼音切分路径的Unigram出词结果;
如果部分存在,则根据核心词库、用户词库以及生僻词库查询不存在的每一个前缀对应的所有词组,将存在的前缀对应的词组以及所述查询获得的不存在的前缀对应的词组作为所述拼音切分路径的Unigram出词结果。
11.根据权利要求1所述的输入法,其中,在所述处理步骤中,将所述整句生成结果和所述Unigram出词结果进行去重和排序,包括以下步骤:
对所述整句生成结果和所述Unigram出词结果进行权重调整;
根据哈希表对权重调整后的结果进行去重,去掉相同的结果中权重相对较低的结果;
对去重后的结果进行排序,获得所述以当前字符结尾的拼音流的音字转换结果。
12.一种输入法系统,其特征在于,所述系统包括拼音流切分部和音字转换部,其中:
所述拼音流切分部用于对输入拼音流中按照时间顺序输入的每一个字符进行拼音流切分处理,所述拼音流切分部包括:
第一确定单元,用于以所述字符作为结束字符,确定所述字符与在先输入的且与所述字符相邻的0~3个字符组合后的至少一个合法音节;
第二确定单元,用于根据所述第一确定单元确定的至少一个合法音节确定以所述字符为结束符的所述输入拼音流的多条拼音切分路径;
计算单元,用于计算所述第二确定单元确定的每一条拼音切分路径的路径权值;
选择单元,用于根据所述计算单元计算的路径权值由大到小的顺序提取预定数量的拼音切分路径,作为以所述字符作为结束符的所述输入拼音流的切分结果;
所述音字转换部包括:
整句生成单元,用于按照拼音切分路径权重计算规则,对以当前字符结尾的拼音流的所有拼音切分路径排序,选择所述所有拼音切分路径中权重值最高的第一预定数量的拼音切分路径进行整句生成;
Unigram出词单元,用于对所述以当前字符结尾的拼音流的所有拼音切分路径进行Unigram出词;
处理单元,用于将所述整句生成结果和所述Unigram出词结果进行去重和排序,获得所述以当前字符结尾的拼音流的音字转换结果;
所述第二确定单元包括:
连接模块,用于将每一个合法音节与之前确定的每一条拼音切分路径连接在一起,构成一条新的拼音切分路径;
第二调整模块,用于根据所述每一个合法音节的分类,去除掉所述连接模块连接后的新的拼音切分路径中不合理的切分路径。
13.根据权利要求12所述的系统,其特征在于,所述拼音流切分部还包括:
判断单元,用于判断所述输入拼音流中是否包含分隔符;
调整单元,用于在所述判断单元的判断结果为所述输入拼音流中包含分隔符时,去除所述分隔符,并记录所述分隔符在所述输入拼音流中的位置,以便所述第一确定单元参考所述位置,确定所述至少一个合法音节。
14.根据权利要求12所述的系统,其特征在于,所述第一确定单元包括:
第一确定模块,用于根据拼音切分词典中指示的合法音节以及限制条件,确定所述组合后的音节是否合法;
第一调整模块,用于在所述第一确定模块确定组合后的音节不合法时,放弃不合法音节,或者根据纠错策略将所述不合法音节调整为所述拼音切分词典中对应的合法音节。
15.根据权利要求12所述的系统,其特征在于,所述计算单元包括:
统计模块,用于统计所述拼音切分路径的字符中声母的个数和韵母的个数,以及切分路径长度;
计算模块,用于将所述声母的个数与声母权值的乘积以及所述韵母的个数与韵母权值的乘积相加,并将所述相加的结果与第一预定系数的乘积除以所述切分路径长度的平方,得到所述拼音切分路径的路径权值。
16.根据权利要求15所述的系统,其特征在于,所述计算模块还用于在所述拼音切分路径中存在进行了纠错处理的字符时,将所述拼音切分路径的路径权值乘以第二预定系数的纠错字符个数次方。
17.根据权利要求15所述的系统,其特征在于,所述计算模块还用于在所述拼音切分路径中的最后一个字符为a时,将所述韵母的个数与韵母权值的乘积加上预定数量后,再与所述声母的个数与声母权值的乘积相加。
18.根据权利要求12所述的系统,其特征在于,所述整句生成单元具体用于对所述第一预定数量的拼音切分路径的每一条进行整句生成,所述整句生成单元包括:
第二确定模块,用于根据核心词库和用户词库确定当前拼音切分路径中每一个拼音对应的所有词条;
第一处理模块,对于所述当前拼音路径中的每一个拼音,用于分别计算所述当前拼音切分路径下,以所述当前拼音的每一个词条结尾所对应的整句中概率最大的整句,将所述概率最大的整句对应的相关信息存储于相应的词条节点,根据预定策略选择第二预定数量的词条作为所述当前拼音的词条;
第一生成模块,用于选择所述当前拼音切分路径的最后一个拼音下的所有词条节点中概率最大的词条节点,根据所述概率最大的词条节点中存储的相关信息,回溯所述当前拼音切分路径,将所述当前拼音切分路径对应的整条句子输出。
19.根据权利要求12所述的系统,其中,所述整句生成单元具体用于对所述第一预定数量的拼音切分路径的每一条进行整句生成,所述整句生成单元包括:
第三确定模块,用于根据核心词库和用户词库确定所述当前字符对应的拼音的所有词条;
第二处理模块,用于分别计算所述当前拼音切分路径下,以所述每一个词条结尾所对应的整句中概率最大的整句,将所述概率最大的整句对应的相关信息存储于相应的词条节点,根据预定策略选择第二预定数量的词条作为所述当前拼音的词条;
第二生成模块,用于选择所述当前拼音切分路径的最后一个拼音下的所有词条节点中概率最大的词条节点,根据所述概率最大的词条节点中存储的相关信息,回溯所述当前拼音切分路径,将所述当前拼音切分路径对应的整条句子输出。
20.根据权利要求18所述的系统,其中,所述第一处理模块用于计算当前拼音切分路径下,以每一个词条结尾所对应的整句中概率最大的整句,所述第一处理模块包括:
确定子模块,用于根据当前词条Ai的长度确定所述当前词条的前驱拼音B;
计算子模块,用于分别计算所述前驱拼音B的每一个词条Bj到所述当前词条Ai的整句的概率;
处理子模块,用于将所述整句的概率中的最大值对应的整句作为以所述当前词条Ai为结尾所对应的整句中概率最大的整句。
21.根据权利要求20所述的系统,其中,所述计算子模块具体用于判断所述前驱拼音B的每一个词条Bj与所述当前词条Ai是否具有Bigram关系;在所述Bj与所述Ai具有Bigram关系时,将所述Bj中保存的结果E(Bj),与所述Bj和所述Ai的Bigram关系的对数Log(Bigram(Bj,Ai))的和E(Bj)+Log(Bigram(Bj,Ai))作为所述Bj到所述Ai的整句的概率;在所述Bj与所述Ai不具有Bigram关系时,将所述Bj中保存的结果E(Bj),与所述Bj的Alpha值的对数Log(Alpha(Bj)),以及与所述Ai的概率的对数Log(Pro(Ai))的和E(Bj)+Log(Alpha(Bj))+Log(Pro(Ai))作为所述Bj到所述Ai的整句的概率。
22.根据权利要求19所述的系统,其中,所述第二处理模块用于计算当前拼音切分路径下,以每一个词条结尾所对应的整句中概率最大的整句,所述第二处理模块包括:
确定子模块,用于根据当前词条Ai的长度确定所述当前词条的前驱拼音B;
计算子模块,用于分别计算所述前驱拼音B的每一个词条Bj到所述当前词条Ai的整句的概率;
处理子模块,用于将所述整句的概率中的最大值对应的整句作为以所述当前词条Ai为结尾所对应的整句中概率最大的整句。
23.根据权利要求22所述的系统,其中,所述计算子模块具体用于判断所述前驱拼音B的每一个词条Bj与所述当前词条Ai是否具有Bigram关系;在所述Bj与所述Ai具有Bigram关系时,将所述Bj中保存的结果E(Bj),与所述Bj和所述Ai的Bigram关系的对数Log(Bigram(Bj,Ai))的和E(Bj)+Log(Bigram(Bj,Ai))作为所述Bj到所述Ai的整句的概率;在所述Bj与所述Ai不具有Bigram关系时,将所述Bj中保存的结果E(Bj),与所述Bj的Alpha值的对数Log(Alpha(Bj)),以及与所述Ai的概率的对数Log(Pro(Ai))的和E(Bj)+Log(Alpha(Bj))+Log(Pro(Ai))作为所述Bj到所述Ai的整句的概率。
24.根据权利要求12所述的系统,其中,所述Unigram出词单元具体用于对所述以当前字符结尾的拼音流的每一条拼音切分路径进行Unigram出词,所述Unigram出词单元包括:
第四确定模块,用于确定所述拼音切分路径的所有前缀;
判断模块,用于判断每一个前缀对应的词组是否已经存在于预先建立的去重词组;
出词模块,用于在所述判断模块的判断结果为全部存在时,将所述所有前缀对应的词组作为所述拼音切分路径的Unigram出词结果;在所述判断模块的判断结果为全部不存在时,根据核心词库、用户词库以及生僻词库查询每一个前缀对应的所有词组,将所述所有词组作为所述拼音切分路径的Unigram出词结果;在所述判断模块的判断结果为部分存在时,根据核心词库、用户词库以及生僻词库查询不存在的每一个前缀对应的所有词组,将存在的前缀对应的词组以及所述查询获得的不存在的前缀对应的词组作为所述拼音切分路径的Unigram出词结果。
25.根据权利要求12所述的系统,其中,所述处理单元包括:
第三调整模块,用于对所述整句生成结果和所述Unigram出词结果进行权重调整;
去重模块,用于根据哈希表对权重调整后的结果进行去重,去掉相同的结果中权重相对较低的结果;
排序模块,用于对去重后的结果进行排序,获得所述以当前字符结尾的拼音流的音字转换结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110187945.5A CN102866782B (zh) | 2011-07-06 | 2011-07-06 | 一种提高整句生成效率的输入法和输入法系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110187945.5A CN102866782B (zh) | 2011-07-06 | 2011-07-06 | 一种提高整句生成效率的输入法和输入法系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102866782A CN102866782A (zh) | 2013-01-09 |
CN102866782B true CN102866782B (zh) | 2015-05-20 |
Family
ID=47445688
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110187945.5A Active CN102866782B (zh) | 2011-07-06 | 2011-07-06 | 一种提高整句生成效率的输入法和输入法系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102866782B (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104345898B (zh) * | 2013-08-07 | 2017-06-13 | 哈尔滨工业大学 | 一种拼音点滑输入方法、输入装置以及电子设备 |
CN104516522B (zh) * | 2013-09-29 | 2018-05-01 | 北京三星通信技术研究有限公司 | 九宫格键盘输入的方法和装置 |
CN106484131B (zh) * | 2015-09-02 | 2021-06-22 | 北京搜狗科技发展有限公司 | 一种输入纠错方法和输入法装置 |
CN105573520B (zh) * | 2015-12-15 | 2018-03-30 | 上海嵩恒网络科技有限公司 | 一种五笔的长句连打输入方法及其系统 |
CN105653061B (zh) * | 2015-12-29 | 2020-03-31 | 北京京东尚科信息技术有限公司 | 针对拼音输入法的词条检索及错词检测的方法和系统 |
CN107870677B (zh) * | 2016-09-23 | 2022-02-25 | 北京搜狗科技发展有限公司 | 一种输入方法、装置和用于输入的装置 |
CN106570138B (zh) * | 2016-11-03 | 2020-03-03 | 北京百度网讯科技有限公司 | 基于人工智能的信息搜索方法和装置 |
CN106774975B (zh) * | 2016-11-30 | 2020-03-31 | 百度在线网络技术(北京)有限公司 | 输入方法和装置 |
CN108304078A (zh) * | 2017-01-11 | 2018-07-20 | 北京搜狗科技发展有限公司 | 一种输入方法、装置及电子设备 |
CN106933803B (zh) * | 2017-02-24 | 2020-02-21 | 黑龙江特士信息技术有限公司 | 一种面向多数据源的医疗器材类实体识别方法及装置 |
CN106844351B (zh) * | 2017-02-24 | 2020-02-21 | 易保互联医疗信息科技(北京)有限公司 | 一种面向多数据源的医疗机构组织类实体识别方法及装置 |
CN109116996B (zh) * | 2017-06-23 | 2023-06-20 | 百度在线网络技术(北京)有限公司 | 用于获取信息的方法、装置及服务器 |
CN107292396B (zh) * | 2017-08-14 | 2020-05-05 | 南宁学院 | 一种水电设备报修消息处理方法 |
CN107678560B (zh) * | 2017-08-31 | 2021-10-08 | 科大讯飞股份有限公司 | 输入法的候选结果生成方法及装置、存储介质、电子设备 |
CN109426357B (zh) * | 2017-09-01 | 2023-05-12 | 百度在线网络技术(北京)有限公司 | 信息输入方法和装置 |
CN109542243B (zh) * | 2017-09-21 | 2023-04-18 | 北京搜狗科技发展有限公司 | 组词方法和装置、用于组词的装置 |
CN109901725B (zh) * | 2017-12-07 | 2022-05-06 | 北京搜狗科技发展有限公司 | 一种拼音串切分方法和装置 |
CN109032375B (zh) * | 2018-06-29 | 2022-07-19 | 北京百度网讯科技有限公司 | 候选文本排序方法、装置、设备及存储介质 |
CN110456921A (zh) * | 2019-08-01 | 2019-11-15 | 吉旗(成都)科技有限公司 | 预测用户键盘操作行为的方法以及装置 |
TWI710976B (zh) * | 2019-09-06 | 2020-11-21 | 宏碁股份有限公司 | 文字輸入方法及其電腦程式產品 |
CN110673748B (zh) * | 2019-09-27 | 2023-04-28 | 北京百度网讯科技有限公司 | 输入法中候选长句的提供方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101076044A (zh) * | 2007-04-12 | 2007-11-21 | 孙强国 | 手机数字键盘输入中文时的数据流的切分及显示方法 |
CN101493812A (zh) * | 2009-03-06 | 2009-07-29 | 中国科学院软件研究所 | 一种音字转换方法 |
-
2011
- 2011-07-06 CN CN201110187945.5A patent/CN102866782B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101076044A (zh) * | 2007-04-12 | 2007-11-21 | 孙强国 | 手机数字键盘输入中文时的数据流的切分及显示方法 |
CN101493812A (zh) * | 2009-03-06 | 2009-07-29 | 中国科学院软件研究所 | 一种音字转换方法 |
Non-Patent Citations (2)
Title |
---|
一种语句级汉字输入技术的研究;徐志明等;《高技术通讯》;20000131;第2000年卷(第1期);51-55 * |
中文整句智能输入方法研究;刘政怡;《万方学位论文》;20080317;第2008年卷;第三章 * |
Also Published As
Publication number | Publication date |
---|---|
CN102866782A (zh) | 2013-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102866782B (zh) | 一种提高整句生成效率的输入法和输入法系统 | |
CN106598939B (zh) | 一种文本纠错方法及装置、服务器、存储介质 | |
CN101183281B (zh) | 一种输入法中候选词的相关词输入的方法及系统 | |
CN102693309B (zh) | 用于计算机辅助翻译的候选短语查询方法及辅助翻译系统 | |
KR101389148B1 (ko) | 오리지널 유저 입력에 기초한 유저 입력의 제안 및 정제 | |
CN108304375B (zh) | 一种信息识别方法及其设备、存储介质、终端 | |
CN106202153A (zh) | 一种es搜索引擎的拼写纠错方法及系统 | |
Gong et al. | Alphabetically constrained keypad designs for text entry on mobile devices | |
US20090150322A1 (en) | Predicting Candidates Using Information Sources | |
KR20210116379A (ko) | 텍스트 창작 방법, 텍스트 창작 장치, 전자 기기 및 저장 매체 | |
CN107798123B (zh) | 知识库及其建立、修改、智能问答方法、装置及设备 | |
WO2008098507A1 (fr) | Méthode de saisie permettant de combiner des mots de façon intelligente, système associé à la méthode de saisie et méthode de renouvellement | |
CN102163198A (zh) | 提供新词或热词的方法及系统 | |
KR20100052461A (ko) | 단어 확률 결정 | |
CN102768681A (zh) | 一种用于搜索输入的推荐系统及方法 | |
CN107704102A (zh) | 一种文本输入方法及装置 | |
CN111324728A (zh) | 文本事件摘要的生成方法、装置、电子设备及存储介质 | |
CN104991943A (zh) | 音乐搜索方法及装置 | |
CN101645087A (zh) | 一种分类词库系统及其更新和维护方法、以及客户端 | |
CN108446316B (zh) | 联想词的推荐方法、装置、电子设备及存储介质 | |
Dinarelli et al. | Discriminative reranking for spoken language understanding | |
CN102184028A (zh) | 获取与输入按键序列相对应的候选字符串的方法与设备 | |
CN102866781B (zh) | 一种音字转换方法和系统 | |
CN102866783B (zh) | 一种拼音流切分方法和系统 | |
CN102929864A (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 |