V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
vitaminx
V2EX  ›  macOS

为何我会自己调校输入法 Rime

  •  
  •   vitaminx · 2023-04-10 15:14:04 +08:00 · 3235 次点击
    这是一个创建于 383 天前的主题,其中的信息可能已经有所发展或是发生改变。
    输入法不是最基础的软件吗?不是应该开箱即用吗?不是连网更智能吗?

    我曾经也是这样认为的,多年前第一次用第三方输入法是因为系统自带输入法对中文支持不好,于就开始了折腾之旅,从智能 ABC 到谷歌拼音,再到后来的恶狗( sou go )拼音......

    谷歌拼音用到它停更

    恶狗拼音是用的最长的,应该有上十年,可以自动保存个人词库并排序各个终端同步更新,记忆中好像输入了上百万字。一直用的好好的,有一天看到一篇搜狗 “ 作恶 ” 的文章,再好奇心驱使下 Google 了一下相关信息,才发现恶狗真的很恶。直到这个时候我还没有放弃它,抱着我是良民的心态、收集用户隐私信息是国内各大 App 通用做法的心态,加之使用习惯已经被它绑架了,就一直用着!

    直到有一天我发现我的使用习惯全部丢失,虽然从它的界面看一切数据都在,但是在输入的时候智能排序、个人词库都不起作用,多方研究得知原因应该是恶狗切换帐号系统或者升级软件架构的时候丢失了最早一批用户(搜狐油箱注册)数据,虽然数据丢失了但是终于解绑了。

    这个时候我还抱着侥幸的心态重新驯化恶狗,希望能够驯化成 “ 哈巴狗 ” ,悲剧从这个时候开始了,各种莫名其妙的广告接踵而至,刚跟朋友约个饭接着就来了餐厅广告、刚给美女点个赞就各种 PS 美女、刚讨论一下手机打开 App 就满屏幕国产千元机......真是所谓的千人前面。

    在此回到 Google 找解决方法,然后开始跟恶狗各种躲猫猫,屏蔽恶狗软件连网、屏蔽恶狗整个目录和数据库连网......虽然暂时阻止了恶狗连网,但恶狗还在后台锲而不舍的尝试,虽然这点系统开支对性能影响微乎其微,但每次想到它在网里不断撞就心烦。最后再次回到系统输入法......

    此时不论是 Windows 还是 macOS 系统输入法已经足够强大了......这样一直用了几年。

    直到升级到 macOS 12 Monterey 后系统输入法卡顿,在 V2EX 上求助知道了 Rime

    从此开始了 Rime 折腾之旅,彻底解决了输入法卡顿、自定义词库真方便,网上各种配置好的成品词库也够用......直到有一天发现 emoji 开关无效(直接表现就是在侯选词中没有 emoji 图标),开始了折腾之旅,找方法、看配置文件、改代码......一顿操作下来,还是不理想,明月拼音.简体字方案还是无法显示 emoji ,有人说这个问题是因为明月拼音·简体字是从繁体字转换过来的原因。但是网上绝大的多数词库和配置明月拼音·简体字都是从繁体字转换过来的,于是想自己整一套配置,搜了很多教程都很零碎,没有找到详细讲解配置文件结构如何相互补全调用的资料,更没有部署后台文件生成步骤的资料。

    求推荐比较全面的 Rime 配置教程,最好是深入说明每行代码的作用!谢谢!
    第 1 条附言  ·  2023-04-10 16:51:02 +08:00

    我的外挂方案 “ luna_pinyin_simp.custom.yaml ” 配置为:

    patch:
      switches:
        - name: ascii_mode # 0 中文,1 英文
          reset: 0
          states: ["中文", "西文"]
        - name: full_shape # 全角/半角符号开关
          states: ["半角", "全角"]
        - name: show_emoji # Emoji 开关
          reset: 1
          states: ["🈚️️\uFE0E", "🈶️️\uFE0F"]
        - name: zh_simp # (※1) 繁简转换
          reset: 1
          states: ["漢字", "汉字"]
        - options: ["utf8", "gbk", "gb2312"] # (※2)字符集选单
          reset: 0 # 默认 UTF8
          states:
            - UTF-8
            - GBK
            - GB2312
    
      simplifier:
        option_name: zh_simp
    
      # 启用罕见字過濾
      engine/filters:
        - simplifier
        - simplifier@emoji_conversion
        - uniquifier
        - charset_filter@gbk # (※3) GBK 过滤
        - single_char_filter
    
      emoji_conversion:
        opencc_config: emoji.json
        option_name: show_emoji
        tags: abc
        #tips: all    # Emoji 显示注释
    
      # 改写拼写运算,含英文的词汇(luna_pinyin.cn_en.dict.yaml)不影响简拼
      "speller/algebra/@before 0": xform/^([b-df-hj-np-tv-z])$/$1_/
    
      # 载入朙月拼音扩充词库
      "translator/dictionary": luna_pinyin.extended
    
      # 加载easy_en依赖
      "schema/dependencies/@1": easy_en
      # 载入翻译英文的码表翻译器,取名为 english
      "engine/translators/@4": table_translator@english
      # english翻译器的设定项
      english:
        dictionary: easy_en
        spelling_hints: 9
        enable_completion: false # 是否启用英文输入联想补全
        enable_sentence: false # 混输时不出现带有图案的英文
        initial_quality: -0.5 # 英文候选词的位置, 数值越大越靠前。
    
      # 快捷表情和符号
      punctuator:
        import_preset: symbols_custom # 从 symbols_custom.yaml 引入自己自定义的符号、emoji等符号
        half_shape:
          "#": "#"
          "*": "*"
          "`": "`"
          "~": "~"
          "@": "@"
          "=": "="
          '\': "、"
          "%": "%"
          "$": ["¥", "$"]
          "|": ["|", "|", "·"]
          "/": ["/", "÷"]
          "'": { pair: ["「", "」"] }
          "[": " ["
          "]": "] "
          "<": "《"
          ">": "》"
    
      recognizer/patterns/punct: "^/([a-z]+|[0-9]0?)$"
    
      # 模糊拼音  
    ......   
    

    上面的配置预选词里面不出现 emoji
    请问配置有问题吗?

    第 2 条附言  ·  2023-04-10 18:01:00 +08:00
    非常感谢各位,问题找到了
    是 emoji 词库有重复
    一直找配置代码问题
    再次感谢 @Vitta https://github.com/rime/squirrel/issues/708
    去重后就解决了





    附上去重脚本:

    -----------------------------------------------------
    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    #“emoji.txt”文件去重,在文件目录下执行

    input_file = "emoji.txt"
    output_file = "output.txt"

    # 读取输入文件并将每一行分割成两个部分
    with open(input_file, "r", encoding="utf-8") as f:
    lines = [line.strip().split("\t") for line in f]

    # 使用一个字典来存储条目和对应的表情符号列表
    entries = {}
    for line in lines:
    entry = line[0]
    emoji = line[1]
    if entry not in entries:
    entries[entry] = []
    entries[entry].append(emoji)

    # 将条目和对应的表情符号列表写入输出文件中
    with open(output_file, "w", encoding="utf-8") as f:
    for entry, emojis in entries.items():
    line = f"{entry}\t{' '.join(emojis)}\n"
    f.write(line)
    -----------------------------------------------------

    请问有没有比较好的 emoji 词库,我找了几个都不是很理想!要么显示不是想要的要么就显示太少
    请你们都用什么 emoji 词库?
    26 条回复    2024-04-01 18:27:48 +08:00
    NoOneNoBody
        1
    NoOneNoBody  
       2023-04-10 15:34:18 +08:00
    每行说明只有官方 wiki

    拿来主义:
    github 上面很多现成方案

    关于候选 emoji
    macOS 不晓得
    linux fcitx4-rime 网上能搜到,记忆中很简单,fcitx5-rime 改了,没研究,不过现在应该也有解决方案了
    windows 就是加个 opencc ,github 上找个现成的配置,把 opencc 目录 copy 到自己的 Rime 里面就行
    vitaminx
        2
    vitaminx  
    OP
       2023-04-10 15:40:37 +08:00
    @NoOneNoBody macOS arm64 也是加 opencc 配置了但是明月拼音·简体字不行!目前解决这个的方案都是用其他输入法方案,比如小鹤双拼,据说问题是明月拼音·简体字是繁体字转换过来的
    TrembleBeforeMe
        3
    TrembleBeforeMe  
       2023-04-10 15:57:03 +08:00
    rime 在鹅鸭杀里面无法输入
    uplee
        4
    uplee  
       2023-04-10 16:00:06 +08:00
    mac 用挺好的,win 版我看最后更新时 19 年
    NoOneNoBody
        5
    NoOneNoBody  
       2023-04-10 16:14:54 +08:00
    opencc 里面就三个文件
    emoji.json
    emoji_category.txt
    emoji_word.txt
    里面就是繁简转换

    另外 rime 根目录有个 emoji.schema.yaml 文件,不知道有没有用

    拼音 yaml 里面加上这几行
    ============
    "switches/@next":
    name: emoji_suggestion
    reset: 1
    states: [ "🈚", "🈶" ]
    "engine/filters/@before 0":
    simplifier@emoji_suggestion
    # "engine/filters/@next": lua_filter@single_char_first_filter
    emoji_suggestion:
    opencc_config: emoji.json
    option_name: emoji_suggestion
    tips: none
    ============
    印象中没有其他了,10+年前弄的,换机一直用备份,年代久远,所以有点记不清了

    还是拿来主义吧,github 上面我曾见过日、韩、泰、俄、德、藏、蒙的现成配置
    首次配置慢慢摸索是少不了的,尤其是合并几种语言,但弄好后就像我这样,10 年一直用备份

    完全搞不定的话,另外还有两种傻瓜方式 [穷举] :
    1. 去网上下个 emoji 字符表,然后逐个设键(注意小心编辑),copy 进 custom_phrase.txt
    我在这里面都加了百多个原方案没有的字符
    2. 配置 yaml 里面用 symbols:语法
    ================
    symbols:
    "/fs": [½,‰,¼,⅓,⅔,¾,⅒]
    "/dq": [🌍,🌎,🌏,🌐,🌑,🌒,🌓,🌔,🌕,🌖,🌗,🌘,🌙,🌚,🌛,🌜,🌝,🌞,⭐,🌟,🌠,⛅,⚡,❄,🔥,💧,🌊]
    "/sj": [🕐, 🕑, 🕒, 🕓, 🕔, 🕕, 🕖, 🕗, 🕘, 🕙, 🕚, 🕛, 🕜, 🕝, 🕞, 🕟, 🕠, 🕡, 🕢, 🕣, 🕤, 🕥, 🕦, 🕧]
    "/man": [ 分数:/fs, 地球:/dq, 时钟:/sj ]
    =================
    shyangs
        6
    shyangs  
       2023-04-10 16:18:58 +08:00
    我不用明月拼音.簡體字方案。

    你先和其他人確定一下,是你自己改了方案配置才產生出來的 bug, 還是預設出廠就有的 bug.

    如果是預設出廠就有的 bug, 可以去 Rime 的 GitHub 回報。
    NoOneNoBody
        7
    NoOneNoBody  
       2023-04-10 16:20:49 +08:00
    呃,格式没了
    "switches/@next":
    --name: emoji_suggestion
    --reset: 1
    --states: [ "🈚", "🈶" ]
    "engine/filters/@before 0":
    --simplifier@emoji_suggestion
    --# "engine/filters/@next": lua_filter@single_char_first_filter
    emoji_suggestion:
    --opencc_config: emoji.json
    --option_name: emoji_suggestion
    --tips: none

    punctuator:
    --import_preset: symbols
    --symbols:
    ----"/fs": ……
    ……

    行首的 -- 替换为缩进
    vitaminx
        8
    vitaminx  
    OP
       2023-04-10 16:22:27 +08:00
    @NoOneNoBody “copy 进 custom_phrase.txt” 这个方法不错,我试试看。“symbols:语法”我一直用,但专门调用还是不方便
    atao
        9
    atao  
       2023-04-10 16:23:00 +08:00
    找了一个现成的方案,简单改了下配置在用,整体感觉蛮好。

    倒是很期待 iPhone 上有比较好的 Rime 输入法
    vitaminx
        10
    vitaminx  
    OP
       2023-04-10 16:23:50 +08:00
    @shyangs 我就是在 GitHub 看到说 明月拼音·简体字 有问题的!好像也没有解决方案!给的解决方案是不用 明月拼音·简体字,我换成小鹤双拼试试看把
    Vitta
        11
    Vitta  
       2023-04-10 16:51:01 +08:00
    emoji 失效是不是支持透明的版本之后。
    另外推荐下音形或者纯形的方案,这样不用养词库,不用选字
    vitaminx
        12
    vitaminx  
    OP
       2023-04-10 16:52:20 +08:00
    @NoOneNoBody 这个试了还是一样
    @Vitta 请问 “ 音形或者纯形的方案 ” 是指什么?
    vitaminx
        13
    vitaminx  
    OP
       2023-04-10 16:54:37 +08:00
    不显示 emoji 图标实际情况如下:

    meisen
        14
    meisen  
       2023-04-10 17:00:17 +08:00
    到电报群里问 效率会不会高点 https://t.me/rimeim
    croient
        15
    croient  
       2023-04-10 17:03:54 +08:00
    最近在用这个,推荐一下 https://github.com/iDvel/rime-ice
    Vitta
        16
    Vitta  
       2023-04-10 17:04:04 +08:00
    @vitaminx #12
    1. 不显示 Emoji 可能是因为 emoji 里面有重复的,可以看这里 https://github.com/rime/squirrel/issues/708
    2. 比如 星空键道 6 ,小鹤音形,五笔,仓颉等等
    vitaminx
        17
    vitaminx  
    OP
       2023-04-10 17:08:23 +08:00
    @meisen 群力效率奇低,而且很容易被复盖

    @croient 这个我也用过,不好用,尤其是竟然无法设置横向显示

    @Vitta 谢谢,我试试去重!
    Yzh361
        18
    Yzh361  
       2023-04-10 17:48:48 +08:00 via Android
    我也在用,我电脑上的 rime 会出现一些奇怪的候选词… 不知道是否自定义词库的缘故
    vitaminx
        19
    vitaminx  
    OP
       2023-04-10 17:56:04 +08:00
    @Vitta 非常感谢,就是这个问题,一直看代码问题没有想到 emoji 词库有重复,现在好了!



    lklzm
        20
    lklzm  
       2023-04-11 00:48:21 +08:00
    我是特地不显示 Emoji ,直接导入的 rime-ice
    ccqnb
        21
    ccqnb  
       2023-04-11 04:19:19 +08:00 via Android
    我在 windows 上用的是小狼毫+雾凇拼音的方案,感觉很不错,已卸载某狗
    genesislive
        22
    genesislive  
       2023-04-11 08:28:12 +08:00
    皮肤看起来不错。

    转到雾凇拼音了,自己折腾不来。
    dufu1991
        23
    dufu1991  
       2023-04-11 09:53:23 +08:00
    @atao 我也很期待官方出 iOS 版,可以定期通过 iCloud 同步词库和输入数据就更好了。收费我也愿意。
    vitaminx
        24
    vitaminx  
    OP
       2023-04-11 11:21:19 +08:00
    @lklzm 各有所爱

    @ccqnb Windows 上小狼毫唯一的问题就是皮肤太丑了,看管了 macOS 回去看 Windows 10 简直丑暴了

    @genesislive 雾松不是习惯

    @dufu1991 用 OneKing 或者 Google Drive 一样!
    atao
        25
    atao  
       2023-04-11 14:58:43 +08:00
    @dufu1991 是呀
    frankilla
        26
    frankilla  
       26 天前
    我是雾凇拼音方案,问题是以前显示 emoji 的,现在也不显示 emoji ,不知道哪里出的问题。自己搞不定。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2883 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 14:36 · PVG 22:36 · LAX 07:36 · JFK 10:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.