[0114] 邊緣-頂部邊緣
[0115] 支持下面的操作:
[0116] 1、基于點(diǎn)坐標(biāo)(用戶(hù)觸摸到觸摸屏顯示器20的點(diǎn)的X坐標(biāo)、Y坐標(biāo))來(lái)識(shí)別相應(yīng) 的鍵和字符。
[0117] 2、識(shí)別相應(yīng)的鍵。
[0118] 3、給定兩個(gè)鍵,找出該兩個(gè)鍵之間的DISTANCE (Kl、K2)。
[0119] 該兩個(gè)鍵之間的距離可以是通過(guò)連接鍵K1和K2的中心而形成的線(xiàn)段的長(zhǎng)度。
[0120] 4、給定兩個(gè)字符,找出相應(yīng)的鍵之間的DISTANCE(charl、char2)。
[0121] 基于行的編碼
[0122] 核心引擎120能夠基于需要被經(jīng)過(guò)以追蹤針對(duì)詞的輸入圖案的行的序列來(lái)分析 該輸入圖案。鍵的行各自被分配唯一標(biāo)識(shí)符代碼,并且每當(dāng)輸入圖案追蹤越過(guò)該行中的鍵 時(shí),將該代碼進(jìn)行注冊(cè)。例如,在根據(jù)本實(shí)施方式的QWERTY鍵盤(pán)中,鍵的最上行被分配標(biāo)識(shí) 符代碼'1';鍵的中間行被分配標(biāo)識(shí)符代碼'2';并且鍵的最下行被分配標(biāo)識(shí)符代碼'3'。該 技術(shù)能夠被擴(kuò)展到向諸如數(shù)字字符、標(biāo)點(diǎn)符號(hào)等這樣的其它字符組分配標(biāo)識(shí)符代碼。
[0123] 能夠以編碼圖案的形式存儲(chǔ)針對(duì)特定輸入圖案注冊(cè)的標(biāo)識(shí)符代碼的序列,以與候 選詞的標(biāo)識(shí)符代碼進(jìn)行比較。另選地,為了節(jié)約存儲(chǔ)空間,能夠例如通過(guò)將各個(gè)標(biāo)識(shí)符代碼 求和來(lái)將針對(duì)特定輸入圖案的標(biāo)識(shí)符代碼進(jìn)行組合,以提供針對(duì)該特定輸入圖案的累計(jì)標(biāo) 識(shí)符代碼。
[0124] 例如,參照QWERTY布局:
[0125] 為了追蹤詞"about",輸入圖案經(jīng)過(guò)行2、3、1。
[0126] 為了追蹤詞"please",輸入圖案經(jīng)過(guò)行1、2、1、2、1。
[0127] 為了追蹤詞"bet",輸入圖案經(jīng)過(guò)行3、2、1。
[0128] 針對(duì)每個(gè)詞,對(duì)行數(shù)的序列進(jìn)行多行索引,以形成數(shù)。
[0129] "about 231
[0130] "please"-12121
[0131] "bet" -321
[0132] 該技術(shù)的變體包括:
[0133] 1、如果序列是123或321,則能夠略過(guò)(skip)行2的代碼,并且由于其暗示了輸 入圖案從行1追蹤通過(guò)行2移動(dòng)到行3,因此能夠?qū)⒃撔蛄芯幋a成13或31,或者反之亦然。 例如:
[0134] "about" -231
[0135] "please"-12121
[0136] "bet"-321
[0137] 2、能夠使用2比特來(lái)表示每個(gè)行數(shù)(行1-01、行2-10、行3-11)。這種表示的 串接將形成數(shù)。
[0138] "about"-231 - 10 11 01 - 101101 - 45
[0139]"please"-12121 - 01 10 01 10 01 - 0110011001 - 409
[0140] "bet"-321 - 11 10 01 - 111001 - 57
[0141] 針對(duì)詞典中存儲(chǔ)的候選詞以及針對(duì)每個(gè)詞存儲(chǔ)的所得的編碼圖案來(lái)執(zhí)行該編碼 技術(shù)?;谠摼幋a圖案對(duì)詞典中的詞進(jìn)行分組。例如,將具有編碼圖案12121的全部的詞 (諸如"please"和"plight")設(shè)置在詞典內(nèi)的相同組中。在每個(gè)組內(nèi),將基于其使用的頻 率來(lái)對(duì)這些詞進(jìn)行排序。
[0142] 離線(xiàn)的數(shù)據(jù)準(zhǔn)備
[0143] 如本文中所概述的,在可通過(guò)核心引擎120訪問(wèn)的詞典中存儲(chǔ)詞。能夠如下地執(zhí) 行詞典數(shù)據(jù)的準(zhǔn)備:
[0144] 1、在利于詞和前綴的快速查找的數(shù)據(jù)結(jié)構(gòu)中存儲(chǔ)詞的詞典。例如,能夠使用特里 (trie)數(shù)據(jù)(前綴樹(shù))結(jié)構(gòu)。詞典中的詞各自被指派唯一索引。
[0145] 2、針對(duì)詞典中的每個(gè)可能的前綴(PREFIX_TREE_WITH_ORDERED_LISTS)存儲(chǔ)前n 個(gè)最常用詞索引。這能夠是以下兩種情況中的任何一種:
[0146] (1)針對(duì)每個(gè)可能的前綴的前n個(gè)常用詞;或者
[0147] (2)如果需要空間優(yōu)化:
[0148] a、如果正在使用特里數(shù)據(jù)結(jié)構(gòu),則將前n個(gè)常用詞索引作為與對(duì)應(yīng)于該前綴的特 里結(jié)構(gòu)中的節(jié)點(diǎn)關(guān)聯(lián)的數(shù)據(jù)來(lái)進(jìn)行存儲(chǔ)。
[0149] b、能夠針對(duì)僅選擇的前綴來(lái)存儲(chǔ)前n個(gè)最常用的詞。數(shù)字"n"還能夠基于前綴而 改變。例如,能夠針對(duì)更多常用的前綴來(lái)存儲(chǔ)更多的詞。
[0150] 通過(guò)示例的方式,能夠在如下場(chǎng)景中的一種或更多種場(chǎng)景中對(duì)前綴進(jìn)行過(guò)濾:
[0151] i、如果具有該前綴的全部詞都具有幾乎相等的頻率(在一些閥值DELTA_ FREQUENCY_THRESHOLD 內(nèi))。
[0152] ii、具有該前綴的全部詞的最大頻率小于MIN_FREQUENCY_THRESHOLD。
[0153] iii、具有該前綴的全部詞的平均頻率小于AVERAGE_FREQUENCY_THRESHOLD。
[0154] 能夠基于空間要求來(lái)調(diào)整閥值參數(shù)。
[0155] (3)對(duì)于長(zhǎng)度為2的前綴(雙字母組),基于頻率計(jì)數(shù)來(lái)對(duì)具有該前綴的全部詞的 列表進(jìn)行存儲(chǔ)、排序,(或者)另選地,基于空間要求針對(duì)每個(gè)雙字母組來(lái)存儲(chǔ)僅前n個(gè)常 用詞。
[0156] 夾角以及角點(diǎn)識(shí)別
[0157] 在本實(shí)施方式中,角點(diǎn)包括如下項(xiàng)中的一個(gè)或更多個(gè):在輸入圖案的方向上的點(diǎn) 變化;輸入圖案的曲率上的局部變化;輸入圖案的起始點(diǎn);以及輸入圖案的結(jié)束點(diǎn)。例如基 于在方向上改變的點(diǎn)處的夾角或者測(cè)量的曲率來(lái)向每個(gè)角點(diǎn)應(yīng)用加權(quán)。能夠通過(guò)應(yīng)用以下 技術(shù)中的一種或更多種來(lái)確定所追蹤的輸入圖案中以及經(jīng)模型化的輸入圖案中的角點(diǎn)的 識(shí)別。
[0158] 曲率
[0159] 在某一點(diǎn)處的曲率被定義為根據(jù)弧長(zhǎng)的斜率的變化率。
[0160] 另選地,曲線(xiàn)的(有符號(hào)的)曲率還能夠被定義為通過(guò)其弧長(zhǎng)進(jìn)行參數(shù)化的正切 向量的方向的變化率。曲率的絕對(duì)值是對(duì)曲線(xiàn)彎曲的程度的測(cè)量。幾乎是直線(xiàn)的、緩慢地 彎曲的曲線(xiàn)將具有小的絕對(duì)曲率。
[0161] 數(shù)字曲線(xiàn)在某一點(diǎn)處的曲率
[0162] 數(shù)字曲線(xiàn)能夠被限定為點(diǎn)Pl、p2.....p n的序列,其中,p 1+1鄰近p i。由于精確的數(shù) 學(xué)定義不可用于數(shù)字曲線(xiàn),因此曲率的上述定義針對(duì)數(shù)字曲線(xiàn)不成立。對(duì)于數(shù)字曲線(xiàn),存在 通過(guò)使用能夠從鄰近點(diǎn)提取的信息來(lái)估計(jì)某一點(diǎn)處的曲率的多種技術(shù)。
[0163] 數(shù)字曲線(xiàn)的角點(diǎn)
[0164] 估計(jì)數(shù)字曲線(xiàn)上的每個(gè)點(diǎn)和/或臨時(shí)點(diǎn)處的曲率,并且將具有局部最大曲率的這 些點(diǎn)看作是角點(diǎn)。還將該曲線(xiàn)上的第一個(gè)點(diǎn)和最后一個(gè)點(diǎn)包括進(jìn)來(lái)作為角點(diǎn)。
[0165] 追蹤的輸入圖案
[0166] 在追蹤的輸入圖案的情況下,將輸入圖案當(dāng)作數(shù)字曲線(xiàn),并且識(shí)別角點(diǎn)。能夠基于 連接識(shí)別的角點(diǎn)而繪制的線(xiàn)之間的夾角(在點(diǎn)變化的情況下)或者基于每個(gè)角點(diǎn)處所估計(jì) 的曲率來(lái)向每個(gè)角點(diǎn)應(yīng)用加權(quán)。例如,能夠?qū)^小的夾角賦予較高的權(quán)重,并且反之亦然。 能夠?qū)⑴c追蹤的輸入圖案的起始點(diǎn)和/或結(jié)束點(diǎn)對(duì)應(yīng)的點(diǎn)解釋為角點(diǎn)。
[0167] 經(jīng)模型化的輸入圖案
[0168] 在經(jīng)模型化的輸入圖案的情況下,當(dāng)在布局上順序地連接與候選詞中的字符對(duì)應(yīng) 的鍵來(lái)繪制一系列線(xiàn)段時(shí),能夠?qū)⒔屈c(diǎn)限定為角度和/或方向發(fā)生改變的這些點(diǎn)。能夠?qū)?與候選串的起始字符和/或結(jié)束字符對(duì)應(yīng)的點(diǎn)解釋為角點(diǎn)。能夠在每個(gè)角點(diǎn)處計(jì)算夾角。 能夠基于所計(jì)算的夾角來(lái)應(yīng)用加權(quán)。例如,能夠針對(duì)較小的角點(diǎn)角度來(lái)分配較高的加權(quán)。
[0169] 輸入圖案建議生成
[0170] 核心引擎120獲取用戶(hù)已經(jīng)利用輸入圖案來(lái)追蹤的點(diǎn)的坐標(biāo)(x坐標(biāo)和y坐標(biāo))。
[0171] 從這些點(diǎn)的列表中,使用物理布局信息來(lái)識(shí)別用戶(hù)已經(jīng)追蹤的鍵和字符的完整序 列。這將分別被稱(chēng)為INPUT_KEYS和INPUT_STRING。
[0172] 針對(duì)INPUT_STRING來(lái)計(jì)算完整路徑長(zhǎng)度(INPUT_PATH_LENGTH)。例如,如果追 蹤的輸入圖案輸出字符串"abcde",則相應(yīng)的鍵是Kl、K2、K3、K4。路徑長(zhǎng)度(INPUT_PATH_ LENGTH) = DISTANCE (Kl、K2) +DISTANCE (K2、K3) +DISTANCE (K3、K4)。
[0173] 鍵之間的距離DISTANCE(K1、K2)表示連接鍵kl和鍵k2的中心的線(xiàn)段的長(zhǎng)度。字 符之間的距離DISTANCE (cl、c2)是連接與字符cl和字符c2對(duì)應(yīng)的鍵的中心的線(xiàn)段的長(zhǎng) 度。與輸入圖案對(duì)應(yīng)的路徑的長(zhǎng)度PATH_LENGTH(string)能夠在一個(gè)串上計(jì)算,并且是與 該串中的各個(gè)字符對(duì)應(yīng)的連續(xù)的鍵之間的全部距離之和。例如,在詞"awe"的情況下:
[0174]PATH_LENGTH ( " awe ")= DI STANCE ( " a "," w ")+DI STANCE ( " w "," e ")〇
[0175] 基于如下項(xiàng)來(lái)計(jì)算路徑長(zhǎng)度下閥值和路徑長(zhǎng)度上閥值:
[0176] PATH_LEN_LOWER_THRESHOLD_PARAM,
[0177] PATH_LEN_UPPER_THRESHOLD_PARAM 和 INPUT_PATH_LENGTH〇
[0178] 通過(guò)示例的方式:
[0179]若
[0180] PATH_LEN_LOWER_THRESHOLD_PARAM = 0. 2(20% )
[0181] PATH_LEN_UPPER_THRESHOLD_PARAM = 0. 3(30% )
[0182]則
[0183] PATH_LEN_L0WER_THRESH0LD = INPUT_PATH_LENGTH -(0? 2*INPUT_PATH_LENGTH)
[0184] PATH_LEN_UPPER_THRESHOLD = INPUT_PATH_LENGTH+(0. 3*INPUT_PATH_LENGTH)
[0185] 從通過(guò)核心引擎120而獲取的點(diǎn)的列表中,識(shí)別輸入圖案中的角點(diǎn)。已知各種方 法用于檢測(cè)角點(diǎn)(例如,"Dominant point detection using adaptive bending value", Wen-Yen ffu, Image Vision Computing 21(6) :517-525 (2003))〇
[0186] 基于形成的角度/曲率來(lái)向角點(diǎn)賦予權(quán)重。在角點(diǎn)處形成的角度越大(或者曲率 越?。?,該角點(diǎn)的權(quán)重越低。(例如:如果檢測(cè)到第一角點(diǎn)和第二角點(diǎn)分別具有40°和170° 的夾角,則第一角點(diǎn)將具有更高的加權(quán))。將具有小于預(yù)定角閥值(ANGULAR_THRESHOLD)的 權(quán)重的角點(diǎn)標(biāo)記為弱角點(diǎn),并且將其它角點(diǎn)標(biāo)記為強(qiáng)角點(diǎn)。該信息能夠被用來(lái)執(zhí)行雙字母 組/三字母組過(guò)濾,和/或能夠在計(jì)算串距離時(shí)來(lái)使用。
[0187] 從角點(diǎn)中使用物理布局信息來(lái)識(shí)別與每個(gè)角點(diǎn)對(duì)應(yīng)的鍵和字符。具體地:
[0188] INPUT_CORNERS_STRING:來(lái)自INPUT_STRING的第一字符,接下來(lái)是角點(diǎn)的字符的 序列,接下來(lái)是來(lái)自INPUT_STRING的最后一個(gè)字符;并且
[0189] INPUT_CORNERS_KEYS:與 CORNERS_STRING 中的字符對(duì)應(yīng)的鍵的序列。
[0190] 從作為詞典中的有效前綴的INPUT_STRING (或INPUT_KEYS)生成串(或鍵)的可 能的組合。INPUT_STRING的第一個(gè)字符和最后一個(gè)字符能夠改變?yōu)樽粉櫟膶?shí)際字符或者 在該字符中以及在該字符周?chē)娜魏巫址?。通過(guò)示例的方式:如果輸入圖案生成字符串: "asdfghjkl"、則可能的組合包括"asl"、"adl"、"asdl"、"asdf 1 "。對(duì)于更長(zhǎng)的串,生成所有 可能的組合是一項(xiàng)耗時(shí)的任務(wù),然而如果在詞典中不存在該前綴,則這通過(guò)其本身最初對(duì) 組合進(jìn)行修剪而變得可行。
[0191] 在詞典中或者在另一數(shù)據(jù)庫(kù)中存儲(chǔ)有效字符組合的集合。執(zhí)行檢查以識(shí)別字符串 內(nèi)的有效/無(wú)效組合。在本實(shí)施方式中,詞典中存儲(chǔ)的字符組合是雙字母組,然而也能夠使 用三字母組或n字母組。通過(guò)示例的方式,在字符串"asdfghjkl"的情況下,生成的第一組 合是"as"。只有當(dāng)"as"在詞典中是有效前綴時(shí),才生成以相同的組合開(kāi)頭的其它組合(諸 如"asd"、"asdf"等)。否則,刪除第一組合。在生成全部的有效組合之后,刪除具有小于 PATH_LEN_L0WER_THRESH0LD的路徑長(zhǎng)度的組合。在該步驟結(jié)束時(shí),存在有效前綴/詞的集 合(VALID_PREFIXES_LIST)。
[0192] 選擇與追蹤的輸入圖案的初始部分靠近的雙字母組。在這種情況下,識(shí)別與詞 的前兩個(gè)字符對(duì)應(yīng)的雙字母組。通過(guò)示例的方式,如果在詞典中識(shí)別的詞是"apple"、 "&『01111(1"、"1^1111&拉"、"(^1111吐",則詞典中的雙字母組是"&口"、"&,、"1^"、"(^"。在詞典 中存儲(chǔ)有效雙字母組的列表。能夠例如基于其頻率來(lái)對(duì)這些雙字母組進(jìn)行排序(按降序排 序)。還能夠基于使用來(lái)動(dòng)態(tài)地更新列表(即,維護(hù)每個(gè)雙字母組的出現(xiàn)的計(jì)數(shù),并且每當(dāng) 用戶(hù)輸入一個(gè)詞時(shí)就對(duì)其進(jìn)行更新)。采取追蹤的輸入圖案的直到第一(強(qiáng))角點(diǎn)(如通過(guò) 基于形成的角的加權(quán)來(lái)確定)的部分,并且選擇路徑與該路徑接近的這些雙字母組。例如, 如果"asdbhjio"是與追蹤的輸入圖案對(duì)應(yīng)的字符串,"b"是第一強(qiáng)角點(diǎn),則有效雙字母組能 夠是"ab"、"as"、"ad"、"ax"、" sb"。在該步驟結(jié)束時(shí),我們得到雙字母組的列表(BIGRAMS_ LIST),并且索引的相應(yīng)范圍被稱(chēng)作BIGRAMS_RANGES。
[0193] 使用本文中描述的技術(shù)來(lái)計(jì)算輸入圖案的基于行的編碼。例如,如果輸入圖案經(jīng) 過(guò)行3、2、1、2,則彳丁編碼將是3212。
[0194] 串距離計(jì)算
[0195] 通過(guò)圖案匹配算法來(lái)計(jì)算串距離(STRING_DISTANCE)。串距離(STRING_ DISTANCE)提供了通過(guò)輸入圖案追蹤的路徑和針對(duì)候選的經(jīng)模型化的路徑之間的相關(guān)性 的指示。在本實(shí)施方式中,低串距離(STRING_DISTANCE)指示好的相關(guān)性,并且高串距離 (STRING_DI