为rime的输入方案启用语言模型

[2024-12-16 周一 11:53]

语言模型可以让造句更加符合习惯,参考V2EX的这个帖子,没有语言模型的情况下基本就是胡乱组词。

语言模型和输入方案是解耦的,可以使用自己习惯的rime-ice/rime-frost等方案,然后:

下载模型

LMDG的发布页下载模型。

模型文件版本说明:v是版本号,n是模型级别,m是百兆尺寸

文件大小 2级模型 3级模型
100M v1n2m1 v1n3m1
200M v1n2m2 v1n3m2
300M v1n2m3 v1n3m3

这里的模型级别指训练时着重训练的几个字:

多级 n-gram 语言模型 在大规模数据的支持下,我们采用了 n-gram 模型进行多级语言建模。具体包括了 unigram(单字模型)、bigram(双字模型)、trigram(三字模型)以及更高级的四字模型。

个人使用可以用n3,如果电脑性能不佳感觉卡顿,可以切换到n2(在作者的另一个方案中,上传有v3n2的模型)。

更新配置文件

找到使用的方案

打开你的Rime配置文件路径/用户文件夹,将下载好的模型文件 amz-v*n*m*-**.gram 放到其中。这里我下载的模型是 amz-v2n3m1-zh-hans

Windows上可通过右键托盘小狼毫图标-用户文件夹打开(一般为 %AppData%\Roaming\Rime );MacOS上一般为 ~/Library/Rime

然后打开你使用的配置文件 default.custom.yaml (或 default.yaml ,当两个文件都存在时以 custom.yaml 为优先),寻找其中 schema_list: 下面的内容。

比如我的 default.custom.yaml 就是这部分:

patch:
  schema_list:
    - {schema: rime_frost_double_pinyin_flypy}

说明我只用了 rime_frost_double_pinyin_flypy 这一个方案。

以默认的 default.yaml 为例,它是这样的:

schema_list:
  # 可以直接删除或注释不需要的方案,对应的 *.schema.yaml 方案文件也可以直接删除
  - schema: rime_frost             # 白霜拼音(全拼)
  - schema: rime_frost_double_pinyin          # 自然码双拼
  - schema: rime_frost_double_pinyin_mspy     # 微软双拼
  - schema: rime_frost_double_pinyin_sogou    # 搜狗双拼
  - schema: rime_frost_double_pinyin_flypy    # 小鹤双拼

说明它启用了这五个方案(不列举了)。

更新方案配置文件

总之找到你要用的方案名称,然后对该配置文件打补丁。以 rime_frost_double_pinyin_flypy 方案为例,打开或新建 rime_frost_double_pinyin_flypy.custom.yaml 文件,然后加上这几行:

patch:
  grammar:
    language: amz-v2n3m1-zh-hans  
    collocation_max_length: 5
    collocation_min_length: 2
  translator/contextual_suggestions: true
  translator/max_homophones: 7
  translator/max_homographs: 7

其中 amz-v2n3m1-zh-hans 为下载好的模型文件名(无后缀名)。然后保存,重新部署,便能享受语言模型了。

效果展示

渐渐地就不在意了

使用前:

(「不/在意/了」被理解成了「不再/一乐」)

使用后:

以前就会这样

使用前:

(「以前/就会」被理解成了「一千九/会」)

使用后:

不管怎么使劲都不行

使用前:

(「不管怎么/使劲/都/不行」 => 「不管怎么/是/筋斗/不行」)

使用后:

无论如何你都不可能再离开这里了

使用前:

(「离开/这里/了」 => 「离开/这/离了」)

使用后:

9 个赞

楼主输入法的主题挺好看的

      name: "微信/Wechat"
      text_color: 0x424242
      label_color: 0x999999
      back_color: 0xFFFFFF
      border_color: 0xFFFFFF
      comment_text_color: 0x999999
      candidate_text_color: 0x3c3c3c
      hilited_comment_text_color: 0xFFFFFF
      hilited_back_color: 0xaf9a23
      hilited_text_color: 0xFFFFFF
      hilited_label_color: 0xFFFFFF
      # 0x79af22 = HEX #22af79 广场色为 #239aaf #Af23a5 #af5823
      hilited_candidate_back_color: 0xaf9a23
      shadow_color: 0x20000000

因为要留个微信输入法给其他人操作电脑时使用,我给rime设置的微信输入法对应颜色。

4 个赞

话说正无穷∞符号是咋开的,启用了grammar也还是没有

还是不明白怎么迁移它的模型…看了官方的迁移说明,脑子发涨

无论如何都用错"在"字了😏

1 个赞

那个正无穷符号不是语言模型的,是白霜词库( rime-frost )自带的,正无穷符号表示不是挂载的词库和个人词库中的词,而是根据已有词库拼接的;还有星号表示是个人词库中的词(就是之前打过的),没有符号表示是挂载词库中的。参见 候选字上方的*号是什么功能? · Issue #12 · gaboolic/rime-frost · GitHub

1 个赞

官方是针对方案开发者说的,作为用户直接按我上面的步骤操作就行。

1 个赞

看了下感觉个人词库和挂载词库貌似没法分的更细了,想只标记个人词库中没有出现在挂载词库中的貌似不太行

语言模型和方案是解耦的,完全可以继续用rime-ice或其他方案的同时挂载语言模型

我之前使用的 rime-ice 里面的词库, 使用了语言模型并禁用了 rime-ice 词库后, 发现一样的组词流畅, 看起来使用了模型后, 完全可以不需要词库了

太棒了,有模型用就舒服多了

今天折腾了一下, 确实很不错, 雾凇本身词库就很好了, 加上大模型, 很多长句的场景现在都不用调整单词了,非常棒。

2 个赞

感谢楼主的分享,基本上无缝在rime-melt上启用了,经过非常有限的测试(不到10句话),v3n2比v2n3体验起来要更准确一点。

朙月拼音·简体字配置了没有效果不知道为什么?

是不是版本问题

image 总是打不出是的

换成v2n3好点了

先打一次「是的」,然后它的词频就会被提前,下次就能在前排看见了。

是需要 octagram

这样就可以了。