iDvel / rime-ice

Rime 配置:雾凇拼音 | 长期维护的简体词库
https://dvel.me/posts/rime-ice/
GNU General Public License v3.0
8.93k stars 604 forks source link

如何给部分词典添加标记? #1000

Closed QZGao closed 4 days ago

QZGao commented 3 weeks ago

向大家请教:我引入了部分繁体字词典,但是希望与原有的简体字词典区分开来,这样可以只对繁体字词典进行 OpenCC 转换(如果对全体词典进行转换,容易过度转换,比如「乾」字)。有什么好办法可以给部分词典添加标记吗?

我之前试过给繁体词添加特殊符号,然后在 Lua filter 里面添加判断(只转换带特殊符号的繁体词为简体 之前的尝试 ),但是这样拼音就没办法自动生成了(有些词典没有自带拼音)。cand.comment 我就不知道要怎么使用了,看起来主要用途是存放自动生成的拼音?我可以对 cand.comment 动手脚吗,比如添加一个来源记号什么的?要怎么做呢?

QZGao commented 3 weeks ago

还是说要另外写一个 translator 来处理呢?看文档看得不是太懂……

boomker commented 3 weeks ago

是不是可以理解,你只想对特定的一部分繁体字做 OpenCC 转换?如果是这样的话,可以采用如下方式实现:

  1. OpenCC 目录里做一份繁体字到简体字的映射,以txt 格式存放在文件里
  2. t2s.json 文件里引用上述的映射字典
  3. 在配置方案里,简繁转换节点下引用t2s.json
QZGao commented 3 weeks ago

是不是可以理解,你只想对特定的一部分繁体字做 OpenCC 转换?如果是这样的话,可以采用如下方式实现:

1. 在`OpenCC`  目录里做一份繁体字到简体字的映射,以`txt` 格式存放在文件里

2. 在`t2s.json`  文件里引用上述的映射字典

3. 在配置方案里,简繁转换节点下引用`t2s.json`

我是想直接使用几个古籍繁体词库,和简体词库混着用,但如果不作处理,候选词就会变得简体繁体词都有。所以我想在简体状态下,把繁体词库的词用 Lua filter 转换为简体,而在繁体状态下则反过来,只把简体词库的词转换为繁体。为什么不直接全局转换为简体或繁体,是因为简体字一对多问题很严重,比如「乾」字在古籍中用到的地方不少,全局转换常常处理不好。

QZGao commented 3 weeks ago

理论上只关掉几个一对多汉字的 OpenCC 转换,也可以,在 t2s.json 里面加一个 patch 就行。但是还是想请教大家有没有可能判断词典的来源,如果没有办法也没关系。

boomker commented 3 weeks ago

有没有可能判断词典的来源

可以通过把特定的词典放到一个schema 里,这样词典就有了特定的「来源」,来源是它所在的schema 方案 主方案还要把这个schema 作为依赖引入使用,Lua 脚本里就可以针对这个schema 名称「来源」的词典来操作了

    env.mem = Memory(env.engine, Schema('spec_schema_name'))

还有一种方法: 通过修改cand.type 来间接得知词典来源,本质是得知翻译器来源,算是 hack 方式 参考: https://github.com/hchunhui/librime-lua/issues/245

QZGao commented 3 weeks ago

向您请教:为什么我引入的 schema 只有单字被成功导入,而词组却看不到呢?而且导入的单字的 comment 也是空的,连拼音都没有。我尝试把输入法 schema 直接设置为 rime_ice_tw_dicts 反而能查到这些词组,作为依赖导入的时候却不行。

boomker commented 3 weeks ago

rime_ice_tw_dicts.schema.yaml 它的存在只起到了一个工具方案,没必要写很多配置的,它的主要作用是引用繁体词典。 这行 ,不需要加的。

另外繁体词库应该需要一份字表,放在词库第一位置


你的需求是用Lua对繁体词典做OpenCC 转换对吧,Lua 脚本里有这样的代码吗? 贴图说吧比较方便 你是OpenCC 转换还有特定要求对吧,那应该Lua 脚本里构造的OpenCC 对象得要是包含了特定转换规则的

QZGao commented 3 weeks ago

我现在是还没搞定引入 schema 这一步,所以简繁转换还没开始写。因为我发现只有单个字可以查到,而词组就显示不出来了。不知道是因为什么原因呢?

image image

这是词库中的对应项: image

rime_ice.custom.yaml: image

rime_ice_tw_dicts.schema.yaml: image

boomker commented 3 weeks ago

你尝试把这几个配置项改为false 试试

  enable_encoder: false
  enable_sentence: false
  enable_user_dict: false
QZGao commented 3 weeks ago

还是不行,shan yai 还是打不出来。

boomker commented 3 weeks ago

image ,去掉这行呢。

QZGao commented 3 weeks ago

去掉之后就连 yai 都打不出来了……

mirtlebot commented 2 weeks ago

我会倾向于,将这个词典先手动转换成简体。而不是让 Rime 单独给它处理。