PIME
PIME copied to clipboard
實裝提昇/降低優先度(user_freq)的快捷鍵
不好意思,又再度討論user_freq的議題, 因為持續遇到部分單字user_freq過高,導致習慣單字總是切不過來的問題。
線上討論區也有人認為「無法記住常用字」,是比較被詬病的地方。 https://groups.google.com/g/chewing-devel/c/OLUkytNOqSM
除了改善user_freq參數升降的機制外, 覺得還有個方式是可以實裝升降優先度(user_freq)的快捷鍵。
現有的「Crtl+Delete刪除單字」有類似的效果。 不過詞庫單字會回歸設定值、而自己增加的單字會被刪除。 在新單字user_freq參數為2的現況來說,依然很難讓想用單字的優先度比詞庫單字高。
因此,如果有快捷鍵是「提升優先度(user_freq參數強制變為5000)」「降低優先度(user_freq參數強制變為50)」, 類似這樣的機制,或許會是不錯的方式。
目前我這邊想法是用 Ctrl + Insert 提昇 user_freq 來實做看看,Ctrl + Del 保留原本的功能就可以了,但是要看 libchewing 有沒有相對的 API 可以使用。
但是要看 libchewing 有沒有相對的 API 可以使用。
目前看起來是沒有: https://github.com/chewing/libchewing/issues/385
突然想到刪除詞彙也不是用 libchewing API 做的,是直接操作 SQLite 資料庫,那就應該可以了,有空再來實做
已經在 #794 實做,Ctrl + F10 降低詞頻為 0、Ctrl + F11 設定詞頻為 5000,請直接複製 chewing_ime.py 到資料夾 C:\Program Files (x86)\PIME\python\input_methods\chewing 測試看看
感謝ottokang先進實做了這個提案,PIME輸入法又更厲害了!٩( -`ω-´ )و
目前測試中,Crtl + F11容易讓瀏覽器等程式啟動全螢幕。 雖然全螢幕快捷鍵是F11,試了幾次還是會被優先啟動。
所以我是改成 Crtl + PageUp / PageDwon。 Home / End / Up/ Down 在選字視窗目前都有作用,比較不適合。
升降的機制與輸入改善的部分會繼續測試。 非常感謝!
選字視窗下瀏覽器會啟動全螢幕模式嗎?我這邊測試 Chrome、Edge、Firefox 都不會因為 Ctrl + F11 啟動全螢幕模式
剛剛確認了一下,是Vivaldi(Chrome系瀏覽器)有Ctrl + F11的預設功能(顯示/非顯示UI)。😂 PageUp/PageDown or Up/Down 跟原本刪詞彙的Ctrl + Delete位置相近,使用體感上比較順手些。
目前用Up/Down當快捷鍵測試中。
【user_freq值較低仍優先被選擇的現象】
「汙◯」類的單字跟「直升機」的時候碰到。 第一次打「直昇機」跟「直升機」兩個單字的初始參數。
詞彙 | user_freq | max_freq | orig_freq | 優先度 |
---|---|---|---|---|
直昇機 | 216 | 216 | 216 | ◯ |
直升機 | 152 | 216 | 152 |
降低「直昇機」詞頻後,變以下參數。 但此參數狀態下,「直昇機」的選擇優先度仍大於「直升機」。
詞彙 | user_freq | max_freq | orig_freq | 優先度 |
---|---|---|---|---|
直昇機 | 0 | 216 | 216 | ◯ |
直升機 | 152 | 216 | 152 |
「污染」「汙染」也有相同現象。 首次輸入後,將「污染」詞頻降到0,「汙染」詞頻升到5000。 參數為以下這個狀態,「污染」的優先度仍然比較高。 不過再多打幾次「汙染」跟「直升機」後,優先度似乎會變正常,不會被蓋掉。
詞彙 | user_freq | max_freq | orig_freq | 優先度 |
---|---|---|---|---|
污染 | 0 | 6730 | 6730 | ◯ |
汙染 | 5000 | 6730 | 280 |
詞庫內建「中國式」跟自己新增詞彙「中國是」,確認同樣問題。
輸入第一次「中國式」,新增詞彙「中國是」,然後用快捷鍵將「中國式」的user_freq改成0的參數如下。 這個況狀的優先度仍然是「中國式」較高。
詞彙 | user_freq | max_freq | orig_freq | 優先度 |
---|---|---|---|---|
中國式 | 0 | 67 | 67 | ◯ |
中國是 | 15 | 67 | 1 |
這次嘗試連續輸入「中國是」,直到優先度超越「中國式」的狀態後,參數如下。
詞彙 | user_freq | max_freq | orig_freq | 優先度 |
---|---|---|---|---|
中國式 | 0 | 67 | 67 | |
中國是 | 81 | 67 | 1 | ◯ |
詞庫既有詞「中軍」及,新增詞「忠君」,有同樣狀況。 兩者第一次輸入後,將「中軍」降低詞頻後的參數為下。
詞彙 | user_freq | max_freq | orig_freq | 優先度 |
---|---|---|---|---|
中軍 | 0 | 31 | 31 | ◯ |
忠君 | 1 | 31 | 1 |
同樣連續輸入「忠君」,直到優先顯示時的參數如下。
詞彙 | user_freq | max_freq | orig_freq | 優先度 |
---|---|---|---|---|
中軍 | 0 | 31 | 31 | |
忠君 | 38 | 31 | 1 | ◯ |
是user_freq低於max_freq的關係?
cursor.execute("UPDATE userphrase_v1 SET user_freq = max_freq + 10 WHERE phrase=:target_phrase", {"target_phrase": target_phrase})
降低詞頻不變 提升詞頻條件修改成user_freq = max_freq + 10
「直昇機」降頻1次,「直升機」升頻1次,得到一下參數。優先度正常如預期是「直升機」優先。
詞彙 | user_freq | max_freq | orig_freq | 優先度 |
---|---|---|---|---|
直昇機 | 0 | 216 | 216 | |
直升機 | 226 | 216 | 152 | ◯ |
cursor.execute("UPDATE userphrase_v1 SET user_freq = max_freq + 10, max_freq = max_freq - 100 WHERE phrase=:target_phrase", {"target_phrase": target_phrase})
降低詞頻條件修改成user_freq = 0, max_freq = max_freq - 100
僅使用降低詞頻降低「直昇機」參數,得到以下結果,優先度仍是「直昇機」較高。
詞彙 | user_freq | max_freq | orig_freq | 優先度 |
---|---|---|---|---|
直昇機 | 0 | 116 | 216 | ◯ |
直升機 | 152 | 216 | 152 |
目前的結論。
降低詞頻的參數: 不變 提升詞頻的參數: 修改為 SET user_freq = max_freq + 500
似乎這樣就不會遇到詞彙本身的user_freq值比本身的max_freq低,而遇到優先度還是比其他詞彙低的情況。 像是上述「汙染」的max_freq初始預設是6730,user_freq提升詞頻至5000下,還是壓不過去。
怎樣的機制能妥善提升優先度,又不會過頭。 繼續測試。
【提昇詞頻的條件方案】
- SET user_freq = user_freq + 5000
- user_freq = max_freq + 500
目前用Up/Down當快捷鍵測試中。
我在 #796 這邊實做了,原本的少放了按鍵已處理的設定,現在改成 Ctrl + PageUp / PageDown 來修改詞頻,也不會傳到其他程式影響運作了
感謝實做!
【快捷鍵】 Ctrl + PageUp / PageDown : 位置接近Delete刪除詞彙功能,體感佳。
Ctrl + Up / Down: 與選字時只差一顆Crtl鍵,順手。
這兩個方案覺得都不錯。
【提升參數】 目前測試結果下,max_freq應該會對優先度有影響。 max_freq高於user_freq的時候,還是有優先度較低的狀態。 鑑於有些單字的初始參數還有破萬的,所以我目前是以以下參數來提升詞彙詞頻。遇到不足的時候可以連加。 user_freq = user_freq + 5000
不知道其他用戶的使用狀況下,是否有助調整選字邏輯。
看起來應該可以先調整,你可以直接發 Pull Request,沒有編輯器的話可以直接在 GitHub 上面線上編輯,我再搞清楚 user_freq 跟 max_freq 的選字邏輯再看看要不要後續調整。