rime / librime

Rime Input Method Engine, the core library
https://rime.im
BSD 3-Clause "New" or "Revised" License
3.39k stars 556 forks source link

【求助】语句流仓颉自造词调配问题 #455

Closed mokapsing closed 3 years ago

mokapsing commented 3 years ago

如题,本人使用仓颉整句模式,开启了用户词,实现了造词,单字调频,如仓颉中【人大尸】对应单字【仂】,使用过程中造词【人力】,但是无论我输多少次【人力】,【仂】都是首选,【人力】都是次序安,不知道本人有什么设置没对,导致这样一个单字优先的效果,后续补上个人使用的码表和方案。

mokapsing commented 3 years ago

engine: processors:

speller: alphabet: zyxwvutsrqponmlkjihgfedcba delimiter: " ;"

max_code_length: 5 # 五碼頂字上屏

translator: dictionary: cangjie6sc enable_user_dict: true db_class: plain_userdb enable_sentence: true spelling_hints: 5 preedit_format:

2nd_translator: dictionary: cangjie6sc enable_user_dict: false enable_completion: true enable_charset_filter: true enable_sentence: false enable_encoder: true sentence_over_completion: true encode_commit_history: true

max_phrase_length: 5

preedit_format:

simplifier: tips: all # 簡化字模式下提示對應的傳統漢字

punctuator: import_preset: symbols

key_binder: import_preset: default

recognizer: import_preset: default patterns: punct: '^/([0-9]0?|[A-Za-z]+)$'`

mokapsing commented 3 years ago

encoding: utf-8

name: "cangjie6sc" version: "0.1" sort: by_weight columns:

mokapsing commented 3 years ago

userdb.txt o ks 人力 c=11 d=10.7298 t=12 oks 仂 c=1 d=1 t=1

lotem commented 3 years ago

single_char_filter會把單字一律排在重碼的詞組之前。 如果確定沒有用這個過濾器,我推測是因爲script_translator使用的音節切分算法對存在包含關係的歧義切分路徑加了一個較大的懲罰係數。 https://github.com/rime/librime/blob/master/src/rime/algo/syllabifier.cc#L270

mokapsing commented 3 years ago

single_char_filter會把單字一律排在重碼的詞組之前。 如果確定沒有用這個過濾器,我推測是因爲script_translator使用的音節切分算法對存在包含關係的歧義切分路徑加了一個較大的懲罰係數。 https://github.com/rime/librime/blob/master/src/rime/algo/syllabifier.cc#L270

嗯,确定没有用,已经被我注释掉

mokapsing commented 3 years ago

single_char_filter會把單字一律排在重碼的詞組之前。 如果確定沒有用這個過濾器,我推測是因爲script_translator使用的音節切分算法對存在包含關係的歧義切分路徑加了一個較大的懲罰係數。 https://github.com/rime/librime/blob/master/src/rime/algo/syllabifier.cc#L270

我之所以混用两种translator,是因为script_translator会列出编码-1的候选,使我不必移动切入点,当前ios手机版本还不支持移动切入点,所以两个translator只作为兼容用。 但是当我只有table_translator时,小狼毫上通过移动切入点也可以造出词(鼠须管上这样操作没有造词成功),但是依然有这种单字有限的现象,麻烦帮忙分析下问题根源。 update: 似乎仅table_translator无法造出词,仅仅能调频,刚刚在个人电脑上尝试没有造词成功,公司电脑好像成功过,等确认后再来更新 我有时间会拉个代码去掉这个系数进行编译实验,非常感谢。

shewer commented 3 years ago

有方法 兩字以上加一碼 將單字碼 濾掉嗎

mokapsing commented 3 years ago

@lotem 能否 去掉懲罰係數针对script_translator加入一个开关,让用户选择是否关闭这个懲罰係數,经过验证,去掉这个后,可以按照我的预期来调频了

参考:https://ci.appveyor.com/project/mokapsing/librime/builds/38512381/artifacts

微信图片_20210401210708