PIME icon indicating copy to clipboard operation
PIME copied to clipboard

實裝提昇/降低優先度(user_freq)的快捷鍵

Open kuroutaakatsuki opened this issue 1 year ago • 15 comments

不好意思,又再度討論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)」, 類似這樣的機制,或許會是不錯的方式。

kuroutaakatsuki avatar Sep 07 '23 05:09 kuroutaakatsuki

目前我這邊想法是用 Ctrl + Insert 提昇 user_freq 來實做看看,Ctrl + Del 保留原本的功能就可以了,但是要看 libchewing 有沒有相對的 API 可以使用。

ottokang avatar Nov 17 '23 05:11 ottokang

但是要看 libchewing 有沒有相對的 API 可以使用。

目前看起來是沒有: https://github.com/chewing/libchewing/issues/385

yan12125 avatar Nov 17 '23 06:11 yan12125

突然想到刪除詞彙也不是用 libchewing API 做的,是直接操作 SQLite 資料庫,那就應該可以了,有空再來實做

ottokang avatar Nov 17 '23 07:11 ottokang

已經在 #794 實做,Ctrl + F10 降低詞頻為 0、Ctrl + F11 設定詞頻為 5000,請直接複製 chewing_ime.py 到資料夾 C:\Program Files (x86)\PIME\python\input_methods\chewing 測試看看

ottokang avatar Dec 11 '23 00:12 ottokang

感謝ottokang先進實做了這個提案,PIME輸入法又更厲害了!٩( -`ω-´ )و

目前測試中,Crtl + F11容易讓瀏覽器等程式啟動全螢幕。 雖然全螢幕快捷鍵是F11,試了幾次還是會被優先啟動。

所以我是改成 Crtl + PageUp / PageDwon。 Home / End / Up/ Down 在選字視窗目前都有作用,比較不適合。

升降的機制與輸入改善的部分會繼續測試。 非常感謝!

kuroutaakatsuki avatar Dec 11 '23 07:12 kuroutaakatsuki

選字視窗下瀏覽器會啟動全螢幕模式嗎?我這邊測試 Chrome、Edge、Firefox 都不會因為 Ctrl + F11 啟動全螢幕模式

ottokang avatar Dec 11 '23 09:12 ottokang

剛剛確認了一下,是Vivaldi(Chrome系瀏覽器)有Ctrl + F11的預設功能(顯示/非顯示UI)。😂 PageUp/PageDown or Up/Down 跟原本刪詞彙的Ctrl + Delete位置相近,使用體感上比較順手些。

目前用Up/Down當快捷鍵測試中。

kuroutaakatsuki avatar Dec 11 '23 09:12 kuroutaakatsuki

【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

kuroutaakatsuki avatar Dec 12 '23 09:12 kuroutaakatsuki

詞庫內建「中國式」跟自己新增詞彙「中國是」,確認同樣問題。

輸入第一次「中國式」,新增詞彙「中國是」,然後用快捷鍵將「中國式」的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的關係?

kuroutaakatsuki avatar Dec 12 '23 15:12 kuroutaakatsuki

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

kuroutaakatsuki avatar Dec 12 '23 18:12 kuroutaakatsuki

目前的結論。

降低詞頻的參數: 不變 提升詞頻的參數: 修改為 SET user_freq = max_freq + 500

似乎這樣就不會遇到詞彙本身的user_freq值比本身的max_freq低,而遇到優先度還是比其他詞彙低的情況。 像是上述「汙染」的max_freq初始預設是6730,user_freq提升詞頻至5000下,還是壓不過去。

怎樣的機制能妥善提升優先度,又不會過頭。 繼續測試。

【提昇詞頻的條件方案】

  1. SET user_freq = user_freq + 5000
  2. user_freq = max_freq + 500

kuroutaakatsuki avatar Dec 12 '23 19:12 kuroutaakatsuki

目前用Up/Down當快捷鍵測試中。

我在 #796 這邊實做了,原本的少放了按鍵已處理的設定,現在改成 Ctrl + PageUp / PageDown 來修改詞頻,也不會傳到其他程式影響運作了

ottokang avatar Dec 13 '23 01:12 ottokang

感謝實做!

【快捷鍵】 Ctrl + PageUp / PageDown : 位置接近Delete刪除詞彙功能,體感佳。

Ctrl + Up / Down: 與選字時只差一顆Crtl鍵,順手。

這兩個方案覺得都不錯。

【提升參數】 目前測試結果下,max_freq應該會對優先度有影響。 max_freq高於user_freq的時候,還是有優先度較低的狀態。 鑑於有些單字的初始參數還有破萬的,所以我目前是以以下參數來提升詞彙詞頻。遇到不足的時候可以連加。 user_freq = user_freq + 5000

不知道其他用戶的使用狀況下,是否有助調整選字邏輯。

kuroutaakatsuki avatar Dec 14 '23 08:12 kuroutaakatsuki

看起來應該可以先調整,你可以直接發 Pull Request,沒有編輯器的話可以直接在 GitHub 上面線上編輯,我再搞清楚 user_freq 跟 max_freq 的選字邏輯再看看要不要後續調整。

ottokang avatar Dec 18 '23 07:12 ottokang