Nanachi 发表于 2024-12-16 13:13

为rime输入方案添加语言模型支持

本帖最后由 Nanachi 于 2024-12-16 23:46 编辑

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

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

下载模型

在LMDG的发布页下载模型。


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

文件大小2级模型3级模型
100Mv1n2m1v1n3m1
200Mv1n2m2v1n3m2
300Mv1n2m3v1n3m3


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


多级 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 为下载好的模型文件名(无后缀名)。然后保存,重新部署,便能享受语言模型了。

效果展示


渐渐地就不在意了

使用前:

https://s2.loli.net/2024/12/14/MRPXo1cObLyfDwW.png


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

使用后:


https://p.sda1.dev/20/bdbf9bbcdcdde62b0ca2f028e7cc971e/1.webp

以前就会这样

使用前:

https://s2.loli.net/2024/12/14/Y4N5CSKGTzm7oew.png


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

使用后:

https://p.sda1.dev/20/7793862a47af23c9c149dfc37d3c45fe/2.webp

不管怎么使劲都不行

使用前:

https://s2.loli.net/2024/12/14/h6S7y1X32WHCigs.png


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

使用后:


https://p.sda1.dev/20/891faeb694c26acf4885c68dc650b1cc/3.webp

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

使用前:

https://s2.loli.net/2024/12/14/FRSr3BV6IZNY9J2.png


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

使用后:


https://p.sda1.dev/20/fd570045406dedd406a42bfa5b4e506a/4.webp

dejavuuuuuuuu 发表于 2024-12-16 13:24

这个方案手机上能用吗

空気力学 发表于 2024-12-16 13:53

感觉还是fcitx好用

Xerxes_2 发表于 2024-12-16 13:59

植入 llm 这种东西为什么国内这些输入法厂商都没好好用?
微信输入法搞了一个抽象的问 AI,自己的自动联想和屎一样还经常隔半秒蹦第一个害得我点错了

—— 来自 Google Pixel 9 Pro, Android 15, 鹅球 v3.3.95-debug

Nanachi 发表于 2024-12-16 14:04

dejavuuuuuuuu 发表于 2024-12-16 13:24
这个方案手机上能用吗

可以试下同作者的「万象拼音」方案,我在手机端用微信输入法,不清楚rime。

水雲逸 发表于 2024-12-16 14:32

rime现在还会因为和游戏不兼容炸掉吗

—— 来自 OnePlus PJA110, Android 14上的 S1Next-鹅版 v2.5.4

batrain 发表于 2024-12-16 14:34

哦!有点意思。

南小鸭 发表于 2024-12-16 15:12

有没有人试试3个模型级别有什么区别

王牛子 发表于 2024-12-16 15:12

这么看还是双拼加形比较爽,重码率少,打词组或者单字几乎不用选,本来想试试这个大模型结果发现自己用不到因为平时不选重

Nanachi 发表于 2024-12-16 15:33

王牛子 发表于 2024-12-16 15:12
这么看还是双拼加形比较爽,重码率少,打词组或者单字几乎不用选,本来想试试这个大模型结果发现自己用不到 ...

打长句用得到

—— 来自 鹅球 v3.3.92

天知道 发表于 2024-12-16 15:47

这个适用于五笔吗?

—— 来自 Xiaomi 23013RK75C, Android 14上的 S1Next-鹅版 v2.5.4

Nanachi 发表于 2024-12-16 15:51

天知道 发表于 2024-12-16 15:47
这个适用于五笔吗?

—— 来自 Xiaomi 23013RK75C, Android 14上的 S1Next-鹅版 v2.5.4

你用的第三方修改版本,要先看看支不支持octagram

GALLADE 发表于 2024-12-16 15:55

好东西,谢谢楼主分享,先马再折腾

这样一来,rime要是能锁定某些高频词的排序位置就真的没有什么死角了

Nanachi 发表于 2024-12-16 16:00

GALLADE 发表于 2024-12-16 15:55
好东西,谢谢楼主分享,先马再折腾

这样一来,rime要是能锁定某些高频词的排序位置就真的没有什么死角了 ...

用custom-phase调整用户词权重应该能控制位置吧。

