[功能建議] 優化使用者自定義詞彙的實際使用
痛點
發現輸入法會因為前後文,影響使用者自訂辭彙無法正常覆蓋,是否可新增一個功能,讓使用者手動新增過的詞彙強制覆蓋輸入的內容(像 Windows 注音輸入法的行為)?
舉例來說:
- 我想要打「還在舊家嗎?」,但輸入法沒有正確的解析這個語句。
- 往前選字,發現輸入法確實是有辨識到「舊家」這個詞,但沒有替換成這個詞。
- 系統內已有這個詞,使用者沒辦法透過任何方式強制將這個詞設為優先使用。
在 Windows 上,我只要加入自定義的詞彙之後,輸入時就可以優先使用添加過的詞彙,不用再手動選字。 現在輸入法似乎不能很正確的解析我輸入的語句結構,導致字常常會錯誤的跟前後文相關連(實際上無關),進而導致自動出現的字與我想輸入的字不同。
功能說明
- 新增一個選項,讓使用者決定要不要將使用者設定過的詞彙強制替換,還是保持目前輸入法的行為(新增詞但不強制替換,詞在選字列表中出現)
- 系統內已有的詞彙也可以用 shift+方向鍵,快速選取詞彙並添加到使用者的常用詞彙,以後使用者輸入這個詞的時候,優先使用這個詞的時候,優先使用這個詞。
替代方案 目前我只能手動選字,或者每打一個詞就要選一次字就按 Enter,比較浪費時間。
針對「舊家」一詞,這裡提個解法:請從小麥輸入法選單中選取 "Edit User Phrases" /「編輯使用者詞彙」,然後在詞彙檔中加入這行:
舊家 ㄐㄧㄡˋ-ㄐㄧㄚ
小麥只有在 Shift+左右鍵標示自訂詞的時候會阻擋加入既有詞,但語言模型本身不在乎。這個解法算是既有設計的 workround。
上述問題的根本原因是「就」跟「家」兩個單字詞的詞頻比「舊家」高,於是小麥簡單的 unigram 語言模型就只能選取「就」跟「家」。如果選過一次「舊家」,短期記憶機制雖然會根據前後文記住這個選項,但是這機制運作取決於選取詞的前兩字,於是「還在舊家嗎」打了一次選了一次「舊家」後,再打一次「還在舊家嗎」會記得,但是打「物品還在舊家沒錯」就仍然輸出「就家」了。
related issue: https://github.com/openvanilla/McBopomofo/issues/498
將 User Phrases 設定 舊家 ㄐ一ㄡˋ-ㄐ一ㄚ 並在 Excluded Phrases 設定 就家 ㄐ一ㄡˋ-ㄐ一ㄚ 以及 在就 ㄗㄞˋ-ㄐ一ㄡˋ 的情況下,
輸入「還在舊家」的注音,可以有較高的機率正確,但仍不是百分之百穩定,少數時候還是會變成「還在就家」。
正如 xatier 提到的 issue https://github.com/openvanilla/McBopomofo/issues/498 ,如果能有選項強制 override 預設的選字輸出,感覺是一個好的解決方法。(畢竟使用者都花時間去設定 User Phrases 了,肯定就是這個詞很常打,需要它是最優先出現的選字)
我們最近合併了改動 #649 ,大概是在改動比較小的狀況看,看看能不能解決需求。
#649 當中,增加了兩個按鈕定義。在出現選字窗的時候,如果是在一個候選詞上,按下「+」,那就不管怎樣,都放進使用者自己的 data.txt 中,增加這個詞的詞頻到最高。反之,如果按下「-」,就會快速放入排除的詞彙中。
以上面的例子,就是可以試試看在「舊家」上面按「+」。
等下一個 release 應該可以關掉這個。