檢詞算法,"> 檢詞算法。">

国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

輸入法開發(fā)——實戰(zhàn)<二>檢詞算法

2023-08-06 17:49 作者:ProsperousFall  | 我要投稿

輸入法出詞的算法看似復(fù)雜,微軟選擇的算法是相對低開銷且高效的一種。

通過行為分析,步驟大致分為三步:

一、完全匹配

二、詞頻建議

三、補全出詞

前兩步是必須有的,第三個只有五筆有。

通過一個小工具 WubiLex 可以導(dǎo)出五筆的 Lex 詞庫文件(目前的windows無法直接查看該文件)

一個詞的組成有四個部分:編碼、詞、權(quán)重、順序

一個詞可能的多個編碼,但權(quán)重不變

一個權(quán)重只能有一個

一個順序只能有一個

如:

a????????????工?19829????1

aaa????????工?19829????3

aaaa? ????工?19829????12

多個碼可以很好的解決簡碼檢索的問題,根據(jù)編碼匹配程度給出結(jié)果。拼音的算法也是相似的。不同的只有句拼,這個需要一定的機(jī)器學(xué)習(xí)能力。

權(quán)重用來表示詞頻,順序作為算法的提示、補充。

主體上的算法是:1、匹配用戶詞庫;2、匹配主詞庫(使用鏈表的話無需太在意順序,但小心重復(fù))

匹配用戶詞庫是非常簡單的,就是完全匹配。智能學(xué)習(xí)就是在這個詞庫中添加詞條。

匹配主詞庫就有點難度了:

1、完全匹配

這一步是相對簡單的,編碼相同就可以。然后根據(jù)權(quán)重排序。

2、詞頻建議

這一步是難點

先取碼,從編碼的第一條開始遍歷

例:碼:a


從 a--- 第一個開始,到 azzz(安全最大) 或 ayyy(五筆實際)?最后一個結(jié)束

在?a--- 編碼中找到權(quán)重最小的作為第一個,記權(quán)重作 c(提前備表)

然后在下一編碼中


取出順序最小的,如果其權(quán)重小于 c?跳轉(zhuǎn)至下一編碼,

否則,輸出 其中權(quán)重大于 c 的權(quán)重最小的一個詞,將新的權(quán)重寫入?c 進(jìn)入下一編碼 重復(fù)此步


步驟大致如此(未去除重復(fù))一個詞是不能在候選中出現(xiàn)再次的,需要剔除重復(fù)的候選。


碼:ab

在?ab-- 編碼中找到權(quán)重最小的

從?ab--?第一個開始,到?abzz(安全最大)?或 abyy(五筆實際)?最后一個結(jié)束


其它步驟是相同的, 但是開銷是相對小很多的。


完成了以上步驟,還有補全一步,這一步是可選的

如果,編碼中字母相同,將其補為4個相同字母組成的編碼

a -> aaaa, b -> bbbb


最后,要按 匹配 > 權(quán)重 的方法排序候選

再插入用戶詞匯,如果它們存在。


五筆中 z 鍵作用不盡相同,各各實現(xiàn)均有所差異。但是注意,z 是第一個字母時,盡量不要提供有候選參與的功能。


實際的輸入法不能每次都從文件中讀取詞庫,當(dāng)然不是不行,而是開銷過大。

詞庫應(yīng)當(dāng)由維護(hù)輸入法的進(jìn)程建立通道供輸入法動態(tài)獲取。



輸入法開發(fā)——實戰(zhàn)<二>檢詞算法的評論 (共 條)

分享到微博請遵守國家法律
柞水县| 册亨县| 丽水市| 舟曲县| 安多县| 喀喇沁旗| 黑龙江省| 保康县| 东山县| 河源市| 兴仁县| 东乡县| 滨州市| 太康县| 花垣县| 浠水县| 十堰市| 年辖:市辖区| 美姑县| 吉木萨尔县| 三台县| 兴宁市| 兰州市| 嘉鱼县| 平阴县| 辽宁省| 麻阳| 美姑县| 阳高县| 阜阳市| 太原市| 西畴县| 莒南县| 隆化县| 仁怀市| 凤阳县| 株洲县| 平遥县| 通海县| 安福县| 莎车县|