對(duì)滑動(dòng)輸入軌跡進(jìn)行識(shí)別的系統(tǒng)及其識(shí)別方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及滑動(dòng)輸入技術(shù)領(lǐng)域,具體涉及一種對(duì)滑動(dòng)輸入軌跡進(jìn)行識(shí)別的系統(tǒng)及其識(shí)別方法。
【背景技術(shù)】
[0002]隨著電子設(shè)備的流行,越來(lái)越多的技術(shù)方案被提出來(lái)用于解決觸摸屏上基于軟鍵盤(pán)的輸入問(wèn)題。傳統(tǒng)的輸入法通常在觸摸屏幕上模擬出一個(gè)完整的鍵盤(pán),讓用戶(hù)通過(guò)按壓屏幕上的虛擬鍵位完成輸入。但是由于屏幕大小的限制,虛擬按鍵所占據(jù)的區(qū)域十分有限,用戶(hù)輸入的時(shí)候容易發(fā)生誤觸,同時(shí)這種輸入方式需要用戶(hù)依次準(zhǔn)確的點(diǎn)擊單詞的每一個(gè)字母,用戶(hù)輸入的速度受到限制。后來(lái)發(fā)展出的另一種輸入方法是讓用戶(hù)在觸摸屏上使用手指依次劃過(guò)單詞的每一個(gè)字母所在的位置,這一過(guò)程中用戶(hù)的手指不需要離開(kāi)屏幕,根據(jù)所使用的算法的不同,也不需要用戶(hù)精確的定位到每一個(gè)字母,所以可以極大的提高用戶(hù)的輸入速度,改善了用戶(hù)的輸入體驗(yàn)。
[0003]現(xiàn)有的滑動(dòng)輸入法的思想通常繼承于手勢(shì)識(shí)別算法,記錄用戶(hù)滑動(dòng)的軌跡,并和單詞庫(kù)中的標(biāo)準(zhǔn)軌跡進(jìn)行相似度的對(duì)比,從而選出相似度最高的結(jié)果。這種方法的缺點(diǎn)在于限制了用戶(hù)滑動(dòng)的方式,比如對(duì)于單詞“right”,用戶(hù)可以按照最短的軌跡,如圖1所示,劃出單詞,也可能由于某些原因,按照?qǐng)D2的方式劃出單詞,如果基于軌跡相似度來(lái)判斷,第二種方式的相似度是非常低的,從而無(wú)法給出正確的預(yù)測(cè)。其次,如果用戶(hù)在輸入較長(zhǎng)的單詞時(shí),有可能會(huì)漏掉個(gè)別字母,從而導(dǎo)致軌跡變形,預(yù)測(cè)失敗。最后軌跡相似度的比對(duì)會(huì)消耗較大的計(jì)算量,其實(shí)現(xiàn)方法也非常復(fù)雜,需要做抽樣和坐標(biāo)變化等預(yù)處理操作。
【發(fā)明內(nèi)容】
[0004]為解決上述技術(shù)問(wèn)題,本發(fā)明提供了一種更快速,自由度更高,更易于實(shí)現(xiàn)的對(duì)滑動(dòng)輸入軌跡進(jìn)行識(shí)別的系統(tǒng)及其識(shí)別方法。
[0005]本發(fā)明一種對(duì)滑動(dòng)輸入軌跡進(jìn)行識(shí)別的系統(tǒng),其技術(shù)方案是:包括
[0006]輸入模塊:用于向用戶(hù)提供虛擬鍵位的坐標(biāo)信息,輔助用戶(hù)完成輸入和滑動(dòng)操作;
[0007]滑動(dòng)軌跡記錄模塊:用于采集輸入模塊內(nèi)的滑動(dòng)軌跡,并對(duì)滑動(dòng)軌跡進(jìn)行預(yù)處理,將軌跡序列轉(zhuǎn)換為鍵位序列發(fā)送至搜索模塊;
[0008]搜索模塊:根據(jù)輸入的鍵位序列,從詞庫(kù)存儲(chǔ)模塊內(nèi)搜索有可能為用戶(hù)輸入目標(biāo)的單詞,生成單詞集合,并將單詞集合發(fā)送給排序模塊;
[0009]排序模塊:綜合滑動(dòng)軌跡的匹配得分和詞頻得分,對(duì)單詞集合內(nèi)的單詞進(jìn)行排序,并將多余單詞刪除,將排序后新形成的單詞集合發(fā)送給輸出模塊;
[0010]輸出模塊:用于將接收到的排序后的單詞集合顯示輸出;
[0011]詞庫(kù)存儲(chǔ)模塊:用于存儲(chǔ)常用單詞。
[0012]本發(fā)明一種對(duì)滑動(dòng)輸入軌跡進(jìn)行識(shí)別的方法,其技術(shù)方案是,包括以下步驟,
[0013]步驟S1:采集用戶(hù)滑動(dòng)輸入的軌跡,生成軌跡序列;
[0014]步驟S2:將軌跡序列轉(zhuǎn)化為鍵位序列,同時(shí)記錄軌跡與各個(gè)鍵位相交的坐標(biāo)以及相交點(diǎn)與相鄰鍵位相交點(diǎn)連線夾角;
[0015]步驟S3:根據(jù)鍵位序列從詞庫(kù)中搜索有可能為用戶(hù)輸入目標(biāo)的單詞,生成單詞集合,并依據(jù)評(píng)分標(biāo)準(zhǔn)對(duì)單詞集合內(nèi)的各個(gè)單詞進(jìn)行評(píng)分;
[0016]步驟S4:依據(jù)各個(gè)單詞的評(píng)分高低對(duì)單詞集合內(nèi)的各個(gè)單詞進(jìn)行排序,并將多余單詞刪除;
[0017]步驟S5:將排序后的單詞集合顯示輸出;
[0018]進(jìn)一步的,所述步驟S2中,滑動(dòng)軌跡記錄模塊將軌跡序列與輸入模塊上的鍵盤(pán)布局進(jìn)行對(duì)照,依據(jù)軌跡與鍵盤(pán)上不同鍵位相交的順序?qū)④壽E序列轉(zhuǎn)換成由各個(gè)鍵位組成的鍵位序列;
[0019]記錄并存儲(chǔ)軌跡與鍵位序列中各個(gè)鍵位的相交坐標(biāo)、鍵位序列中各個(gè)鍵位中心點(diǎn)坐標(biāo)、相交點(diǎn)與相鄰鍵位相交點(diǎn)連線夾角;
[0020]記錄軌跡滑動(dòng)時(shí)手指停留在各個(gè)鍵位上的時(shí)長(zhǎng),并與鍵位序列中每個(gè)鍵位停留的平均時(shí)長(zhǎng)進(jìn)行比對(duì),若某個(gè)鍵位停留時(shí)長(zhǎng)與鍵位序列中每個(gè)鍵位停留的平均時(shí)長(zhǎng)的比值超過(guò)閾值,則認(rèn)為該輸入鍵位為重疊鍵位。
[0021]進(jìn)一步的,所述步驟S3中,搜索模塊對(duì)詞庫(kù)存儲(chǔ)模塊內(nèi)的單詞查找樹(shù)進(jìn)行多輪遍歷,遍歷過(guò)程中將匹配到的單詞進(jìn)行存儲(chǔ);
[0022]所述遍歷過(guò)程根據(jù)鍵位序列中的鍵位順序依次進(jìn)行,遍歷過(guò)程中將每輪遍歷得到的所有中間狀態(tài)進(jìn)行存儲(chǔ),所述中間狀態(tài)內(nèi)保存的信息包括本輪遍歷起始節(jié)點(diǎn)和待匹配鍵位,所述遍歷過(guò)程如下:
[0023]步驟a,對(duì)所有中間狀態(tài)進(jìn)行匹配操作和刪除操作;
[0024]匹配操作,以起始節(jié)點(diǎn)為起點(diǎn),待匹配鍵位為遍歷目標(biāo),在起始節(jié)點(diǎn)的子節(jié)點(diǎn)中尋找可與待匹配鍵位匹配的目標(biāo)子節(jié)點(diǎn),若找到可與待匹配鍵位匹配的目標(biāo)子節(jié)點(diǎn),則生成新中間狀態(tài)并將原中間狀態(tài)刪除,更新后的中間狀態(tài)內(nèi)包括目標(biāo)子節(jié)點(diǎn)和新的待匹配鍵位;
[0025]刪除操作,從鍵位序列中與起始節(jié)點(diǎn)對(duì)應(yīng)的鍵位開(kāi)始依次刪除i個(gè)鍵位,i依次取
1、2、3......n,依次以第i+Ι個(gè)鍵位為遍歷目標(biāo),在起始節(jié)點(diǎn)的子節(jié)點(diǎn)中尋找可與之匹配的目標(biāo)子節(jié)點(diǎn),生成新中間狀態(tài)并將原中間狀態(tài)刪除,更新后的中間狀態(tài)數(shù)量與可匹配目標(biāo)子節(jié)點(diǎn)數(shù)量相對(duì)應(yīng),每個(gè)更新后的中間狀態(tài)內(nèi)包括一個(gè)可匹配目標(biāo)子節(jié)點(diǎn)和新的待匹配鍵位,所述新的待匹配鍵位為可匹配目標(biāo)子節(jié)點(diǎn)對(duì)應(yīng)鍵位的下一個(gè)鍵位;
[0026]步驟b,對(duì)所有新的中間狀態(tài)進(jìn)行新一輪的匹配與刪除操作;
[0027]重復(fù)步驟b,直至鍵位序列中所有鍵位遍歷完成;
[0028]所述遍歷過(guò)程中,匹配目標(biāo)節(jié)點(diǎn)后可形成一個(gè)單詞時(shí),則將該單詞進(jìn)行存儲(chǔ)。
[0029]進(jìn)一步的,所述步驟S3中,搜索模塊對(duì)詞庫(kù)存儲(chǔ)模塊內(nèi)的單詞查找樹(shù)進(jìn)行多輪遍歷,遍歷過(guò)程中將匹配到的單詞進(jìn)行存儲(chǔ);
[0030]所述遍歷過(guò)程根據(jù)鍵位序列中的鍵位順序依次進(jìn)行,遍歷過(guò)程中將每輪遍歷得到的所有中間狀態(tài)進(jìn)行存儲(chǔ),所述中間狀態(tài)內(nèi)保存的信息包括本輪遍歷起始節(jié)點(diǎn)和待匹配鍵位,所述遍歷過(guò)程如下:
[0031]步驟a,對(duì)所有中間狀態(tài)進(jìn)行匹配操作和刪除操作;
[0032]匹配操作,以起始節(jié)點(diǎn)為起點(diǎn),待匹配鍵位為遍歷目標(biāo),在起始節(jié)點(diǎn)的子節(jié)點(diǎn)中尋找可與待匹配鍵位或鍵盤(pán)上與待匹配鍵位相鄰其它鍵位匹配的目標(biāo)子節(jié)點(diǎn),若找到可與待匹配鍵位以及鍵盤(pán)上與其相鄰其它鍵位匹配的目標(biāo)子節(jié)點(diǎn),則生成新中間狀態(tài)并將原中間狀態(tài)刪除,更新后的中間狀態(tài)內(nèi)包括目標(biāo)子節(jié)點(diǎn)和新的待匹配鍵位;
[0033]刪除操作,從鍵位序列中與起始節(jié)點(diǎn)對(duì)應(yīng)的鍵位開(kāi)始依次刪除i個(gè)鍵位,i依次取
1、2、3......n,依次以第i+Ι個(gè)鍵位為遍歷目標(biāo),在起始節(jié)點(diǎn)的子節(jié)點(diǎn)中尋找可與之匹配或可與其鍵盤(pán)上相鄰鍵位匹配的目標(biāo)子節(jié)點(diǎn),生成新中間狀態(tài)并將原中間狀態(tài)刪除,更新后的中間狀態(tài)數(shù)量與可匹配目標(biāo)子節(jié)點(diǎn)數(shù)量相對(duì)應(yīng),每個(gè)更新后的中間狀態(tài)內(nèi)包括一個(gè)可匹配目標(biāo)子節(jié)點(diǎn)和新的待匹配鍵位,所述新的待匹配鍵位為可匹配目標(biāo)子節(jié)點(diǎn)對(duì)應(yīng)鍵位的下一個(gè)鍵位;
[0034]步驟b,對(duì)所有新的中間狀態(tài)進(jìn)行新一輪的匹配與刪除操作;
[0035]重復(fù)步驟b,直至鍵位序列中所有鍵位遍歷完成;
[0036]所述遍歷過(guò)程中,匹配目標(biāo)節(jié)點(diǎn)后可形成一個(gè)單詞時(shí),則將該單詞進(jìn)行存儲(chǔ)。
[0037]進(jìn)一步的,所述匹配操作過(guò)程中,若起始節(jié)點(diǎn)的子節(jié)點(diǎn)中存在與起始節(jié)點(diǎn)相同的節(jié)點(diǎn),則將該節(jié)點(diǎn)自動(dòng)匹配,在該節(jié)點(diǎn)的子節(jié)點(diǎn)中尋找可與待匹配鍵位匹配的目標(biāo)子節(jié)點(diǎn),同時(shí)以起始節(jié)點(diǎn)為起點(diǎn),在起始節(jié)點(diǎn)的子節(jié)點(diǎn)中尋找可與待匹配鍵位匹配的目標(biāo)子節(jié)點(diǎn)。
[0038]進(jìn)一步的,所述每輪遍歷均對(duì)中間狀態(tài)進(jìn)行評(píng)分,所述評(píng)分過(guò)程考慮匹配得分與懲罰得分,所述匹配得分與懲罰得分綜合運(yùn)算后生成該中間狀態(tài)的狀態(tài)得分,每次遍歷的中間狀態(tài)得分進(jìn)行疊加形成遍歷所得的每個(gè)單詞的得分,將最終生成的單詞得分進(jìn)行存儲(chǔ);
[0039]所述匹配得分用于匹配操作,根據(jù)軌跡與鍵位序列中各個(gè)鍵位的相交坐標(biāo)、鍵位序列中各個(gè)鍵位中