專利名稱:一種中文輸入法簡拼實現(xiàn)方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機技術(shù),特別涉及一種中文輸入法簡拼實現(xiàn)方法和系統(tǒng)。
背景技術(shù):
電腦使用者要將漢字輸入到電腦,就要使用中文輸入軟件。目前,中文輸入軟件可分為鍵盤輸入和非鍵盤輸入。
1)鍵盤中文輸入軟件,就是利用鍵盤,根據(jù)一定的編碼規(guī)則來輸入漢字的一種方法。目前,漢字編碼方案已經(jīng)有數(shù)百種,其中在電腦上已經(jīng)運行的就有幾十種,漢字輸入的編碼方法,基本上都是采用將音、形、義與特定的鍵相聯(lián)系,再根據(jù)不同漢字進行組合來完成漢字的輸入的。
2)非鍵盤中文輸入軟件,包括手寫輸入軟件、語音輸入軟件、OCR輸入軟件等。
目前比較成熟、使用最廣的就是基于鍵盤的中文輸入軟件。在智能簡拼輸入法中,用戶可以通過輸入一個音節(jié)的任何一個前綴(前提是這個前綴本身不是完整的音節(jié))來達到輸入漢字的目的。如輸入“zhog”,可以得到如圖1所示的結(jié)果。在該輸入法中,輸入法軟件內(nèi)部需要維護一個簡拼串(全拼串中的每個音節(jié)的首字母組成的字符串)到全拼串的映射表(如圖2所示)和全拼串到其對應的候選詞的映射表(如圖3所示)??梢钥闯觯饕捻樞蚨际前凑兆址畯男〉酱蟮捻樞颍瑢τ谶@種已經(jīng)排序的數(shù)組,查找的算法(例如折半查找)都是對數(shù)時間復雜度。
這種方案主要有兩個缺點①內(nèi)存占用大,需要維護兩個表一個是簡拼串到全拼串的映射表,另一個是全拼串到候選詞的映射表;②簡拼擴展(包括查找簡拼到全拼的映射表和全拼到候選詞的映射表)的速度比較慢。查表的過程包括三個步驟,一是在簡拼到全拼映射表中找出簡拼串對應的全部全拼串,二是把輸入拼音串和每個找出的全拼串進行比較,找出其中匹配的全拼串,三是到拼音詞典中找出每個全拼串對應的候選詞。假設簡拼到全拼映射表的索引數(shù)目為N,全拼到候選詞映射表的索引數(shù)目為M,那么平均一個簡拼串對應的全拼串數(shù)目為M/N,第一個步驟花費的時間為logN,第二個步驟花費的時間為M/N,第三個步驟花費的時間為(M/N)logM。則這三個步驟一共花費的時間為logN+M/N+(M/N)logM。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種中文輸入法簡拼實現(xiàn)方法和系統(tǒng),可以克服現(xiàn)有技術(shù)的缺陷。
本發(fā)明采用的技術(shù)方案是一種中文輸入法簡拼實現(xiàn)方法,對輸入的拼音串進行音節(jié)劃分后包括以下步驟A1,在拼音詞典中找到與所述拼音串的每個音節(jié)首字母都相同的結(jié)點;A2,以此結(jié)點為中心在拼音詞典中向上、向下分別查找,找出與所述拼音串的每個音節(jié)相匹配的全拼串;A3,將所述匹配的全拼串對應的候選詞按照詞頻從大到小進行排序。
進一步的,所述拼音詞典中存儲有全拼串到對應候選詞的映射表;所述全拼串按照全拼串中每個音節(jié)首字母所組成的字符串從小到大排序;當每個音節(jié)首字母所組成的字符串相同時,按照全拼串從小到大排序。
作為優(yōu)選,步驟A2中,當向上或向下找到的全拼串的音節(jié)首字母與所述拼音串的音節(jié)首字母不完全相同時停止向上或向下查找,執(zhí)行步驟A3。
本發(fā)明一種中文輸入法簡拼實現(xiàn)方法進一步包括步驟A4,將所述排序好的候選詞顯示在候選詞窗口中。
本發(fā)明還公開了一種中文輸入法簡拼實現(xiàn)系統(tǒng),包括拼音詞典和音節(jié)劃分模塊,所述拼音詞典中存儲有全拼串到對應候選詞的映射表;所述全拼串按照全拼串中每個音節(jié)首字母所組成的字符串從小到大排序;當每個音節(jié)首字母所組成的字符串相同時,按照全拼串從小到大排序。
進一步的,一種中文輸入法簡拼實現(xiàn)系統(tǒng)還包括查找模塊和排序模塊;所述音節(jié)劃分模塊用于對輸入的拼音串進行音節(jié)劃分后輸出到所述查找模塊;所述查找模塊在接收到所述拼音串后執(zhí)行以下步驟B1,獲得所述拼音串的音節(jié)首字母;B2,在拼音詞典中找到與所述音節(jié)首字母都相同的全拼串作為結(jié)點;B3,以此結(jié)點為中心在拼音詞典中向上、向下分別查找,找出與所述拼音串的每個音節(jié)相匹配的全拼串發(fā)送到所述排序模塊。
進一步的,所述排序模塊用于從所述查找模塊接收全拼串,將所述全拼串對應的候選詞按照詞頻從大到小進行排序。
作為優(yōu)選,所述候選詞的詞頻信息存儲在所述拼音詞典中。
進一步的,還包括顯示模塊,用于將所述排序模塊輸出的候選詞顯示在候選詞窗口中。
作為優(yōu)選,步驟B3中,當向上或向下找到的全拼串的音節(jié)首字母與所述拼音串的音節(jié)首字母不完全相同時停止向上或向下查找。
本發(fā)明的有益效果在于(1)在中文輸入法系統(tǒng)中不再需要簡拼串到全拼串的映射表,減小了內(nèi)存的占用;(2)采用新的索引結(jié)點的排序規(guī)則,大大提高了簡拼擴展的速度。
圖1是在智能簡拼輸入法中輸入“zhog”后得到的結(jié)果示意圖;圖2是現(xiàn)有輸入法中簡拼串到全拼串的映射表;圖3是現(xiàn)有輸入法中全拼串到其對應的候選詞的映射表;圖4是本發(fā)明中文輸入法簡拼實現(xiàn)系統(tǒng)的結(jié)構(gòu)示意圖;圖5是本發(fā)明中拼音詞典的數(shù)據(jù)結(jié)構(gòu)圖;圖6是本發(fā)明中文輸入法簡拼實現(xiàn)方法的流程圖。
具體實施例方式
下面根據(jù)附圖和具體實施例對本發(fā)明作進一步闡述。
如圖4所示,一種中文輸入法簡拼實現(xiàn)系統(tǒng)10包括音節(jié)劃分模塊101、查找模塊102、排序模塊104、顯示模塊105和拼音詞典103。
其中,拼音詞典103負責存儲拼音串到對應候選詞的映射表、候選詞的詞頻信息等數(shù)據(jù)。本發(fā)明拼音詞典103相對現(xiàn)有拼音詞典來說,少了簡拼串到全拼串的映射表,只存儲有全拼串到對應候選詞的映射表,且采用新的數(shù)據(jù)結(jié)構(gòu),減小了內(nèi)存的占用。該數(shù)據(jù)結(jié)構(gòu)中全拼串的排序遵循以下兩條準則1.首先按照全拼串中的每個音節(jié)首字母所組成的字符串從小到大進行排序。2.當全拼串的每個音節(jié)首字母所組成的字符串相同時,按照全拼串從小到大排序。即首字母相同時,按照第一個音節(jié)第二個字母在字母表中的排序順序排序,第二個字母也相同時按照第三個字母排序,當?shù)谝粋€音節(jié)完全相同時按照第二個音節(jié)第二個字母排序,依次類推。
圖5所示的索引就是按照以上兩條準則進行排序的,圖中左側(cè)的一列“gydg”“gydg”“gydgs”等并不包含在數(shù)據(jù)結(jié)構(gòu)中,只是為了說明本數(shù)據(jù)結(jié)構(gòu)的排序方法。這種結(jié)構(gòu)中的一個優(yōu)點是所有首字母相同的全拼串在數(shù)組中是聚在一起的,它們在數(shù)組中的位置是連續(xù)的。這樣就可先在此數(shù)組中找到一個所有音節(jié)首字母都與輸入拼音串相匹配的結(jié)點后,通過向其相鄰的結(jié)點擴展就可以找到簡拼串所對應的全部全拼串。
音節(jié)劃分模塊101負責接收用戶輸入設備發(fā)送過來的拼音串,將該拼音串按照音節(jié)進行劃分,然后發(fā)送到查找模塊102。其中,音節(jié)劃分的算法可以采用動態(tài)規(guī)劃算法。
查找模塊102負責獲得與用戶輸入的拼音串相匹配的全部全拼串,再發(fā)送到排序模塊104。獲得匹配的全部全拼串的方法是首先獲得音節(jié)劃分后的拼音串的音節(jié)首字母,然后在拼音詞典103中找到與上述音節(jié)首字母都相同的全拼串作為中心結(jié)點,再以此結(jié)點為中心在拼音詞典103中向上、向下分別查找,找出與用戶輸入的拼音串的每個音節(jié)相匹配的全拼串。當向上或向下找到的全拼串的音節(jié)首字母與用戶輸入的拼音串的音節(jié)首字母不完全相同時才停止向上或向下查找。其中,所述匹配是指輸入拼音串的音節(jié)與全拼串的音節(jié)完全相同,或者輸入拼音串的音節(jié)不完整,但其音節(jié)是全拼串音節(jié)的前綴。
排序模塊104負責根據(jù)接收到的全拼串從拼音詞典103中獲得對應的候選詞,再根據(jù)這些候選詞的詞頻從大到小進行排序,然后發(fā)送到顯示模塊105。
顯示模塊105負責將接收到的候選詞和用戶輸入的拼音串(音節(jié)劃分后的)一起在候選詞窗口中顯示給用戶,顯示效果與圖1所示相同。
下面以圖5所示數(shù)據(jù)結(jié)構(gòu)為例說明本發(fā)明中文輸入法簡拼實現(xiàn)方法的流程(如圖6所示)步驟S1,用戶使用用戶輸入設備輸入拼音串“gonydiah”。
步驟S2,音節(jié)劃分模塊101采用動態(tài)規(guī)劃算法進行音節(jié)劃分,結(jié)果為“gon’y’dia’h”。
步驟S3,查找模塊102在拼音詞典103中找到一個與輸入拼音串(音節(jié)劃分后)“gon’y’dia’h”每個音節(jié)首字母都相同的結(jié)點,假設找到了結(jié)點“gong’ye’dian’han”。
步驟S4,查找模塊102以結(jié)點“gong’ye’dian’han”為中心向上向下分別進行擴展,把輸入拼音串和每個找出的全拼串比較,找出其中匹配的全拼串,直到找到一個全拼串的音節(jié)首字母與輸入拼音串的音節(jié)首字母不完全相同為止。
結(jié)點“gong’ye’dian’han”與輸入拼音串“gon’y’dia’h”音節(jié)首字母相同并且匹配。向上擴展到“gan′ying′dian′he”結(jié)點,此全拼串與輸入拼音串“gon’y’dia’h”比較,不匹配,但音節(jié)首字母相同。繼續(xù)向上擴展到結(jié)點“guang′yin′de′gu′shi”,不匹配而且音節(jié)首字母不相同,停止向上匹配。向下擴展到“gong′yong′dian′hua”結(jié)點,此全拼串與輸入拼音串“gon’y’dia’h”比較,匹配,且音節(jié)首字母相同。繼續(xù)向下擴展到結(jié)點“gao′ya′dian′ji”,不匹配而且音節(jié)首字母不相同,停止向下匹配。將結(jié)點“gong’ye’dian’han”和“gong′yong′dian′hua”發(fā)送到排序模塊104。
步驟S5,把每個匹配的全拼串對應的候選詞按照詞頻從大到小進行排序。根據(jù)上個步驟,匹配的全拼串包括“gong’ye’dian’han”和“gong′yong′dian′hua”。它們對應的候選詞分別為“工業(yè)電焊”和“公用電話”。假設“公用電話”的詞頻大于“工業(yè)電焊”的詞頻,則排序結(jié)果為“公用電話、工業(yè)電焊”,發(fā)送到顯示模塊105。
步驟S6,顯示模塊105將候選詞和用戶輸入拼音串顯示在候選詞窗口中。
下面討論一下本發(fā)明中簡拼擴展的時間復雜度。假設簡拼到全拼映射(此時是全拼串中每個音節(jié)首字母所組成的字符串到全拼串的映射)的數(shù)目為N,全拼到候選詞映射表的索引數(shù)目為M,那么平均一個簡拼串對應的全拼串數(shù)目為M/N。本發(fā)明中的查詞表過程包括兩個步驟,一是在拼音詞典103中找到一個與輸入拼音串每個音節(jié)首字母都相同的結(jié)點,時間為logM。二是以此結(jié)點為中心向上向下分別進行擴展,把輸入拼音串和每個找出的全拼串比較,找出其中匹配的全拼串,時間為M/N。這兩個步驟一共花費的時間為logM+M/N,(M>N)比現(xiàn)有技術(shù)中花費的時間logN+M/N+(M/N)logM要短。
以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的權(quán)利要求范圍之內(nèi)。
權(quán)利要求
1.中文輸入法簡拼實現(xiàn)方法,其特征在于,對輸入的拼音串進行音節(jié)劃分后包括以下步驟A1,在拼音詞典中找到與所述拼音串的每個音節(jié)首字母都相同的結(jié)點;A2,以此結(jié)點為中心在拼音詞典中向上、向下分別查找,找出與所述拼音串的每個音節(jié)相匹配的全拼串;A3,將所述匹配的全拼串對應的候選詞按照詞頻從大到小進行排序。
2.根據(jù)權(quán)利要求1所述的中文輸入法簡拼實現(xiàn)方法,其特征在于所述拼音詞典中存儲有全拼串到對應候選詞的映射表;所述全拼串按照全拼串中每個音節(jié)首字母所組成的字符串從小到大排序;當每個音節(jié)首字母所組成的字符串相同時,按照全拼串從小到大排序。
3.根據(jù)權(quán)利要求1或2所述的中文輸入法簡拼實現(xiàn)方法,其特征在于步驟A2中,當向上或向下找到的全拼串的音節(jié)首字母與所述拼音串的音節(jié)首字母不完全相同時停止向上或向下查找,執(zhí)行步驟A3。
4.根據(jù)權(quán)利要求1或2所述的中文輸入法簡拼實現(xiàn)方法,其特征在于,進一步包括步驟A4,將所述排序好的候選詞顯示在候選詞窗口中。
5.中文輸入法簡拼實現(xiàn)系統(tǒng),包括拼音詞典和音節(jié)劃分模塊,其特征在于所述拼音詞典中存儲有全拼串到對應候選詞的映射表;所述全拼串按照全拼串中每個音節(jié)首字母所組成的字符串從小到大排序;當每個音節(jié)首字母所組成的字符串相同時,按照全拼串從小到大排序。
6.根據(jù)權(quán)利要求5所述的中文輸入法簡拼實現(xiàn)系統(tǒng),其特征在于還包括查找模塊和排序模塊;所述音節(jié)劃分模塊用于對輸入的拼音串進行音節(jié)劃分后輸出到所述查找模塊;所述查找模塊在接收到所述拼音串后執(zhí)行以下步驟B1,獲得所述拼音串的音節(jié)首字母;B2,在拼音詞典中找到與所述音節(jié)首字母都相同的全拼串作為結(jié)點;B3,以此結(jié)點為中心在拼音詞典中向上、向下分別查找,找出與所述拼音串的每個音節(jié)相匹配的全拼串發(fā)送到所述排序模塊。
7.根據(jù)權(quán)利要求6所述的中文輸入法簡拼實現(xiàn)系統(tǒng),其特征在于所述排序模塊用于從所述查找模塊接收全拼串,將所述全拼串對應的候選詞按照詞頻從大到小進行排序。
8.根據(jù)權(quán)利要求7所述的中文輸入法簡拼實現(xiàn)系統(tǒng),其特征在于所述候選詞的詞頻信息存儲在所述拼音詞典中。
9.根據(jù)權(quán)利要求6所述的中文輸入法簡拼實現(xiàn)系統(tǒng),其特征在于還包括顯示模塊,用于將所述排序模塊輸出的候選詞顯示在候選詞窗口中。
10.根據(jù)權(quán)利要求6所述的中文輸入法簡拼實現(xiàn)系統(tǒng),其特征在于步驟B3中,當向上或向下找到的全拼串的音節(jié)首字母與所述拼音串的音節(jié)首字母不完全相同時停止向上或向下查找。
全文摘要
本發(fā)明公開了一種中文輸入法簡拼實現(xiàn)方法,對輸入的拼音串進行音節(jié)劃分后包括以下步驟A1,在拼音詞典中找到與所述拼音串的每個音節(jié)首字母都相同的結(jié)點;A2,以此結(jié)點為中心在拼音詞典中向上、向下分別查找,找出與所述拼音串的每個音節(jié)相匹配的全拼串;A3,將所述匹配的全拼串對應的候選詞按照詞頻從大到小進行排序。本發(fā)明公開了一種中文輸入法簡拼實現(xiàn)系統(tǒng)。本發(fā)明的有益效果在于在中文輸入法系統(tǒng)中不再需要簡拼串到全拼串的映射表,減小了內(nèi)存的占用;采用新的索引結(jié)點的排序規(guī)則,大大提高了簡拼擴展的速度。
文檔編號G06F3/023GK101079060SQ20071007370
公開日2007年11月28日 申請日期2007年3月26日 優(yōu)先權(quán)日2007年3月26日
發(fā)明者張會鵬 申請人:騰訊科技(深圳)有限公司