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

五笔:加入自造词的同时,固定原来的字词顺序的解法 #53

Closed
viogus opened this issue May 17, 2015 · 16 comments
Closed

Comments

@viogus
Copy link

viogus commented May 17, 2015

使用的wubi86词库,想在能快捷的加入一些自造词的同时,可以固定原来的字词顺序,
所以同时加上
default.yaml: switcher/fix_schema_list_order: true
translator:enable_user_dict: true
发现fix_schema_list_order无效,在关闭user_dict时则可以,
请问有办法实现我要的功能么?

@lotem
Copy link
Member

lotem commented May 18, 2015

fix_schema_list_order 不是控制候選字順序用的選項。

目前不支持所求的行爲。(雖然也不是完全不可能,要運用大量技巧才能做到。)
用戶詞典用來支持調頻及記錄新詞,因爲新造的詞與固有詞是顯示在同一個候選詞列表中,他們之間的順序是由用戶詞典決定的。目前的策略是多用的、最近用過的先出。

@lotem
Copy link
Member

lotem commented May 18, 2015

如果需求是保持候選字列表的順序固定,那麼允許加入自造詞的合理性可能要受到質疑。
加入新的自造詞會使得候選詞的順序改變,從這個角度看,這兩項需求似乎是有衝突的。

@viogus
Copy link
Author

viogus commented May 18, 2015

應該不是衝突的吧,自造詞只是作爲相關碼表的補充,
不去影響原有的詞序,只等待手動去調整的時候再改變順序。
對於形碼來說,固定順序是對提高打字速度的必要條件。
但是,能夠方便的自定義詞條也是輸入法的易用性的體現啊。

當然,對於五筆等形碼來說,固定詞序比自定義詞庫要重要得多,
所以我都是關了用戶詞典在用。雖然可以用碼表依賴來解決自定義詞條,
但是對比自動造詞,易用性上差了非常多。

所以,固定詞庫順序還是很有必要的,當然,最好在其實現的基礎上,
再加個快捷鍵手動調整某個詞條的功能,這樣子,wubi輸入法在squirrel上應該就完美了。

@ghost
Copy link

ghost commented May 18, 2015

我想 @lotem 的意思是,暂时不明白自造词应该被插入到什么位置,也还没有实现简单的手动添加自造词功能。

输入法配置文件中的 translator/enable_user_dict 才直接和自动调频有关,translator/enable_encoder 是自动造词。即使关闭了自动造词和自动调频,也没有明确指定插入顺序。

又要加词又想调整顺序,我想只有这样才最方便:添加新功能,手动添加自造词,並以自动造词的方式排序(不知道要不要重新部署输入法),再提供快捷键选中候选词并排序。

手动添加自造词的过程:

  1. 将词语复制至剪贴板。
  2. 以快捷键触发造词,弹出编码框,按界面提示,输入对应编码,按回车。

手动调整候选词顺序:

  1. 用相关快捷键选中候选词。
  2. 用上下方向键调整顺序,有必要时自动翻页。
  3. 按回车结束操作。(没 ESC 后悔药?)

@lotem
Copy link
Member

lotem commented May 18, 2015

我提出的問題是:
如果在已有候選詞的前面加入新詞,那麼勢必改變同碼的候選詞順序,這就與「固定順序」的策略衝突了。
如果只把新造的詞加在最末,可以不破壞已有候選詞的固定順序,但是從實用的角度,這是個不夠友好的策略。因爲任何一個詞庫都有侷限,很可能從來不用的詞收入了詞庫而排在前面,自己常用的重碼詞反而因爲是自造的排在最後了。
一個我認爲比較合理的辦法是「單字優先」並且允許自動調頻,這可以通過添加 single_char_filter 做到。

@ghost
Copy link

ghost commented May 18, 2015

嗯,我之前想要不要重新部署输入法就是在想「固定顺序」是不是一個不零活的限制。但是既然插入位置这么不好决定,干脆添加手动调整功能更好了(仅仅是建议),不知这种临时操作是否依然受限于「固定顺序」,假如是的话就太可惜了。

@lotem
Copy link
Member

lotem commented May 18, 2015

