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

reverse_lookup_filter 匹配由多於一個字組成的詞時出現問題 #1095

Closed
whyjz opened this issue Jul 11, 2022 · 16 comments
Closed

Comments

@whyjz
Copy link

whyjz commented Jul 11, 2022

各位好,我正在實作一個用中文 (台灣) 注音反查台語注音的反查器,但遇到了一個問題,不確定是 bug 還是有我不知道的設定方法。以下是我的 schema 相關設置: (完整的 schema 在此)

engine:
  filters:
    - reverse_lookup_filter@tsuim_reverse_lookup_hidepinyin
    - reverse_lookup_filter@tsuim_reverse_lookup

#### 中文注音反查的設定 (1) -- 利用中文注音打出漢字
zhuyin:
  tag: zhuyin
  dictionary: terra_pinyin
  prism: bopomofo_tw
  prefix: "`"    # 啟動碼
  spelling_hints: 6
  preedit_format:
    - "xlit|1qaz2wsxedcrfv5tgbyhnujm8ik,9ol.0p;/- 6347'|ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄧㄨㄩㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦˉˊˇˋ˙ |"
    - xform/^/《中文反查》/
  tips: 《中文反查》

#### 中文注音反查的設定 (2) -- 對於不存在台語注音的漢字詞,在註解中把拼音隱藏起來,並顯示【無台語注音】
tsuim_reverse_lookup_hidepinyin:
  tags: [ zhuyin ]
  overwrite_comment: true
  dictionary: terra_pinyin
  comment_format:
    - xform/^.*$/【無台語注音】/

#### 中文反查模式的設定 (3) -- 如果漢字詞有台語注音,就在候選項後面顯示
tsuim_reverse_lookup:
  tags: [ zhuyin ]
  overwrite_comment: true
  dictionary: moetaigi.unspaced
  comment_format:
    __patch:
      #### 這些是 moetaigi.unspaced 中紀錄的台羅拼音至台語注音的轉譯規則,目前運作正常
      - tsuim:/pinyin_to_tsuim
      - tsuim:/keymap_bopomofo
      - tsuim:/bopomofo_symbols

recognizer:
  patterns:
    zhuyin: "`.*$"

然而實際用起來會變成這樣

moetaigi_reverse-lookup_issue

觀察如下:

  1. 有台語注音的漢字(例如「爬」)正常顯示其注音。
  2. 沒有台語注音的漢字(例如「趴」)正常顯示為【無台語注音】。
  3. 有台語注音的多字詞(例如「扒飯」)正常顯示其注音。
  4. 沒台語注音的多字詞(例如「趴伏」)預計要讓它顯示【無台語注音】,但是不知道為什麼 comment_format 沒有作用,顯示了在 terra_pinyin 內的拼音原始碼。

有什麼辦法可以讓 comment_format 內的規則也套用在多字詞的條目?#298#500 也有討論並提出權宜解法,我也參考了一下弄了 moetaigi.unspaced,但是再對 terra_pinyin 弄一個無空格辭典感覺有點太多。

@LEOYoon-Tsaw
Copy link
Member

多字詞沒法用comment

@whyjz
Copy link
Author

whyjz commented Jul 12, 2022

唔,果然,@LEOYoon-Tsaw 感謝你的確認。那麼這問題可能值得透過修改原始碼來解決?還是說有什麼可行的替代方案?

@LEOYoon-Tsaw
Copy link
Member

沒有吧,得改代碼

@whyjz
Copy link
Author

whyjz commented Jul 12, 2022

