Closed mirtlebot closed 8 months ago
只做到這裏,不會做了,不想做了。 可能做好這塊得寫出詞策略。
討論討論,請給出點兒點子。
如果說四音節優先於長詞補全,有一個不理想的場景:全部輸入簡拼,固態詞典裏四字詞非常多,補全的候選特別靠後,失去了提示的作用。尤其是會讓用戶自造的長詞不容易快速輸入。
相對容易實現的邏輯是: 一、用戶詞典優先於固態詞典; 二、用戶詞典裏的完整匹配的詞優先(未實現)於補全的詞; 三、固態詞典裏完整匹配的詞優先於固態詞典裏補全的詞。
「二」爲啥未實現: 因爲「一」已經會讓長詞補全出現在完整匹配的詞前面了,那還要在乎排在後的詞出自用戶詞典嗎? 並且,也擔心會再舉出反例。比如自己造了一個長詞,輸入前幾個音節,因爲用戶詞典裏有完整匹配的短詞,所以無論這個長詞多常用,都無法讓他出現在第一位;甚至短詞用過的短詞多了,還可能把這個長詞擠出第一頁。
可能要加策略來控制。但這個我還沒想好。咱也不能抄東家的呀。
比方說,可以這樣簡單辦: 用戶詞典的長詞補全,把第一個候選讓給完整匹配的詞。 目前,整句結果會放在第一位,所以長詞的前幾個音節如果詞庫裏沒有完整匹配的詞,這個長詞反而不會成爲首選了。 這一點是目前的實現有矛盾的地方。
看到 table_translator 给它逐键提示的词加了个 completion
的类型,有没有可能 script_translator 也把这些补全的词也改成 completion,这样倒是可以用 lua 自己加 filter 排序 sentence,phrase 和这类补全的候选。
lua 是一项可选功能。
標註 completion
類型的時刻已經到了 translator 的最後一步。最好還是在離開 translator 之前有合理的排序。
代碼裏 completion
這個類型 reverse_lookup_translator
會看,用來排序的。這樣標記會有什麼影響,得測試。
Describe the bug
script_translator 中,新引入的 4 字以上的候选在输入四个音节时,会出现。
当
补全候选反而会出现在四音节词的前面。
To Reproduce
build librime
make
andcd build/bin/
./rime_deployer --set-active-schema luna_pinyin
rm build luna_pinyin.userdb -rf
./rime_api_console
shanghaidiqu
一个存在与词典中的四音节词汇 -> 出现「上海地區」候选fada
,input{space}
-> 上屏「上海地區發達」自造词shanghaidiqu
-> 候选排序为1. 上海地區發達 2. 上海地區
其他四字音节词汇有相同情况。
1710050902.webm
Expected behavior 未输入完整音节时,补全候选总是排在非补全候选后。正如正常词典候选那样。
Flavor(please complete the following information): Select your flavor:
Package:
cc @lotem
大概是 4 个音节以上,补全词在用户词典内,都是这个行为,可能不算是 bug ?但对于 script_translator 来说,倒确实挺反直觉的。