https://github.com/rime/home/issues/789


—— 来自 鹅球 v3.3.92

samfs 发表于 2024-12-16 16:02

本帖最后由 samfs 于 2025-3-16 11:55 编辑

**********

orca 发表于 2024-12-16 16:12

本帖最后由 orca 于 2024-12-16 16:13 编辑

主楼“更新方案配置文件”代码的最后三行的缩进好像和官网配置说明不一样:
https://github.com/amzxyz/RIME-LMDG/wiki/语言模型参数配置说明

Nanachi 发表于 2024-12-16 16:15

本帖最后由 Nanachi 于 2024-12-16 16:20 编辑

orca 发表于 2024-12-16 16:12
主楼“更新方案配置文件”代码的最后三行的缩进好像和官网配置说明不一样:
https://github.com/amzxyz/RIM ...
看了下自己的配置文件没错,应该是写作时格式调整出错了,已调整。

生存戰略 发表于 2024-12-16 16:21

本帖最后由 生存戰略 于 2024-12-16 16:29 编辑

确实好用,可以忘记搜狗了。

第一款让生产力暴增的本地语言大模型

Nintendo新手 发表于 2024-12-16 16:42

谢谢推荐!
不过在小鹤双拼模式下命中率偏低

GALLADE 发表于 2024-12-16 16:43

Nanachi 发表于 2024-12-16 16:00
用custom-phase调整用户词权重应该能控制位置吧。

https://github.com/rime/home/issues/789

调权重还是没有锁定词序位置来得好用

而且新造的词(误输入)权重过高这个也得解决

但这些问题都不是关键的,属于不够完美而已,反正不可能用回那些窥私输入法就是了

anoza 发表于 2024-12-16 16:45

导入进自己用的rime配置,但是打lz有些长句还是老的样子,请问有什么方法知道自己用上语言模型了?

Nanachi 发表于 2024-12-16 16:48

anoza 发表于 2024-12-16 16:45
导入进自己用的rime配置,但是打lz有些长句还是老的样子,请问有什么方法知道自己用上语言模型了? ...

我一直用主楼展示的例句检测启用与否的

Nanachi 发表于 2024-12-16 16:50

Nintendo新手 发表于 2024-12-16 16:42
谢谢推荐!
不过在小鹤双拼模式下命中率偏低

我也是小鹤双拼,这个语言模型主要用途在造句。根据v2ex用户的说法:

我试了很多容易分词错误的或者搭配错误的句子,有一大半加了模型之后表现都好了很多。

而且感觉 100M 的模型和 300M 的模型之间有用差距,比如「能约上吗」在 100M 会被误解析成「能月上马」,300M 就不会有这个问题。

不过模型好像会受到用户词库词频的干扰,比如我刚刚打了个「上马」,现在不管用哪个模型都会被解析成「(月/约)得上马」了。

设备性能良好的话可以试试更大体积的模型?

orca 发表于 2024-12-16 17:11

anoza 发表于 2024-12-16 16:45
导入进自己用的rime配置,但是打lz有些长句还是老的样子,请问有什么方法知道自己用上语言模型了? ...

那应该是没生效。我现在是改patch文件不生效,直接改方案文件才生效。我还在折腾,看我往patch里加是哪里出了问题。

anoza 发表于 2024-12-16 17:14

orca 发表于 2024-12-16 17:11
那应该是没生效。我现在是改patch文件不生效,直接改方案文件才生效。我还在折腾,看我往patch里加是哪里 ...

刚刚摸索出来了,也是改自己的custom不行,直接往schema里面写就行了

orca 发表于 2024-12-16 17:23

我现在有个地方还没搞明白,白霜是基于雾凇改的,按雾凇的说明文档,“方案 xxx.schema.yaml 的补丁文件是 xxx.custom.yaml”,而主楼用的是xxx.schema.custom.yaml。我不知道我patch不生效的原因是否在这里,还得折腾。

然后成为树洞 发表于 2024-12-16 17:50

天知道 发表于 2024-12-16 15:47
这个适用于五笔吗?

—— 来自 Xiaomi 23013RK75C, Android 14上的 S1Next-鹅版 v2.5.4