可惜完全手動管理詞序的功能在 Rime 裏面沒有現成的實現。現有的詞典都是針對快速檢索及計算動態詞頻設計的。手動管理詞條的話適合採用數據庫來存儲,Windows 上似乎有這樣的輸入法平臺。

@ghost
Copy link

ghost commented May 18, 2015

那么看来手动调频暂时是没多少希望了,不记得是不是 Windows 上的「极点五笔」有这个功能了,Mac 的话还有清歌输入法,也不知楼主喜欢不。依我个人看法,五笔是尽量打单字和双字词比较好,所以不妨先尝试从别的大词库抽取一份双字的词表试试效率再考虑下是否真的有必要经常添加新词。

@viogus
Copy link
Author

viogus commented May 18, 2015

@lotem
仅对于新造的词附于最后的情况,如果一个码表的重码率很低(对于形码的码表来说很正常,一个码通常只映射到两三个词,甚至很多都是空码),则完全没有您所提及的顾虑。
单字优先的话,也并不能改变词条顺序会变动的情况,甚至相关的单字顺序也会变动。

只有音码才更多的需要去根据词频来自动调整,形码基本就是一个萝卜一个坑,
自动调整顺序相当于只是让其最后一码在变化(无论是数字选择或者是其他自定义选择),
特别是常用字,基本是手指直接反射打出去,如果改变最后一码,
对于五笔之流的形码的打字体验实在是不舒服。

@viogus
Copy link
Author

viogus commented May 18, 2015

@jakwings
导入词库不是很大的问题,我现在就是用的windows下以前的五笔词库。
打单字或者打词组,只不过是词库的问题而已,看个人习惯。
现在的问题在于“固定词序”和“舒服的自动添加词条”,这二者不能兼得。

@viogus
Copy link
Author

viogus commented May 18, 2015

@lotem

fix_schema_list_order 不是控制候選字順序用的選項。

目前不支持所求的行爲。(雖然也不是完全不可能,要運用大量技巧才能做到。)
用戶詞典用來支持調頻及記錄新詞,因爲新造的詞與固有詞是顯示在同一個候選詞列表中,他們之間的順序是由用戶詞典決定的。目前的策略是多用的、最近用過的先出。

可不可以增加选项,只记录新词,不调频。

@lotem
Copy link
Member

lotem commented May 18, 2015

只記錄新詞,不調頻。那麼記錄下來的新詞怎麼用呢?

@ghost
Copy link

ghost commented May 18, 2015

打单字或者打词组,只不过是词库的问题而已,看个人习惯。

用双字词还好吧,大多数多字词都很好拆分。显然你不是只打单字。小建议而已。

现在的问题在于“固定词序”和“舒服的自动添加词条”,这二者不能兼得。

貌似我之前误以为你要手动加词了……一看到「快捷」我就想到手动了。囧

可不可以增加选项,只记录新词,不调频。

讨论又回到了原点。新词该摆哪里?按 lotem 的说法,在无法手动调频的情况下,难免会出现词序不理想的问题,到时候又要亲自修改码表文件了。

@lotem
Copy link
Member

lotem commented May 18, 2015

我覺得既然沒有更好的辦法,不如就用技巧做吧:
要固定在前幾位的常用字詞,由另一個前置的 table_translator 提供,掛相同的字典並且設置 enable_user_dict: false, initial_quality: 設一個極大值,新詞怎麼調都無法超過,比如設爲 1000。
寫法大概是:

engine:
  translators:
    - table_translator@fixed
    - table_translator
  filter:
    - uniquifier
fixed:
  dictionary: the_same_dictionary
  enable_user_dict: false
  enable_completion: false
  initial_quality: 1000

@viogus
Copy link
Author

viogus commented May 19, 2015

也只能是暂时这样解决了,多谢 @lotem , @jakwings
现在的五笔已经接近完美。

@lotem lotem closed this as completed May 19, 2015
@lotem lotem changed the title default.yaml: switcher/fix_schema_list_order: truetranslator:enable_user_dict: true下无效 五笔:加入自造词的同时,固定原来的字词顺序的解法 May 19, 2015
@lotem
Copy link
Member

lotem commented May 19, 2015

This issue was moved to rime/home#9

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

2 participants