一种基于嵌入式qt的输入方法【专利摘要】本发明提供一种基于嵌入式QT的输入方法,其特点在于实现嵌入式QT中的输入法类接口,加入自定义的图形交互界面和软件处理逻辑,包括输入法状态条、虚拟数字键盘、虚拟英文键盘、拼音处理逻辑、词库查询逻辑,最后以动态链接库的形式导出。该方法且实现了整句输入、动态词频、简拼、全拼等高级特性,解决了嵌入式QT没有完善的中文输入法的问题,提高了嵌入式QT的易用性。【专利说明】—种基于嵌入式QT的输入方法【
技术领域:
】[0001]本发明涉及计算机应用【
技术领域:
】,具体地说是一种基于嵌入式QT的输入方法。【
背景技术:
】[0002]Qt是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发⑶I程序,也可用于开发非⑶I程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(MetaObjectCompiler,moc))以及一些宏,易于扩展,允许组件编程。2008年,奇趣科技被诺基亚公司收购,QT也因此成为诺基亚旗下的编程语言工具。2012年,Qt被Digia收购。2014年4月,跨平台集成开发环境QtCreator3.1.0正式发布,实现了对于1S的完全支持,新增WinRT、Beautifier等插件,废弃了无Python接口的GDB调试支持,集成了基于Clang的C/C++代码模块,并对Android支持做出了调整,至此实现了全面支持i0S、Android、WP。QT作为一种优秀的跨平台的图形用户界面应用程序开发框架,凭借其强大的图形控件库和高效稳定的架构,一直被广泛应用在主流Linux系统的桌面应用开发中,如KDE桌面等。嵌入式QT作为QT的一个分支,在国内使用却不广泛,究其原因,是因为嵌入式QT环境上一直没有完善的中文输入法。Murphytalk和SYSZUXpinyin是目前嵌入式QT环境下仅有的两个中文输入法实现,它们包含的汉字和词汇数量都远远不能跟当前主流的PC输入法相比,且不支持整句输入、动态词频等高级特性,严重影响了嵌入式QT在国内的应用。【
发明内容】[0003]本发明的目的是提供一种基于嵌入式QT的输入方法。[0004]本发明的目的是按以下方式实现的,嵌入式QT环境提供了一个通用的输入法,且实现了整句输入、动态词频简拼全拼等高级特性,解决了嵌入式QT没有完善的中文输入法的问题,提高了嵌入式QT的易用性。[0005]具体内容步骤如下:1)输入法状态条使用嵌入式QT的QFrame控件,在输入法类的初始化代码中生成一个输入法状态条对象,输入法状态条包含3个虚拟按钮,分别用于隐藏/显示虚拟键盘、显示虚拟数字键盘、显示虚拟英文键盘;2)虚拟数字键盘使用嵌入式QT的QFrame控件和QPushButton控件,在输入法类的初始化代码中生成一个虚拟数字键盘对象,虚拟数字键盘上包含16个虚拟按键,分别对应“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“0”、“:”、“.”、“/”、退格、空格、TAB;3)虚拟英文键盘使用嵌入式QT的QFrame控件和QPushButton控件,在输入法类的初始化代码中生成一个虚拟英文键盘对象,虚拟英文键盘包含37个虚拟按键,以及一个动态的拼音显示区域,一个动态的候选词显示区域;动态的候选词显示区域还包含两个虚拟按钮,分别对应向前翻页功能、向后翻页功能,动态的拼音显示区域和动态的候选词显示区域只有在拼音输入模式时才会显示,其余模式处于隐藏状态;虚拟英文键盘有四种键值模式,分别为:a.英文小写模式37个虚拟按键分别对应“&”、“13”、“。”、“(1”、“6”、“广’、‘4”、“11”、“1”、“」”、“1^、“1”、“111”、"η","ο"P"q","r","s","t","u","v","w","x"y"z",",",".”、“:,,、“%,,“/,,、空格、TAB、退格、大写切换、符号切换、中英切换;b.英文大写模式37个虚拟按键分别对应1”、1”、“(:”、“0”、1”、叩”、“6”、“!1”、“1”、“6”、“1(”、“1/’、1”、"N"O"P"Q"R"S"T"U"V"W"X"Y"Z.”、“:,,、“%,,“/,,、空格、TAB、退格、小写切换、符号切换、中英切换;c.符号模式37个虚拟按键分别对应“、、“!“(,,、“)”、“[,’“],’“〈,’“〉,’“{,,“},’“/,,“+,’“_,,“_,’“■,’“,’“,’“,’“?,,“I,’“\,’弓I号、双引号、“ftp://”、“http://”、空格、TAB、退格、退出;d.拼音模式37个虚拟按键分别对应“&”、“13”、“。”、“(1”、?”、竹”、1”、“11”、“1”、“」”、“1^、“1”、“111”、"η","ο"P"q","r","s","t","u","v","w","x"y"z",",",".”、“:,,、“%,,“/,,、空格、TAB、退格、大写切换、符号切换、中英切换;4)拼音处理逻辑拼音处理逻辑主要是对拼音串的切分处理,而切分过程又分为首次切分和切分纠正两个步骤;首先建立一张包含全部汉字拼音的表,将输入的拼音串按照最大匹配原则,进行首次切分;此处使用的拼音表为:{//I”//I”//1.”//1.”//I”//I”//I”//I”//I”//1.”ba,bo,bai,bei,bao,ban,ben,bang,beng,bi,//1.////1.////1.////1.////1.////I////.////////////.//bie,biao,bian,bin,bing,bu,ci,ca,ce,cai,//////////////////////////////////.////////////cao,cou,can,cen,cang,ceng,cu,cuo,cui,cuan,cun,cong////-t.////I////I////1.////I////I////I////I////I////I////I//,chi,cha,che,chai,chao,chou,chan,chen,chang,cheng,chu,-//I////I.////1.////I////I////I////I////I////-t////I.////-t.////chuo,chuai,chui,chuan,chuang,chun,chong,da,de,del,dai,I////I////I////I////I////1.////1.////I.////I.////I.////I.////I////Idao,dou,dan,dang,deng,di,die,diao,diu,dian,ding,du,du////1.////I////I////I////(-.////(-.////(-////(-.////(-.////(-.////(-.////(-.//o,dui,duan,dun,dong,ta,to,tei,tou,tan,ten,tang,teng,//(-.////////////.////.////////////////////////////////////fu,ga,ge,gai,gei,gao,gou,gan,gen,gang,geng,gu,gua,////.////.////////////////////I////I////1.////1.////I////Iguo,guai,gui,guan,gun,guang,gong,ha,he,hai,hei,hao,ho////I////I////I////I////I////I////I////1.////1.////I////I////Iu,han,hen,hang,heng,hu,hua,huo,huai,hui,huan,hun,huan////I////////////////////////////////////////.////.g,hong,JI,Jia,Jie,jiao,Jiu,Jian,jm,jmg,Jiang,ju,jue////.////.////////I////I////1.////I////I////I////I////I////I//,juan,jun,j1ng,ka,ke,kai,kao,kou,kan,ken,kang,keng,”I”//1”//1////1.////1.””I””I””-1////-1////-1.””-1ku,kua,kuo,kuai,kui,kuan,kun,kuang,kong,_L&,_Le,_L&i,_Le.////-1////-1////-1////-1////-ι.////////I.////I.////I.////I.////I.////I.I,丄,丄an,lrnig,丄eng,丄ι,Ji,丄ie,丄ι&ο,丄iu,Iirni,丄in,Iiang////-1.////-1////-1////-1////-1////-1////-1////-1////-1////////////////.//,丄ing,丄ou,丄u,丄Uo,Iimn,丄un,long,_Lv,丄ue,ma,mo,me,mai//.////////////////////////////.////.////.////////.////,meι,mao,mou,man,men,mang,meng,mi,mie,miao,miu,mian,.////.////////////////.////.//////////////////////////min,ming,mu,na,ne,nai,nei,nao,nou,nan,nen,nang,neng,//.////.////.////////.////////.//////////////////////ni,me,mao,mu,man,run,mang,rung,nu,nuo,nuan,nong,//////////////////.////.////////////////////////////.////nv,nue,pa,po,pai,pel,pao,pou,pan,pen,pang,peng,pi,.////.////////.////////////.////.////////////////////.pie,piao,pian,pin,ping,pu,qi,qia,qie,qiao,qiu,qian,qi////.////////////////////////.//////////////////////n,qiang,qing,qu,que,quan,qun,q1ng,ri,re,rao,rou,ran//////////////////////.////////////////.////////////.,ren,rang,reng,ru,ruo,rui,ruan,run,rong,si,sa,se,sai////////////////////////////////////.//////////////,san,sao,sou,sen,sang,seng,su,suo,sui,suan,sun,song,//I.////I////I////I.////I.////I////I////I////I////I////I////shi,sha,she,shai,shei,shao,shou,shan,shen,shang,sheng,I////I////I////I.////1.////I////I////I////,////,////,.////,shu,shua,shuo,shuai,shui,shuan,shun,shuang,ta,te,tai,ta””,////,””,////,λ?//j.////j.////j.////j.””.////.””.ο,tou,tan,tang,teng,ti,tie,tiao,tian,ting,tu,tuan,tuo////,.////,////,////////////////.////.////////////////////.,tui,tun,tong,wu,wa,wo,wai,wei,wan,wen,wang,weng,xi////////////.////////.////////.////////////////////,xia,xie,xiao,xiu,xian,xm,xiang,xmg,xu,xue,xuan,xun////.////////////////////.////////////////.////////.////,x1ng,yi,ya,yo,ye,yai,yao,you,yan,yin,yang,ymg,yu////////////////////////////////////////.////////////,yue,yuan,yun,yong,yu,yue,yuan,yun,yong,zi,za,ze,za.////////.////////////////////////////////.//////////i,zao,zei,zou,zan,zen,zang,zeng,zu,zuo,zui,zun,zuan,”////-t.////I////I////1.////I////I””I////I””I””zong,zhi,zha,zhe,zhai,zhao,zhou,zhan,zhen,zhang,zheng,I////I////I////1.////I////I////I////I////I////////////.zhu,zhua,zhuo,zhuai,zhuang,zhui,zhuan,zhun,zhong,a,e,ei////.////.//////////////////////////////////////,ai,ei,ao,o,ou,an,en,ang,eng,er,,};第二步是对首次切分后的拼音串进行纠错,确保拼音切分的准确性,考虑如下情况,“半个”的拼音为“bange”,经第一步按最大匹配原则切分后,拼音串被切分为“bange”,明显与输入的意图不符;此时就需要建立一张纠错表,在拼音处理逻辑中对此类错误进行纠正;5)词库查询逻辑a.词库采用SQlite数据库方式实现,包含16个数据表table01_tablel6,其中tabIeOI对应单个汉字的字库,table02对应2个汉字词库,table03对应3个汉字词库,以此类推;b.table01_tablel6米用相同的表结构,每张表都包含以下的列,第I列为词汇本身phrase,第2列为词频freq,第3列为词汇中第一汉字的声母sl,第4列为词汇中第一个汉字的韵母yl,第5列为词汇中第二个汉字的声母s2,第6列为第二个汉字的韵母y2,以此类推;c.查询数据库时,根据切分后的拼音个数,决定查询表的数量,一个拼音只需查tableOl,2个拼音则需要查tableOl和table02,以此类推;例如,“半个”的拼音为“bange”,则有如下的查询方法全拼查询:查询“bange”Selectphrasefreqadjfrom(SELECTphrase,freqASfreqadjFROMtabIeOIWHEREsl=,b,ANDyl=,an’UN1NALLSELECTphrase,freqASfreqadjFROMtable02WHEREsi=’b’ANDyl=’an’ANDs2=,g,ANDy2=,e,)GROUPBYphraseORDERBYfreqadjDESCLIMIT30简拼查询:查询“bg”Selectphrasefreqadjfrom(SELECTphrase,freqASfreqadjFROMtabIeOIWHEREsi=’b’UN1NALLSELECTphrase,freqASfreqadjFROMtable02WHEREsi=’b’ANDs2=’g’)GROUPBYphraseORDERBYfreqadjDESCLIMIT30词汇在前:调整词频系数Selectphrasefreqadjfrom(SELECTphrase,freq*1.0ASfreqadjFROMtabIeOIWHEREsl=,b,ANDyl=,an’UN1NALLSELECTphrase,freq*2.0ASfreqadjFROMtable02WHEREsi=’b’ANDyl=,an,ANDs2=,g,ANDy2=,e,)GROUPBYphraseORDERBYfreqadjDESCLIMIT30单字在前:调整词频系数Selectphrasefreqadjfrom(SELECTphrase,freq*2.0ASfreqadjFROMtabIeOIWHEREsl=,b,ANDyl=,an’UN1NALLSELECTphrase,freq*1.0ASfreqadjFROMtable02WHEREsi=’b’ANDyl=,an,ANDs2=,g,ANDy2=,e,)GROUPBYphraseORDERBYfreqadjDESCLIMIT306)导出为动态链接库将上述图形交互界面、拼音处理逻辑、词库查询逻辑转化为代码实现,使用嵌入式QT的编译器编译为动态链接库文件。【专利附图】【附图说明】[0006]图1是输入法状态条结构示意图;图2是虚拟数字键盘;图3是虚拟英文键盘-英文小写模式布局图;图4是虚拟英文键盘-英文大写模式布局图;图5是虚拟英文键盘-符号模式布局图;图6是虚拟英文键盘-拼音模式布局图。【具体实施方式】[0007]参照说明书附图对本发明的一种基于嵌入式QT的输入方法作以下详细地说明。[0008]嵌入式QT环境提供了一个通用的输入法,且实现了整句输入、动态词频简拼全拼等高级特性,解决了嵌入式QT没有完善的中文输入法的问题,提高了嵌入式QT的易用性。[0009]具体步骤内容包括:1.输入法状态条使用嵌入式QT的QFrame控件,在输入法类的初始化代码中生成一个输入法状态条对象。输入法状态条包含3个虚拟按钮,分别用于隐藏/显示虚拟键盘、显示虚拟数字键盘、显示虚拟英文键盘。[0010]2.虚拟数字键盘使用嵌入式QT的QFrame控件和QPushButton控件,在输入法类的初始化代码中生成一个虚拟数字键盘对象。虚拟数字键盘上包含16个虚拟按键,分别对应“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“0”、“:”、“.退格、空格、TAB。[0011]3.虚拟英文键盘使用嵌入式QT的QFrame控件和QPushButton控件,在输入法类的初始化代码中生成一个虚拟英文键盘对象。虚拟英文键盘包含37个虚拟按键,以及一个动态的拼音显示区域,一个动态的候选词显示区域。[0012]动态的候选词显示区域还包含两个虚拟按钮,分别对应向前翻页功能、向后翻页功能。动态的拼音显示区域和动态的候选词显示区域只有在拼音输入模式时才会显示,其余模式处于隐藏状态。[0013]虚拟英文键盘有四种键值模式,分别为:a.英文小写模式37个虚拟按键分别对应“&”、“13”、“。”、“(1”、?”、“^”、“11”、“1”、“」”、“1^、“1”、“111”、"η","ο","P","q","r","s","t"u"v","w","x","y","z",",",".”、“:,,、“%,,“/,,、空格、TAB、退格、大写切换、符号切换、中英切换;b.英文大写模式37个虚拟按键分别对应1”、1”、“(:”、“0”、1”、叩”、“6”、“!1”、“1”、“6”、“1(”、“1/’、1”、"N"O"P"Q"R"S"T"U"V"W"X"Y"Z.”、“:,,、“%,,“/,,、空格、TAB、退格、小写切换、符号切换、中英切换;c.符号模式37个虚拟按键分别对应“?”、“!”、(”、“)”、“[,’“],’“〈,’“〉,’“{,,“},’“/,,“+,’“_,,“_,’“■,’“,’“,’“,’“?,,“I,’“\,’弓I号、双引号、“ftp://”、“http://”、空格、TAB、退格、退出;d.拼音模式37个虚拟按键分别对应“&”、“13”、“。”、“(1”、?”、“^”、“11”、“1”、“」”、“1^、“1”、“111”、"η","ο","P","q","r","s"t"u","v","w","x","y","z",",",".”、“:,,、“%,,“/,,、空格、TAB、退格、大写切换、符号切换、中英切换。[0014]4.拼音处理逻辑拼音处理逻辑主要是对拼音串的切分处理,而切分过程又分为首次切分和切分纠正两个步骤。[0015]首先建立一张包含全部汉字拼音的表,将输入的拼音串按照最大匹配原则,进行首次切分。[0016]此处使用的拼音表为:{//I”//I”//1.”//1.”//I”//I”//I”//I”//I”//1.”ba,bo,bai,bei,bao,ban,ben,bang,beng,bi,//1.////1.////1.////1.////1.////I////.////////////.//bie,biao,bian,bin,bing,bu,ci,ca,ce,cai,//////////////////////////////////.////////////cao,cou,can,cen,cang,ceng,cu,cuo,cui,cuan,cun,cong////-t.////I////I////1.////I////I////I////I////I////I////I//,chi,cha,che,chai,chao,chou,chan,chen,chang,cheng,chu,-//I////I.////1.////I////I////I////I////I////-t////I.////-t.////chuo,chuai,chui,chuan,chuang,chun,chong,da,de,del,dai,I////I////I////I////I////I.////I.////I.////I.////I////Idao,dou,dan,dang,deng,di,die,diao,diu,dian,ding,du,du////1.////I////I////I////(-.////(-.////(-////(-.////(-.////(-.////(-.////(-.//o,dui,duan,dun,dong,ta,to,tei,tou,tan,ten,tang,teng,//(-.////////////.////.////////////////////////////////////fu,ga,ge,gai,gei,gao,gou,gan,gen,gang,geng,gu,gua,////.////.////////////////////I////I////1.////1.////I////Iguo,guai,gui,guan,gun,guang,gong,ha,he,hai,hei,hao,ho////I////I////I////I////I////I////I////1.////1.////I////I////Iu,han,hen,hang,heng,hu,hua,huo,huai,hui,huan,hun,huan////I////////////////////////////////////.////.g,hong,JI,Jia,Jie,jiao,Jiu,Jian,jm,jmg,Jiang,ju,jue////.////.////////I////I////1.////I////I////I////I////I////I//,juan,jun,j1ng,ka,ke,kai,kao,kou,kan,ken,kang,keng,//1////1////1////i.////1.////1//////1//////-1////-1////-1.////-1ku,kua,kuo,kuai,kui,kuan,kun,kuang,kong,_L&,_Le,_L&i,_Le.////-1////-1////-1////-1////-1.////I.////I.////I.////I.////I.////I.I,丄,丄an,丄ang,丄eng,丄ι,Ji,丄ie,丄ι&ο,丄iu,丄irni,丄in,Iiang////-1.////-1////-1////-1////-1////-1////-1////-1////-1////////////////.//,丄ing,丄ou,丄u,丄Uo,Iimn,丄un,long,_Lv,丄ue,ma,mo,me,mai//.////////////////////////////.////.////.////////.////,meι,mao,mou,man,men,mang,meng,mi,mie,miao,miu,mian,.////.////////////////.////.//////////////////////////mm,ming,mu,na,ne,nai,nei,nao,nou,nan,nen,nang,neng,//.////.////.////////.////////.//////////////////////ni,me,mao,mu,man,run,mang,rung,nu,nuo,nuan,nong,//////////////////.////.////////////////////////////.////nv,nue,pa,po,pai,pel,pao,pou,pan,pen,pang,peng,pi,.////.////////////////////.////.////.////////.////////.pie,piao,pian,pin,ping,pu,qi,qia,qie,qiao,qiu,qian,qi////.////////////////////////.//////////////////////n,qiang,qing,qu,que,quan,qun,q1ng,ri,re,rao,rou,ran//////////////////////.////////////////.////////////.,ren,rang,reng,ru,ruo,rui,ruan,run,rong,si,sa,se,sai////////////////////////////////////.//////////////,san,sao,sou,sen,sang,seng,su,suo,sui,suan,sun,song,//I.////I////I////I.////1.////I////I////I////I////I////I////shi,sha,she,shai,shei,shao,shou,shan,shen,shang,sheng,I////I////I////I.////I.////I////I////I////J////,////,.////,shu,shua,shuo,shuai,shui,shuan,shun,shuang,ta,te,tai,ta””,////,””,////,λ?//j.////j.////j.////j.””.////.””.ο,tou,tan,tang,teng,ti,tie,tiao,tian,ting,tu,tuan,tuo////,.////,////,////////////////.////.////////////////////.,tui,tun,tong,wu,wa,wo,wai,wei,wan,wen,wang,weng,xi,xia,xie,xiao,xiu,xian,xm,xiang,xmg,xu,xue,xuan,xun,x1ng,yi,ya,yo,ye,yai,yao,you,yan,yin,yang,ymg,yu,yue,yuan,yun,yong,yu,yue,yuan,yun,yong,zi,za,ze,za.////////.////////////////////////////////.//////////i,zao,zei,zou,zan,zen,zang,zeng,zu,zuo,zui,zun,zuan,””//1.””I////I////1.””I””I””I””zong,zhi,zha,zhe,zhai,zhao,zhou,zhan,zhen,zhang,zheng,I////I////I////1.////I////I////I////I////I////////////.zhu,zhua,zhuo,zhuai,zhuang,zhui,zhuan,zhun,zhong,a,e,ei////.////.//////////////////////////////////////,ai,ei,ao,o,ou,an,en,ang,eng,er,,};第二步是对首次切分后的拼音串进行纠错,确保拼音切分的准确性。考虑如下情况,“半个”的拼音为“bange”,经第一步按最大匹配原则切分后,拼音串被切分为“bange”,明显与输入的意图不符。[0017]此时就需要建立另外一张纠错表,在拼音处理逻辑中对此类错误进行纠正。本发明使用的纠错表的内容此处不再详细说明。[0018]5.词库查询逻辑a.词库采用SQlite数据库方式实现,包含16个数据表table01_tablel6,其中tableOl对应单个汉字的字库,table02对应2个汉字词库,table03对应3个汉字词库,以此类推。[0019]b.table01-tablel6采用相同的表结构,每张表都包含以下的列,第I列为词汇本身phrase,第2列为词频freq,第3列为词汇中第一汉字的声母sl,第4列为词汇中第一个汉字的韵母yl,第5列为词汇中第二个汉字的声母s2,第6列为第二个汉字的韵母y2,以此类推。[0020]c.查询数据库时,根据切分后的拼音个数,决定查询表的数量,一个拼音只需查tableOl,2个拼音则需要查tableOl和table02,以此类推。[0021]例如,“半个”的拼音为“bange”,则有如下的查询方法全拼查询:(查询“bange”)Selectphrasefreqadjfrom(SELECTphrase,freqASfreqadjFROMtableOlWHEREsl=,b,ANDyl=,an’UN1NALLSELECTphrase,freqASfreqadjFROMtable02WHEREsl=’b’ANDyl=’an’ANDs2=,g,ANDy2=,e,)GROUPBYphraseORDERBYfreqadjDESCLIMIT30简拼查询:(查询“bg”)Selectphrasefreqadjfrom(SELECTphrase,freqASfreqadjFROMtableOlWHEREsl=’b’UN1NALLSELECTphrase,freqASfreqadjFROMtable02WHEREsl=’b’ANDs2=’g’)GROUPBYphraseORDERBYfreqadjDESCLIMIT30词汇在前:(调整词频系数)Selectphrasefreqadjfrom(SELECTphrase,freq*1.0ASfreqadjFROMtableOlWHEREsl=,b,ANDyl=,an’UN1NALLSELECTphrase,freq*2.0ASfreqadjFROMtable02WHEREsl=’b’ANDyl=,an,ANDs2=,g,ANDy2=,e,)GROUPBYphraseORDERBYfreqadjDESCLIMIT30单字在前:(调整词频系数)Selectphrasefreqadjfrom(SELECTphrase,freq*2.0ASfreqadjFROMtableOlWHEREsl=,b,ANDyl=,an’UN1NALLSELECTphrase,freq*1.0ASfreqadjFROMtable02WHEREsl=’b’ANDyl=,an,ANDs2=,g,ANDy2=,e,)GROUPBYphraseORDERBYfreqadjDESCLIMIT30。[0022]6.导出为动态链接库将上述图形交互界面、拼音处理逻辑、词库查询逻辑转化为代码实现,使用嵌入式QT的编译器编译为动态链接库文件。[0023]除说明书所述的技术特征外,均为本专业技术人员的已知技术。【权利要求】1.一种基于嵌入式QT的输入方法,其特征在于具体内容步骤如下:.1)输入法状态条使用嵌入式QT的QFrame控件,在输入法类的初始化代码中生成一个输入法状态条对象,输入法状态条包含3个虚拟按钮,分别用于隐藏/显示虚拟键盘、显示虚拟数字键盘、显示虚拟英文键盘;.2)虚拟数字键盘使用嵌入式QT的QFrame控件和QPushButton控件,在输入法类的初始化代码中生成一个虚拟数字键盘对象,虚拟数字键盘上包含16个虚拟按键,分别对应“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“0”、“:”、“.”、“/”、退格、空格、TAB;.3)虚拟英文键盘使用嵌入式QT的QFrame控件和QPushButton控件,在输入法类的初始化代码中生成一个虚拟英文键盘对象,虚拟英文键盘包含37个虚拟按键,以及一个动态的拼音显示区域,一个动态的候选词显示区域;动态的候选词显示区域还包含两个虚拟按钮,分别对应向前翻页功能、向后翻页功能,动态的拼音显示区域和动态的候选词显示区域只有在拼音输入模式时才会显示,其余模式处于隐藏状态;虚拟英文键盘有四种键值模式,分别为:英文小写模式.37个虚拟按键分别对应“&”、“13”、“。”、“(1”、?”、竹”、1”、“11”、“1”、“」”、“1^、“1”、“111”、"η","ο"P","q","r","s","t","u","v",\uz",",",".”、“:,,、“%,,“/,,、空格、TAB、退格、大写切换、符号切换、中英切换;英文大写模式.37个虚拟按键分别对应1”、1”、“(:”、“0”、1”、叩”、“6”、“!1”、“1”、“6”、“1(”、“1/’、1”、"N"O"P"Q"R"S"T"U"V"W"X"Y"Z.”、“:,,、“%,,“/,,、空格、TAB、退格、小写切换、符号切换、中英切换;符号模式.37个虚拟按键分别对应“、、“!“(,,、“)”、“[,’“],’“〈,’“〉,’“{,,“},’“/,,“+,’“_,,“_,’“■,’“,’“,’“,’“,’“I,,“\,’弓I号、双引号、“ftp://”、“http://”、空格、TAB、退格、退出;拼音模式.37个虚拟按键分别对应“&”、“13”、“。”、“(1”、?”、“^”、“11”、“1”、“」”、“1^、“1”、“111”、"η","ο","P","q","r","s","t","u"v","w","x","y","z",",",".”、“:,,、“%,,“/,,、空格、TAB、退格、大写切换、符号切换、中英切换;.4)拼音处理逻辑拼音处理逻辑主要是对拼音串的切分处理,而切分过程又分为首次切分和切分纠正两个步骤;首先建立一张包含全部汉字拼音的表,将输入的拼音串按照最大匹配原则,进行首次切分;此处使用的拼音表为:{//I”//I”//1.”//1.”//I”//I”//I”//I”//I”//1.”ba,bo,bai,bei,bao,ban,ben,bang,beng,bi,//1.////1.////1.////1.////1.////I////.////////////.//bie,biao,bian,bin,bing,bu,ci,ca,ce,cai,//////////////////////////////////.////////////cao,cou,can,cen,cang,ceng,cu,cuo,cui,cuan,cun,cong////-t.////I////I////1.////I////I////I////I////I////I////I//,chi,cha,che,chai,chao,chou,chan,chen,chang,cheng,chu,-//I////I.////1.////I////I////I////I////I////-t////I.////-t.////chuo,chuai,chui,chuan,chuang,chun,chong,da,de,del,dai,I////I////I////I////I////1.////1.////I.////I.////I.////I.////I////Idao,dou,dan,dang,deng,di,die,diao,diu,dian,ding,du,du////1.////I////I////I////(-.////(-.////(-////(-.////(-.////(-.////(-.////(-.//0,dui,duan,dun,dong,ta,to,tei,tou,tan,ten,tang,teng,//(-.////////////.////.////////////////////////////////////fu,ga,ge,gai,gei,gao,gou,gan,gen,gang,geng,gu,gua,////.////.////////////////////I////I////1.////1.////I////Iguo,guaI,gui,guan,gun,guang,gong,ha,he,hai,hei,hao,ho////I////I////I////I////I////I////I////1.////1.////I////I////Iu,han,hen,hang,heng,hu,hua,huo,huai,hui,huan,hun,huan////I////////////////////////////////////.////.g,hong,JI,Jia,Jie,jiao,Jiu,Jian,jm,jmg,Jiang,ju,jue////.////.////////I////I////1.////I////I////I////I////I////I//,juan,jun,j1ng,ka,ke,kai,kao,kou,kan,ken,kang,keng,//1////1////1////i.////1.////1//////1//////-1////-1////-1.////-1ku,kua,kuo,kuai,kui,kuan,kun,kuang,kong,_L&,_Le,_L&i,_Le.////-1////-1////-1////-1////-1.////I.////I.////I.////I.////I.////I.1,丄,丄an,lrnig,丄eng,丄I,Ji,丄ie,丄ι&ο,丄iu,Ιι&η,丄in,丄l&ng////-1.////-1////-1////-1////-1////-1////-1////-1////-1////////////////.//,丄ing,丄ou,丄u,丄Uo,Iimn,丄un,long,_Lv,丄ue,ma,mo,me,mai//.////////////////////////////.////.////.////////.////,meI,mao,mou,man,men,mang,meng,mi,mie,miao,miu,mian,.////.////////////////.////.//////////////////////////mm,ming,mu,na,ne,nai,nei,nao,nou,nan,nen,nang,neng,//.////.////.////////.////////.//////////////////////ni,me,mao,mu,man,run,mang,rung,nu,nuo,nuan,nong,//////////////////.////.////////////////////////////.////nv,nue,pa,po,pai,pel,pao,pou,pan,pen,pang,peng,pi,.////.////////////////////.////.////////////////////.pie,piao,pian,pin,ping,pu,qi,qia,qie,qiao,qiu,qian,qi////.////////////////////////.//////////////////////n,qiang,qing,qu,que,quan,qun,q1ng,ri,re,rao,rou,ran//////////////////////.////////////////.////////////.,ren,rang,reng,ru,ruo,rui,ruan,run,rong,si,sa,se,sai////////////////////////////////////.//////////////,san,sao,sou,sen,sang,seng,su,suo,sui,suan,sun,song,////I////I.////1.////I////I////I////I////I////I////shi,sha,she,shai,shei,shao,shou,shan,shen,shang,sheng,I////I////I////I.////1.////I////I////I////,////,////,.////,shu,shua,shuo,shuai,shui,shuan,shun,shuang,ta,te,tai,ta””,////,””,////,λ?//j.////j.////j.////j.””.////.””.ο,tou,tan,tang,teng,ti,tie,tiao,tian,ting,tu,tuan,tuo////,.////,////,////////////////.////.////////////////////.,tui,tun,tong,wu,wa,wo,wai,wei,wan,wen,wang,weng,xi,xia,xie,xiao,xiu,xian,xm,xiang,xmg,xu,xue,xuan,xun,x1ng,yi,ya,yo,ye,yai,yao,you,yan,yin,yang,ymg,yu////////////////////////////////////////.////////////,yue,yuan,yun,yong,yu,yue,yuan,yun,yong,zi,za,ze,za.////////.////////////////////////////////.//////////i,zao,zei,zou,zan,zen,zang,zeng,zu,zuo,zui,zun,zuan,”////-t.////I////I////1.////I////I////I////I////I////I////zong,zhi,zha,zhe,zhai,zhao,zhou,zhan,zhen,zhang,zheng,I////I////I////1.////I////I////I////I////I////////////.zhu,zhua,zhuo,zhuai,zhuang,zhui,zhuan,zhun,zhong,a,e,ei////.////.//////////////////////////////////////,ai,ei,ao,o,ou,an,en,ang,eng,er,,};第二步是对首次切分后的拼音串进行纠错,确保拼音切分的准确性,考虑如下情况,“半个”的拼音为“bange”,经第一步按最大匹配原则切分后,拼音串被切分为“bange”,明显与输入的意图不符;此时就需要建立一张纠错表,在拼音处理逻辑中对此类错误进行纠正;5)词库查询逻辑a.词库采用SQlite数据库方式实现,包含16个数据表table01_tablel6,其中tableOl对应单个汉字的字库,table02对应2个汉字词库,table03对应3个汉字词库,以此类推;b.table01_tablel6米用相同的表结构,每张表都包含以下的列,第I列为词汇本身phrase,第2列为词频freq,第3列为词汇中第一汉字的声母sl,第4列为词汇中第一个汉字的韵母yl,第5列为词汇中第二个汉字的声母s2,第6列为第二个汉字的韵母y2,以此类推;c.查询数据库时,根据切分后的拼音个数,决定查询表的数量,一个拼音只需查tableOl,2个拼音则需要查tableOl和table02,以此类推;例如,“半个”的拼音为“bange”,则有如下的查询方法全拼查询:查询“bange”Selectphrasefreqadjfrom(SELECTphrase,freqASfreqadjFROMtableOlWHEREsl=,b,ANDyl=,an’UN1NALLSELECTphrase,freqASfreqadjFROMtable02WHEREsl=’b’ANDyl=’an’ANDs2=,g,ANDy2=,e,)GROUPBYphraseORDERBYfreqadjDESCLIMIT30简拼查询:查询“bg”Selectphrasefreqadjfrom(SELECTphrase,freqASfreqadjFROMtableOlWHEREsl=’b’UN1NALLSELECTphrase,freqASfreqadjFROMtable02WHEREsl=’b’ANDs2=’g’)GROUPBYphraseORDERBYfreqadjDESCLIMIT30词汇在前:调整词频系数Selectphrasefreqadjfrom(SELECTphrase,freq*1.0ASfreqadjFROMtableOlWHEREsl=,b,ANDyl=,an’UN1NALLSELECTphrase,freq*2.0ASfreqadjFROMtable02WHEREsl=’b’ANDyl=,an,ANDs2=,g,ANDy2=,e,)GROUPBYphraseORDERBYfreqadjDESCLIMIT30单字在前:调整词频系数Selectphrasefreqadjfrom(SELECTphrase,freq*2.0ASfreqadjFROMtableOlWHEREsl=,b,ANDyl=,an’UN1NALLSELECTphrase,freq*1.0ASfreqadjFROMtable02WHEREsl=’b’ANDyl=,an,ANDs2=,g,ANDy2=,e,)GROUPBYphraseORDERBYfreqadjDESCLIMIT306)导出为动态链接库将上述图形交互界面、拼音处理逻辑、词库查询逻辑转化为代码实现,使用嵌入式QT的编译器编译为动态链接库文件。【文档编号】G06F17/30GK104267829SQ201410547067【公开日】2015年1月7日申请日期:2014年10月16日优先权日:2014年10月16日【发明者】向俊光,李传花,于秋粉申请人:浪潮软件集团有限公司