OK -- 看來相關的部分是 ReverseLookupFilterProcess() 這裡?可惜我對 c++ 不是這麼熟悉 不知道要怎麼改 :(

@whyjz
Copy link
Author

whyjz commented Jul 12, 2022

另外 @LEOYoon-Tsaw 請看在我的例子中,有台語注音的多字詞是可以使用反查顯示的,也就是說 tsuim_reverse_lookupcomment_format 對多字詞有正常運作,但是 tsuim_reverse_lookup_hidepinyin 卻沒有

@lotem
Copy link
Member

lotem commented Jul 13, 2022

跟反查沒有關係。

zhuyin:
  spelling_hints: 6

這項設置指定要顯示詞語的注音碼。

@whyjz
Copy link
Author

whyjz commented Jul 13, 2022

@lotem 我覺得 spelling_hints 跟此問題相關不大耶。設置為 6 意味著所有六字 (含) 以下的詞語都會顯示拼/注音,而目前測試結果的確如此。注意我舉的例子都只有一或兩字,遠低於 spelling_hints 設定的上限。

問題在於顯示的是拼音還是注音。我想要讓沒有台語注音的詞條不顯示中文拼音。當然我也可以把 spelling_hints 設成 1 以迴避掉這個問題,但是這樣一來台語的多字詞就無法顯示注音了。

@lotem
Copy link
Member

lotem commented Jul 14, 2022

先想清楚要的是国语注音还是闽南语注音。

@whyjz
Copy link
Author

whyjz commented Jul 14, 2022

唔,如果我講得不夠清楚的話,這邊再整理一次。以下敘述內,台語 = 閩南語,國語 = 中文。

  • 這個 Schema 是為了用台語注音拼寫出台語漢字而設計。我現在在設計使用中文注音尋找漢字台語注音的反查器
  • 對於存在台語注音的漢字詞 (記載在 moetaigi.unspaced 字典裡),在利用中文注音反查漢字時,我要台語注音顯示在候選詞條後方。
  • 對於不存在台語注音的漢字詞 (terra_pinyin 收錄的詞,但因為台語沒有而未收錄在 moetaigi.unspaced 內),在利用中文注音反查漢字時,我想要在詞條後方顯示「【無台語注音】」。
  • 目前可以做到的情況請看我在前文中貼的 Gif 圖檔與相關描述。我在尋找讓「趴伏」後方的 pa1'fu2 換成「【無台語注音】」的方法

@lotem
Copy link
Member

lotem commented Jul 14, 2022

既然要反查时显示词语的闽南语注音,就不要在zhuyin那段配置里设定提示国语注音。

@whyjz
Copy link
Author

whyjz commented Jul 14, 2022

@lotem spelling_hints 調成 0 的話的確不會顯示中文注音,但是還是會顯示台語的注音,看來我上面想錯了。
然而我不是想讓這些詞條的後方空白,而是提示【無台語注音】。

@lotem lotem closed this as completed Jul 14, 2022
@whyjz
Copy link
Author

whyjz commented Jul 14, 2022

@lotem 我看到 issue 被關起來了,然而我的問題並沒有獲得解決,匹配多字詞時沒辦法在後方顯示自定義的訊息。請問關閉的原因是?

@LEOYoon-Tsaw 形容,如這項設計先天上是不可行的,我可以想像除了我的例子外,可能在設計不同的輸入法定製方案時也會受到影響。

不知 rime 在未來開發時會不會考慮到這項設計?如果不會,那我得想想有沒有替代的作法...

@whyjz
Copy link
Author

whyjz commented Jul 14, 2022

另外補充說明一下,#298#500 描述了類似的問題,而我已經參考其中的討論設計了 moetaigi.unspaced 這個無空格辭典來匹配有台語注音的多字詞了,再針對 terra_pinyin 弄一個無空格辭典似乎有點太多。

@lotem
Copy link
Member

lotem commented Jul 15, 2022

@lotem 我看到 issue 被關起來了,然而我的問題並沒有獲得解決,匹配多字詞時沒辦法在後方顯示自定義的訊息。請問關閉的原因是?

@LEOYoon-Tsaw 形容,如這項設計先天上是不可行的,我可以想像除了我的例子外,可能在設計不同的輸入法定製方案時也會受到影響。

不知 rime 在未來開發時會不會考慮到這項設計?如果不會,那我得想想有沒有替代的作法...

原題提出的問題是顯示了非預期的國語注音(拼音)。這個問題已經得到解答。
至於設計爲顯示什麼之類具體需求,以及採用何種方式實現,是方案製作者要關注的。
從輸入法平臺的角度,不會支持這麼具體的需求。譬如又有一位作者,不要在候選旁顯示任意文字,而要顯示當前的時間以及天氣狀況,難道輸入法得把天下的程序都寫完嗎?輸入法平臺所提供的,是基礎構件,以及可以爲候選字附加註釋文字的編程接口。
至於要顯示固定的文字,可以實現爲在反查詞典裏需要顯示該項文字的字條一律寫入這段文本,也可以寫librime插件或者腳本修改候選字的註釋。無論如何,開啓國語注音提示於此功能沒有幫助。

@lotem
Copy link
Member

lotem commented Jul 15, 2022

另外補充說明一下,#298#500 描述了類似的問題,

並不是。這兩篇帖子討論的是被查編碼如何顯示,不會像本題一樣,還要顯示用於反查的輸入碼。後者與反查功能相衝突。

@whyjz
Copy link
Author

whyjz commented Jul 15, 2022

感謝您的說明與分享開發方向。

並不是。這兩篇帖子討論的是被查編碼如何顯示

目標不一樣,但達成目標的手段可以是一樣的。如果反查時令多字詞亦能顯示被查編碼,即可透過 Schema 內簡單的一兩行解決含此 issue 在內的所有問題。我想我們的討論可能點出了「顯示多字詞的被查編碼」這個功能有很廣的潛在應用層面。

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

No branches or pull requests

3 participants