Closed tumuyan closed 3 years ago
感谢回报,可以复现。
在排查这个问题的原因的时候,我遇到了一个奇妙的解决方法:请试着将字典文件第五行的 ...
改为 ---
之后重新启动 fcitx/rime,再重试。这在我的设备上可以解决 m
不出候选的问题,麻烦您也测试一下。
另外我也去和 fcitx 或者 rime 那边问问。
我测试发现,当...改为---时,的确不出现m没有候选的问题了,但是实际上moegirl整个词典都失效了。 请您在确认一下?
和群友看了半天,又通过二分法定位,发现造成异常的原因是词条唔呣 wu m
总结经验:词条如果包含单个声母的码,会对全拼造成伤害。
感谢二分 :)
我之前测试了一下 fcitx 自带的拼音,是没有这个问题的。这个问题只发生在 fcitx5 配 RIME 的案例中(例如您使用的 pinyin_simp
或者我测试时使用的 double_pinyin
)。考虑到这个问题在小狼毫和同文那边,估计是 RIME 方面的事情。
我去翻了一下 RIME 的 issue,果然:rime/librime#72
这个字确实是有 m
的读音,lazy_pinyin
也是这么生成的:
>>> from pypinyin import lazy_pinyin
>>> lazy_pinyin("唔呣")
['wu', 'm']
关于解决方案:把它转成 mu
好了我觉得...
阅读librime#72后,我又看了下自己的词库,发现刚好有其中的栗子K歌
。
我自己在设计编码的时候,刚好用忽略空格的编码方式写了这几条,所以之前没有发生问题。
K歌 Kge i了 ile U盘 Upan
虽然单声母的文字不多,但是英文+汉语的组合还是比较多的。
我对这个项目的脚本和py都不大熟悉,我猜测类似的词条被脚本自动过滤掉了?
我觉得这一部分可能在生成词库后,二次处理,使用脚本正则过滤,在编码中去除空格比较好一些。
为了处理无法简拼的问题,可以设置同一个词条多个编码,比如:
唔呣 wum 唔呣 wm
我对这个项目的脚本和py都不大熟悉,我猜测类似的词条被脚本自动过滤掉了?
是的。在预处理后不为全中文的词语都被过滤掉了:
我觉得这一部分可能在生成词库后,二次处理,使用脚本正则过滤,在编码中去除空格比较好一些。
考虑到不同用户输入习惯不同(例如很多用户比较喜欢在中英文之间加空格,有些用户则不然),pkg-moegirl
分支发布的词库暂时不打算包含含有英文的词条。如果有需要的话,可以在 pkg-moegirl
中配置文件的基础上,客制一个 converter,在上述文件的基础上加入想要的修改。将配置文件中的 "opencc"
换为自制的 converter 函数即可。
为了处理无法简拼的问题,可以设置同一个词条多个编码,比如:
记得 RIME 是含有对简拼处理的配置的(例如 72 提到的 abbrev/^([a-z]).+$/$1/
),所以可能并不需要在词库层面特别对简拼做优化。
谢谢解释 已经明白是怎么回事了
我引入这个词典后发生了奇怪的冲突现象。 输入m没有候选词,输入韵母后正常显示;输入其他声母也能正常显示候选;关闭引用一切恢复正常; 我尝试删除了moegirl词库中全部首字m发音的词条,没有任何效果。
测试使用4.15版本字典+袖珍简化字拼音方案修改字典,附件为整个方案 pinyin_simp.schema.zip 在windows上使用小狼毫和android使用同文都出现了这个问题