libchewing
libchewing copied to clipboard
關於 chewing_userphrase_remove() 的作用方式
目前在新酷音中,chewing_userphrase_remove() 需要傳入詞彙、注音符號做為參數,才能刪除詞彙,但是使用者時常是在選字清單中才發現誤加了詞彙,然後需要在這個狀態下刪除詞彙。
PIME 之前的實做方式是用 SQL 指令直接搜尋並刪除詞彙:https://github.com/EasyIME/PIME/blob/d456affb45b3a139bd213b9cdeef7b314b08ce5a/python/input_methods/chewing/chewing_ime.py#L530
這邊想討論一下,是否有可能在選字清單下,直接查詢詞彙的注音,這樣可以傳入 chewing_userphrase_remove() 並且刪除詞彙。
chewing_userphrase_remove() 主要是用在不是輸入法的使用情境,如詞庫編輯器
現在的 C API 的確沒有方便可以取得某一候選詞的注音的方式,這裡有幾個相關的 API
- chewing_interval_Get 可以拿到目前的斷詞序列
- chewing_cand_String 可以拿到候選詞
- chewing_get_phoneSeq 可以拿到整個編輯區的注音
你提出的使用情境有幾個解法
- 提供一個在有候選清單下可以用的 API,直接移除第 n 個候選詞 如
chewing_cand_Forget(ctx, n) - 提供一個 API 提取候選詞的注音符號
chewing_cand_getPhoneSeq(ctx, n) - 提供每個 interval 的注音 如
chewing_interval_getPhoneSeq(ctx, n)
還要考慮如果要移除內建詞庫的詞的情況該怎麼辦
你提出的使用情境有幾個解法
1. 提供一個在有候選清單下可以用的 API,直接移除第 n 個候選詞 如 `chewing_cand_Forget(ctx, n)`
這個看起來最單純
2. 提供一個 API 提取候選詞的注音符號 `chewing_cand_getPhoneSeq(ctx, n)` 3. 提供每個 interval 的注音 如 `chewing_interval_getPhoneSeq(ctx, n)`
這兩個應該還要再搭配 1chewing_userphrase_remove()`
還要考慮如果要移除內建詞庫的詞的情況該怎麼辦 這個應該是還好,因為搜尋並且刪除的目標是 chewing.dat 個人詞庫,如果選到了內建詞庫的詞彙,就刪除失敗,再給使用者訊息回饋即可