Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
kuroutaakatsuki opened this issue Sep 7, 2023 · 14 comments
Open

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

kuroutaakatsuki opened this issue Sep 7, 2023 · 14 comments

Comments

@kuroutaakatsuki
Copy link

kuroutaakatsuki commented Sep 7, 2023

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

@ottokang
Copy link
Contributor

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

@yan12125
Copy link
Contributor

yan12125 commented Nov 17, 2023

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

目前看起來是沒有: chewing/libchewing#385

@ottokang
Copy link
Contributor

ottokang commented Nov 17, 2023

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

@ottokang
Copy link
Contributor

ottokang commented Dec 11, 2023

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

@kuroutaakatsuki
Copy link
Author

kuroutaakatsuki commented Dec 11, 2023

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

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

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

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

@ottokang
Copy link
Contributor

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

@kuroutaakatsuki
Copy link
Author

kuroutaakatsuki commented Dec 11, 2023

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

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

@kuroutaakatsuki
Copy link
Author

kuroutaakatsuki commented Dec 12, 2023

【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
Copy link
Author

kuroutaakatsuki commented Dec 12, 2023

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

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

kuroutaakatsuki commented Dec 12, 2023

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
Copy link
Author

kuroutaakatsuki commented Dec 12, 2023

目前的結論。

降低詞頻的參數: 不變
提升詞頻的參數: 修改為 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

@ottokang ottokang changed the title 可考慮實裝降優先度(user_freq)的快捷鍵 實裝提昇/降低優先度(user_freq)的快捷鍵 Dec 13, 2023
@ottokang
Copy link
Contributor

ottokang commented Dec 13, 2023

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

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

@kuroutaakatsuki
Copy link
Author

kuroutaakatsuki commented Dec 14, 2023

感謝實做!

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

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

這兩個方案覺得都不錯。

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

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

@ottokang
Copy link
Contributor

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants