home icon indicating copy to clipboard operation
home copied to clipboard

词组的拼写运算是否跟单字的拼写运算完全相同?

Open hahaleyile opened this issue 1 year ago • 4 comments

这几天一直在研究拼写运算,可惜rimekit项目中的拼写运算调试器下载链接挂了,自己编译的话也没法成功,因为依赖库包含了 node-marisa-trie,它需要低版本的nodejs才能编译成功,所以rimekit项目也一直编译不了。

通过阅读文档,我猜测拼写运算和投影算法的功能就是对音节表集合做一个变换和拓展。拼写运算改写正则匹配上的音节,因此编译的时候Rime会顺序执行完所有的拼写运算规则,最后就生成了一份包含模糊音这类功能的二进制词典文件。

我现在的问题就是,词组的拼写运算规则是不是和单字的规则完全相同?会不会多一个音节切分的规则?用户在设计方案的时候要考虑词组和单字的区别吗?

非常期待你们的解答。

hahaleyile avatar Aug 11 '22 17:08 hahaleyile

現不支持跨字拼寫運算,冀望早日支持

LEOYoon-Tsaw avatar Aug 11 '22 17:08 LEOYoon-Tsaw

谢谢解答!

我最近又试了一下,发现拼写运算好像跟音节切分是有一定关系的。像我用了一个测试方案,里面用的词典只有三个词:

尼奥	ni ao	1
鸟	niao	2
乃哦	nai o	1

我的配置方案如下:

schema:
  schema_id: test
  name: 测试
  version: "1"

engine:
  processors:
    - speller          # 拼写处理器,将用户按键追加到输入码中
    - selector         # 处理候选词的选择(上下、翻页、序号选择)
    - navigator        # 移动插入点
    - express_editor   # 处理空格键(确认输入)、回车键(直接上屏)、退格键(删除输入)等
  segmentors:
    - abc_segmentor
    - fallback_segmentor
  translators:
    - script_translator

translator:
  dictionary: test
  enable_user_dict: false
  enable_sentence: false

speller:
  alphabet: abcdefghijklmnopqrstuvwxyz
  delimiter: " '"
  algebra:
    - derive/([iu])a(o|ng?)$/a$1$2/   # aio = iao; aing = iang; aung = uang

测试后发现,尼奥(ni'ao)是不会生成 naio 这个音节的,这似乎是说明了拼写运算的正则匹配还得考虑音节切分符?

image

hahaleyile avatar Aug 14 '22 18:08 hahaleyile

說了不支持跨字了

LEOYoon-Tsaw avatar Aug 14 '22 18:08 LEOYoon-Tsaw

說了不支持跨字了

原来是这个意思,谢谢

hahaleyile avatar Aug 15 '22 04:08 hahaleyile