五笔有什么使用这个的必要吗
本来就只输入单字和词组,又基本不需要选词

Nanachi 发表于 2024-12-16 18:01

orca 发表于 2024-12-16 17:23
我现在有个地方还没搞明白,白霜是基于雾凇改的,按雾凇的说明文档,“方案 xxx.schema.yaml 的补丁文件是...

*.custom.yaml是对的,感谢提醒

—— 来自 鹅球 v3.3.92

orca 发表于 2024-12-16 22:45

奇怪了,我只有加在schema文件里才能生效,加在custom文件里就不能生效。我这custom文件有啥问题



耀魄 发表于 2024-12-16 22:53

orca 发表于 2024-12-16 22:45
奇怪了,我只有加在schema文件里才能生效,加在custom文件里就不能生效。我这custom文件有啥问题




一样,在build生成的文件没有想关的内容

Nanachi 发表于 2024-12-16 23:32

orca 发表于 2024-12-16 22:45
奇怪了,我只有加在schema文件里才能生效,加在custom文件里就不能生效。我这custom文件有啥问题




我又研究了下,可以试试只增加这几行:

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

lly778 发表于 2024-12-16 23:37

Nanachi 发表于 2024-12-16 23:32
我又研究了下,可以试试只增加这几行:

这样似乎可以了

orca 发表于 2024-12-16 23:49

Nanachi 发表于 2024-12-16 23:32
我又研究了下,可以试试只增加这几行:

虽然一头雾水(比如为什么不提octagram了),但的的确确是生效了233

Nanachi 发表于 2024-12-17 00:02

本帖最后由 Nanachi 于 2024-12-17 08:07 编辑

orca 发表于 2024-12-16 23:49
虽然一头雾水(比如为什么不提octagram了),但的的确确是生效了233
之前在工作时间抽空写的教程,我个人是直接往schema里面加的,所以没仔细看。

其实参考佛振的示范就知道了。

他建议在*.custom.yaml中加入如下语句:

# luna_pinyin.custom.yaml

patch:
__include: grammar:/hant

这个的原理就是将grammar.yaml中hant下的配置段包含进来。然后找到这个grammar.yaml:

# grammar.yaml
hant:
grammar:
    language: zh-hant-t-essay-bgw
translator/contextual_suggestions: true
translator/max_homophones: 7
translator/max_homographs: 7

所以,等效于在*.custom.yaml中直接添加后面几段。

再结合语言模型作者提供的配置参考,就推测应该只保留后面即可:

# *.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

orca 发表于 2024-12-17 15:16

https://github.com/gaboolic/rime-frost/issues/115

白霜作者的说法。期待后面会有更好的模型

weifire 发表于 2024-12-17 15:19

本帖最后由 weifire 于 2024-12-17 15:26 编辑

编辑,解决了

星尘的记忆 发表于 2024-12-17 16:53

PC端配置成功了,用起来可以

手机端可以用上吗,现在手机端用的雨燕

—— 来自 鹅球 v3.3.92-alpha

Nanachi 发表于 2024-12-17 16:56

星尘的记忆 发表于 2024-12-17 16:53
PC端配置成功了,用起来可以

手机端可以用上吗,现在手机端用的雨燕

gurecn commented 2 weeks ago
感谢您的支持,当前雨燕输入法暂不支持自定义输入方案,仅支持内置方案。雨燕的初衷是为了做一款安装即可使用、输入体验良好的输入法,当前尚未规划支持自定义方案的计划,当然我会不断完善和丰富输入方案以满足不同人群的需求。若需要自定义方案的话,个人还是建议使用小企鹅来实现。

https://github.com/gurecn/YuyanIme/issues/189

lalalandndnd 发表于 2024-12-17 18:47

舒服了,终于享受到大模型的红利

福猫饭店 发表于 2024-12-17 22:41

dejavuuuuuuuu 发表于 2024-12-16 13:24
这个方案手机上能用吗

小企鹅成功了,直接把电脑的配置文件夹打包过去了
页: [1] 2 3
查看完整版本: 为rime输入方案添加语言模型支持