專利名稱:動態(tài)拼音反饋的方法及裝置的制作方法
技術領域:
本發(fā)明屬于數字數據處理技術領域,尤其涉及一種動態(tài)拼音反饋的方法及裝置。
背景技術:
如今的軟件越來越重視用戶體驗,在導航領域也不例外。對一個導航軟件來說,其中很重要的一點就是能夠讓用戶快速而便捷的獲取自己感興趣的地點信息,為了實現這一目標,動態(tài)拼音反饋功能應運而生。動態(tài)拼音反饋是一種實現快速名稱檢索的方法,它能夠在用戶的輸入過程中對用戶進行引導,預防無效輸入。對于中文系統(tǒng)而言,該功能又可以分為簡拼動態(tài)反饋和全拼動態(tài)反饋。例如在簡拼動態(tài)反饋中,當獲取用戶輸入了第一個字符后,導航軟件會動態(tài)調整鍵盤表中各按鍵的狀態(tài),在鍵盤表上只激活接下來可能出現的字符,當用戶繼續(xù)輸入后,鍵盤表繼續(xù)動態(tài)更新。 然而,對于數據量比較大的電子地圖數據而言,對于簡拼動態(tài)反饋和雙拼動態(tài)反饋都需要遍歷大量的記錄才能獲取最終結果,也就是需要從存儲器中讀取大量記錄,I/o操作時間長,導致動態(tài)拼音反饋的處理時間增加。綜上所述,為了提高用戶體驗,既要讓用戶便捷的查找到想要的信息,又不能讓用戶等待過長時間。隨著我國經濟的不斷發(fā)展,電子地圖數據的內容也以非常快的速度在增長,為了適應這種數據量的高速增長,要求提供一種方法來優(yōu)化動態(tài)拼音反饋的效率。
發(fā)明內容
為了解決上述問題,本發(fā)明的目的是提供一種動態(tài)拼音反饋的方法及裝置,提高動態(tài)拼音反饋的響應速度,提升用戶體驗。為了達到上述目的,本發(fā)明提供一種動態(tài)拼音反饋的方法,包括步驟I、獲取用戶輸入的字符;步驟2、根據所述用戶輸入的字符,在拼音反饋樹的數據結構中進行遍歷查詢;步驟3、根據遍歷查詢的結果,獲取所述用戶輸入的字符的后續(xù)有效字符,并在鍵盤表上激活所述后續(xù)有效字符。優(yōu)選的,在執(zhí)行步驟I之前,所述方法還包括預先編譯所述拼音反饋樹的數據結構,所述拼音反饋樹的數據結構包括節(jié)點和樹干,其中所述節(jié)點用于表示字符,所述樹干用于逐步引導用戶進行字符的輸入,所述節(jié)點包括父節(jié)點和子節(jié)點,所述子節(jié)點代表繼所述父節(jié)點之后所有可能出現的字符,所述父節(jié)點和子節(jié)點通過所述樹干建立對應關系。優(yōu)選的,在編譯述完所述拼音反饋樹的數據結構后,所述方法還包括將所述拼音反饋樹的數據結構劃分成多個拼音反饋塊進行存儲,其中,所述拼音反饋塊用于存儲具有相同父節(jié)點的一組子節(jié)點,以及子節(jié)點的偏移地址,所述父節(jié)點所在的拼音反饋塊與子節(jié)點所在的拼音反饋塊之間通過所述子節(jié)點的偏移地址建立對應關系。
優(yōu)選的,所述拼音反饋塊中的內容包括字符信息的個數、以及至少一個字符信息,其中字符信息中的內容包括字符編碼、以及子節(jié)點的偏移地址。優(yōu)選的,所述步驟2包括遍歷所述用戶輸入的字符;獲取與所述用戶輸入的字符相關的拼音反饋塊;遍歷所述拼音反饋塊中的字符信息;若當前輸入的字符與所述字符信息匹配時,獲取所述拼音反饋塊中記錄的所述子節(jié)點的偏移地址;按照所述子節(jié)點的偏移地址,載入子節(jié)點所在的拼音反饋塊;
遍歷所述子節(jié)點的拼音反饋塊中的字符信息,得到遍歷查詢結果。優(yōu)選的,在執(zhí)行完所述步驟3之后,所述方法還包括步驟4、用戶輸入操作完成后,根據用戶輸入的字符串獲得與所述字符串對應的興趣點的名稱。7.根據權利要求I所述的方法,其特征在于,所述字符信息為拼音的首字母或者拼音的音節(jié)。為了達到上述目的,本發(fā)明還提供一種動態(tài)拼音反饋的裝置,包括獲取模塊,用于獲取用戶輸入的字符;查詢模塊,用于根據所述用戶輸入的字符,在拼音反饋樹的數據結構中進行遍歷查詢;顯示模塊,用于根據遍歷查詢的結果,獲取所述用戶輸入的字符的后續(xù)有效字符,并在鍵盤表上激活所述后續(xù)有效字符。優(yōu)選的,所述裝置還包括編譯模塊,用于預先編譯得到所述拼音反饋樹的數據結構,所述拼音反饋樹的數據結構包括節(jié)點和樹干,其中所述節(jié)點用于表示待輸入的字符,所述樹干用于逐步引導用戶進行字符的輸入,所述節(jié)點包括父節(jié)點和子節(jié)點,所述子節(jié)點代表了繼所述父節(jié)點之后所有可能出現的字符,所述父節(jié)點和子節(jié)點通過所述樹干建立對應關系。優(yōu)選的,所述裝置還包括存儲模塊,與所述編譯模塊連接,用于將所述拼音反饋樹的數據結構劃分成多個拼音反饋塊進行存儲,其中,所述拼音反饋塊用于存儲具有相同父節(jié)點的一組子節(jié)點,以及子節(jié)點的偏移地址,所述父節(jié)點所在的拼音反饋塊與子節(jié)點所在的拼音反饋塊之間通過所述子節(jié)點的偏移地址建立對應關系。由上述技術方案可知,本發(fā)明的實施例具有如下有益效果通過將拼音反饋樹的數據結構作為動態(tài)拼音反饋的索引,當獲取到用戶輸入的字符后,根據用戶輸入的字符,在拼音反饋樹的數據結構中進行遍歷查詢,然后根據遍歷查詢的結果,將用戶輸入的字符的后續(xù)有效的字符反饋給用戶,有效減少動態(tài)拼音反饋時所需的大量數據載入,從而縮短了動態(tài)拼音反饋的處理時間,可大幅提高動態(tài)拼音反饋的效率,提升用戶體驗。
圖I為本發(fā)明的實施例中動態(tài)拼音反饋的方法流程圖2為本發(fā)明的實施例中簡拼反饋樹的數據結構示意圖;圖3為本發(fā)明的實施例中全拼反饋樹的數據結構示意圖;圖4為本發(fā)明的實施例中簡拼反饋樹的數據結構的存儲結構示意圖;圖5為本發(fā)明的實施例中拼音反饋塊的存儲結構的示意圖;圖6為本發(fā)明的實施例中以動態(tài)簡拼反饋為例的拼音反饋的方法流程圖;圖7為本發(fā)明的實施例中動態(tài)拼音反饋的裝置結構圖。
具體實施例方式為了使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚明白,下面結合實施例和 附圖,對本發(fā)明實施例做進一步詳細地說明。在此,本發(fā)明的示意性實施例及說明用于解釋本發(fā)明,但并不作為對本發(fā)明的限定。如圖I所示,為本發(fā)明的實施例中動態(tài)拼音反饋的方法流程圖,具體步驟如下步驟101、獲取用戶輸入的字符;例如,用戶可通過鍵盤、觸摸屏等輸入設備,進行字符的輸入操作。在本實施例中,該字符包括拼音的首字母、拼音的音節(jié)、或者阿拉伯數字。步驟102、根據用戶輸入的字符,在拼音反饋樹的數據結構中進行遍歷查詢;也就是,在用戶每次輸入字符后,根據該字符在拼音反饋樹的數據結構中進行遍歷查詢。該拼音反饋樹的數據結構將在下面的內容中將詳細。步驟103、根據遍歷查詢的結果,獲取用戶輸入的字符的后續(xù)有效字符,并在鍵盤表上激活所述后續(xù)有效字符;也就是,根據用戶輸入的字符的后續(xù)有效的字符,更新鍵盤表,例如在鍵盤表上將后續(xù)有效字符設置為高亮顯示。步驟104、用戶輸入操作完成后,根據用戶輸入的字符串,獲得與字符串對應的興趣點的名稱。也就是,在用戶進行兩次或兩次以上的字符輸入操作后,可獲得用戶輸入的字符串,然后根據該字符串,獲得與該字符串對應的興趣點(POI,Point Of Interest)的名稱。例如預先建立首字母字符串與興趣點的名稱的對應關系,也可預先建立全拼字符串與興趣點的名稱的對應關系,從而實現根據用戶輸入的字符串查找到與該字符串對應的興趣點的名稱。由上述技術方案可知,本發(fā)明的實施例具有如下有益效果通過將拼音反饋樹的數據結構作為動態(tài)拼音反饋的索引,當獲取到用戶輸入的字符后,可根據用戶輸入的字符,在拼音反饋樹的數據結構中進行遍歷查詢,然后根據遍歷查詢的結果,將用戶輸入的字符的后續(xù)有效的字符反饋給用戶,減少動態(tài)拼音反饋時所需的大量數據載入,從而縮短了動態(tài)拼音反饋的處理時間,可大幅度的提高動態(tài)拼音反饋的效率。在執(zhí)行步驟101之前,該方法還包括預先編譯拼音反饋樹的數據結構。在本實施例中,該拼音反饋樹的數據結構包括節(jié)點(Node)和樹干(Edge),其中節(jié)點用于表示字符,樹干用于逐步引導用戶進行字符的輸入。該節(jié)點包括父節(jié)點和子節(jié)點,子節(jié)點代表繼父節(jié)點之后所有可能出現的字符,父節(jié)點和子節(jié)點通過樹干建立對應關系。
上述可能出現的字符是指,根據簡拼或全拼的輸入規(guī)則,根據前一個字母或音節(jié),自動預測出之后可能出現的字母或音節(jié)。上述對應關系是指,可根據父節(jié)點查找到對應的一個或多個該父節(jié)點的子節(jié)點。從而每當用戶輸入一個字符,只有有效的后續(xù)字符會出現在鍵盤表中,從一定程度上提高了用戶輸入的速度。參見圖2,為本發(fā)明的實施例中簡拼反饋樹的數據結構,在上述簡拼反饋樹中的每個節(jié)點中分別存儲有興趣點的名稱拼音的首字母,例如興趣點的名稱為“阿克蘇路”,需存儲字符A節(jié)點,字符K節(jié)點、字符S節(jié)點、字符L節(jié) 點這四個節(jié)點,其中字符A節(jié)點是父節(jié)點,字符K節(jié)點是字符A節(jié)點的子節(jié)點,字符S節(jié)點是字符K節(jié)點的子節(jié)點。如上圖所示,從根節(jié)點(Root Node)開始一直到葉子節(jié)點(Leaf Node)形成的一條路徑就代表了一個完整的興趣點的名稱輸入。例如從“A——K——S——L”形成的一條路徑就代表了興趣點的名稱“阿克蘇路”的輸入過程。下面結合圖2來詳細介紹上述步驟101 104。以通過簡拼的方式輸入興趣點的名稱“阿克蘇路”為例。用戶第一次輸入字符“A”后,根據該字符“A”,在圖2中的簡拼反饋樹的數據結構中進行遍歷查詢,查詢發(fā)現,該字符“A”記錄在字符A節(jié)點中,且該字符A節(jié)點為父節(jié)點,該字符A節(jié)點的子節(jié)點包括字符K節(jié)點和字符D節(jié)點,此時得到的遍歷查詢的結果是該字符“A”記錄在字符A節(jié)點中,該字符A節(jié)點的子節(jié)點包括字符K節(jié)點和字符D節(jié)點,該字符“K”和字符“D”為用戶第一次輸入的字符“A”的后續(xù)有效字符,在鍵盤表上激活按鍵“K”和按鍵“D” (例如將其設置為高亮)。然后,繼續(xù)獲取用戶第二次輸入的字符“K”,此時根據該字符“K”,在圖2中的簡拼反饋樹的數據結構中進行遍歷查詢,查詢發(fā)現,該字符“K”記錄在字符K節(jié)點,且該字符K節(jié)點的子節(jié)點包括字符M節(jié)點和字符S節(jié)點,此時得到的遍歷查詢的結果是該字符“K”記錄在字符K節(jié)點中,且該字符K節(jié)點的子節(jié)點包括字符M節(jié)點和字符S節(jié)點,該字符“M”和字符“S”為用戶第二次輸入的字符“K”的后續(xù)有效字符,在鍵盤表上激活按鍵“M”和按鍵“S” (例如將其設置為高亮)。然后,繼續(xù)獲取用戶第三次輸入的字符“S”,此時根據該字符“S”,在圖2中的簡拼反饋樹的數據結構中進行遍歷查詢,查詢發(fā)現,該字符“S,,記錄在字符S節(jié)點中,且該字符S節(jié)點的子節(jié)點包括字符L節(jié)點和其他字符節(jié)點(圖中未示出),此時得到的遍歷查詢的結果是該字符“S”記錄在字符S節(jié)點中,該字符S節(jié)點的子節(jié)點包括字符L節(jié)點和其他字符(圖中未示出),該字符“L”為用戶第三次輸入的字符“S”的后續(xù)有效字符,在鍵盤表上激活按鍵“S” (例如將其設置為高亮)。然后,繼續(xù)獲取用戶第四次輸入的字符“L”,此時可判斷出用戶的輸入操作已經完成,根據用戶輸入的字符串“AKSL”獲得與該字符串“AKSL”對應的興趣點的名稱“阿克蘇路”,進一步將與該興趣點“阿克蘇路”的相關信息反饋給用戶。對于全拼而言,同樣可以使用反饋樹來作為索引模型,和圖2中簡拼反饋樹的數據結構的區(qū)別是在全拼反饋樹的數據結構中,每個節(jié)點中存儲的內容不是拼音的首字母,而是拼音的音節(jié)。例如興趣點的名稱為“阿克蘇路”,在節(jié)點中存儲的內容是“ a”、“ ke ”、“ su ”、“l(fā)u”。參見圖3,為本發(fā)明的實施例中全拼反饋樹的數據結構。圖3中音節(jié)A節(jié)點的子節(jié)點包括音節(jié)Ke節(jié)點和音節(jié)De節(jié)點,音節(jié)Ke節(jié)點的子節(jié)點包括音節(jié)Men節(jié)點和音節(jié)Su節(jié)點,音節(jié)Su節(jié)點的子節(jié)點包括音節(jié)Lu節(jié)點。在本實施例中,根據用戶輸入的音節(jié),在全拼反饋樹的數據結構中進行遍歷查詢的過程,與在簡拼反饋樹的數據結構中進行遍歷查詢的過程類似,在此不再詳述。在本實施例中,在編譯得到拼音反饋樹的數據結構(例如參見圖2和圖3)后,可將該拼音反饋樹的數據結構采用二進制形式進行數據存儲。首先,將拼音反饋樹的數據結構劃分為多個拼音反饋塊Block進行存儲,每個拼音反饋塊Block用來存儲具有相同父節(jié)點的一組兄弟節(jié)點,父節(jié)點所在的拼音反饋塊 Block與子節(jié)點所在的拼音反饋塊Block之間通過偏移地址建立對應關系,也就是,可通過偏移地址來訪問其子節(jié)點所在的拼音反饋塊Block。如圖4所示,為本發(fā)明的實施例中簡拼反饋樹的數據結構的存儲結構示意圖。圖中拼音反饋塊Blockl為根節(jié)點下的第一層節(jié)點。由圖中可知,該拼音反饋塊Blockl中存儲有節(jié)點I、節(jié)點2和節(jié)點3,其中節(jié)點I中記錄有字符“A”和節(jié)點I的子節(jié)點的偏移地址,通過該子節(jié)點的偏移地址可訪問到拼音反饋塊Blockx (節(jié)點I的子節(jié)點所在的拼音反饋塊);節(jié)點2中記錄有字符“B”和節(jié)點2的子節(jié)點的偏移地址,通過其子節(jié)點的偏移地址可訪問到拼音反饋塊Blockm(節(jié)點2的子節(jié)點所在的拼音反饋塊);節(jié)點3中記錄有字符“I”和節(jié)點3的子節(jié)點的偏移地址,通過其子節(jié)點的偏移地址可訪問到拼音反饋塊Blockn(節(jié)點3的子節(jié)點所在的拼音反饋塊)。上述拼音反饋塊Blockx中記錄有字符“K”和字符“D”,拼音反饋塊Blockm中記錄有字符“J”,拼音反饋塊Blockn中記錄有字符“6”和字符“8”。由圖2中可知,字符“K”和字符“D”所在的子節(jié)點(字符K節(jié)點和字符D節(jié)點)具有相同的父節(jié)點(字符A節(jié)點)。參見圖5,為本發(fā)明的實施例中拼音反饋塊的存儲結構的示意圖。圖5中將拼音反饋樹的數據結構劃分為n個拼音反饋塊Block,以拼音反饋塊Blockl為例進行介紹其存儲結構,在拼音反饋塊Blockl的塊頭處,存儲拼音反饋塊I中包含的字符信息的個數(3個),然后順序存放字符信息I 字符信息m(見表2),其中字符信息中包括字符編碼(例如拼音首字母、音節(jié)或數字的編碼),子節(jié)點的偏移地址,以及該字符信息出現的個數統(tǒng)計(見表3)。表3中各個字段的含義字符編碼簡拼就是具體字符的ASCII碼,全拼為音節(jié)編碼(可自定義);子節(jié)點的偏移地址相對于當前拼音反饋塊Block通過該偏移地址來訪問其子節(jié)點所屬的拼音反饋塊Block;例如當找到字符“A”的字符信息之后,就可以通過子節(jié)點的偏移地址來找到記錄有字符“K”和字符“D”的子節(jié)點所在的拼音反饋塊Block X ;字符出現的個數統(tǒng)計對檢索結果的統(tǒng)計,通過該統(tǒng)計可以知道當用戶輸入該字符之后會產生多少符合條件的記錄。由于全拼檢索因為字符數遠遠超過簡拼,故如果建立對每個字母的完整動態(tài)全拼反饋樹的數據結構需要占用大量的空間,因此對于動態(tài)全拼反饋索引而言,在本實施例中,可將存儲單位由字符改為音節(jié),考慮到中文全拼是由數量有限的音節(jié)來表達,可以通過建立編碼表的方式對其進行壓縮。而且,在實際情況中,電子地圖中興趣點的名稱中還有可能會出現一些沒有被翻譯成中文的外來語以及縮寫,這些名稱不能使用漢字拼音音節(jié)來表達,因此在本實施例中設計了 2張表來存儲編碼信息,表4以音節(jié)編碼為主鍵,存儲了所有的漢字音節(jié),如CHEN,CHENG, KA, KAI等等,表5同樣以音節(jié)編碼為主鍵,存儲了一些外來語和縮寫,如SOHU,ZARA等等,具體如下表所不表4 :漢字拼音編碼表
權利要求
1.一種動態(tài)拼音反饋的方法,其特征在于,包括 步驟I、獲取用戶輸入的字符; 步驟2、根據所述用戶輸入的字符,在拼音反饋樹的數據結構中進行遍歷查詢; 步驟3、根據遍歷查詢的結果,獲取所述用戶輸入的字符的后續(xù)有效字符,并在鍵盤表上激活所述后續(xù)有效字符。
2.根據權利要求I所述的方法,其特征在于,在執(zhí)行步驟I之前,所述方法還包括 預先編譯所述拼音反饋樹的數據結構,所述拼音反饋樹的數據結構包括節(jié)點和樹干,其中所述節(jié)點用于表示字符,所述樹干用于逐步引導用戶進行字符的輸入,所述節(jié)點包括父節(jié)點和子節(jié)點,所述子節(jié)點代表繼所述父節(jié)點之后所有可能出現的字符,所述父節(jié)點和子節(jié)點通過所述樹干建立對應關系。
3.根據權利要求2所述的方法,其特征在于,在編譯述完所述拼音反饋樹的數據結構后,所述方法還包括 將所述拼音反饋樹的數據結構劃分成多個拼音反饋塊進行存儲,其中,所述拼音反饋塊用于存儲具有相同父節(jié)點的一組子節(jié)點,以及子節(jié)點的偏移地址,所述父節(jié)點所在的拼音反饋塊與子節(jié)點所在的拼音反饋塊之間通過所述子節(jié)點的偏移地址建立對應關系。
4.根據權利要求3所述的方法,其特征在于,所述拼音反饋塊中的內容包括字符信息的個數、以及至少一個字符信息,其中字符信息中的內容包括字符編碼、以及子節(jié)點的偏移地址。
5.根據權利要求3所述的動態(tài)拼音反饋的方法,其特征在于,所述步驟2包括 遍歷所述用戶輸入的字符; 獲取與所述用戶輸入的字符相關的拼音反饋塊; 遍歷所述拼音反饋塊中的字符信息; 若當前輸入的字符與所述字符信息匹配時,獲取所述拼音反饋塊中記錄的所述子節(jié)點的偏移地址; 按照所述子節(jié)點的偏移地址,載入子節(jié)點所在的拼音反饋塊; 遍歷所述子節(jié)點的拼音反饋塊中的字符信息,得到遍歷查詢結果。
6.根據權利要求I所述的動態(tài)拼音反饋的方法,其特征在于,在執(zhí)行完所述步驟3之后,所述方法還包括 步驟4、用戶輸入操作完成后,根據用戶輸入的字符串獲得與所述字符串對應的興趣點的名稱。
7.根據權利要求I所述的方法,其特征在于,所述字符信息為拼音的首字母或者拼音的音節(jié)。
8.一種動態(tài)拼音反饋的裝置,其特征在于,包括 獲取模塊,用于獲取用戶輸入的字符; 查詢模塊,用于根據所述用戶輸入的字符,在拼音反饋樹的數據結構中進行遍歷查詢; 顯示模塊,用于根據遍歷查詢的結果,獲取所述用戶輸入的字符的后續(xù)有效字符,并在鍵盤表上激活所述后續(xù)有效字符。
9.根據權利要求8所述的裝置,其特征在于,所述裝置還包括編譯模塊,用于預先編譯得到所述拼音反饋樹的數據結構,所述拼音反饋樹的數據結構包括節(jié)點和樹干,其中所述節(jié)點用于表示待輸入的字符,所述樹干用于逐步引導用戶進行字符的輸入,所述節(jié)點包括父節(jié)點和子節(jié)點,所述子節(jié)點代表了繼所述父節(jié)點之后所有可能出現的字符,所述父節(jié)點和子節(jié)點通過所述樹干建立對應關系。
10.根據權利要求9所述的裝置,其特征在于,所述裝置還包括 存儲模塊,與所述編譯模塊連接,用于將所述拼音反饋樹的數據結構劃分成多個拼音反饋塊進行存儲,其中,所述拼音反饋塊用于存儲具有相同父節(jié)點的一組子節(jié)點,以及子節(jié)點的偏移地址,所述父節(jié)點所在的拼音反饋塊與子節(jié)點所在的拼音反饋塊之間通過所述子節(jié)點的偏移地址建立對應關系。
全文摘要
本發(fā)明提供一種動態(tài)拼音反饋的方法及裝置,該方法包括步驟1、獲取用戶輸入的字符;步驟2、根據所述用戶輸入的字符,在拼音反饋樹的數據結構中進行遍歷查詢;步驟3、根據遍歷查詢的結果,獲取所述用戶輸入的字符的后續(xù)有效字符,并在鍵盤表上激活所述后續(xù)有效字符,提高動態(tài)拼音反饋的響應速度,提升用戶體驗。
文檔編號G06F17/30GK102759988SQ20111010758
公開日2012年10月31日 申請日期2011年4月27日 優(yōu)先權日2011年4月27日
發(fā)明者劉志毅, 劉澤林 申請人:北京四維圖新科技股份有限公司