首页
/ Rime-ice 实现中英混合词汇自动造词的技术方案

Rime-ice 实现中英混合词汇自动造词的技术方案

2025-05-21 17:56:00作者:余洋婵Anita

背景介绍

Rime输入法引擎以其高度可定制性著称,而rime-ice作为其优秀配置方案之一,为用户提供了开箱即用的输入体验。在实际使用中,用户经常需要输入中英混合的词汇(如"老ass"、"VIP会员"等),但默认配置下rime-ice无法自动将这些混合词汇加入用户词典。本文将详细介绍如何通过Lua脚本扩展实现这一功能。

技术原理

传统Rime输入法处理中英混合输入时存在两个主要限制:

  1. 中文方案通常不会将包含字母的词汇加入用户词典
  2. 英文方案默认关闭用户词典功能

解决方案的核心思路是:

  1. 利用Lua脚本监听用户提交的文本
  2. 检测文本中是否包含中英混合内容
  3. 将符合条件的词汇写入英文方案的用户词典
  4. 通过自定义编码实现混合词汇的快速输入

实现步骤

1. 准备Lua脚本

创建cn_en_filter.lua文件,内容如下:

-- cn_en_filter.lua
-- 将上屏的中英混合词汇写入词典
-- 英文方案(主方案、副方案)的用户词典需要打开

local F = {}

function F.init( env )
    local config = env.engine.schema.config
    local schema = config:get_string( 'en_schema' ) or 'melt_eng'
    F.en_dict = Memory( env.engine, Schema( schema ) )

    if F.en_dict then
        env.commit_notifier = env.engine.context.commit_notifier:connect(
                                  function( ctx )
                local commit_text = ctx:get_commit_text()
                if utf8.len( commit_text ) ~= #commit_text and commit_text:find( '%a' ) then
                    local commit_text_en = commit_text:match( '%a+' )
                    local commit_code = ctx.input
                    if commit_code:find( commit_text_en ) then
                        F.update_dict_entry( commit_text, ctx.input )
                    end
                else
                    return
                end
            end
                               )
    end
end

function F.update_dict_entry( text, code )
    if #text == 0 then return end
    local e = DictEntry()
    e.text = text
    e.custom_code = code .. ' '
    F.en_dict:update_userdict( e, 1, '' )
end

function F.func( input, env ) for cand in input:iter() do yield( cand ) end end

function F.fina( env ) if F.en_dict then env.commit_notifier:disconnect() end end

return F

2. 修改配置文件

在rime-ice的配置文件中进行以下调整:

  1. 确保英文方案的用户词典功能已开启
  2. 在中文方案的过滤器中添加Lua过滤器

示例配置片段:

# 在中文方案的配置中
filters:
    - lua_filter@*cn_en_filter
    - uniquifier
en_schema: melt_eng

# 在英文方案的配置中
melt_eng/+:
  enable_user_dict: true

3. 部署应用

完成配置修改后,重新部署Rime输入法即可生效。

功能特点

  1. 智能检测:自动识别包含字母的中英混合词汇
  2. 编码保留:记录用户输入时的完整编码,便于后续输入
  3. 无缝集成:与现有输入流程完美融合,不影响其他功能
  4. 性能优化:仅在检测到混合词汇时才进行词典更新操作

使用示例

以输入"老ass"为例:

  1. 首次输入时通过全拼或双拼逐字选择
  2. 脚本自动将"老ass"加入用户词典,并记录输入编码(如双拼的"lc ass")
  3. 后续输入时可直接通过编码"lc ass"快速输入该词汇

注意事项

  1. 确保英文方案的用户词典功能已开启
  2. 脚本需要放置在正确的Lua脚本目录下
  3. 不同Rime版本可能需要微调脚本实现
  4. 大量混合词汇可能会增加用户词典体积

总结

通过这个Lua脚本扩展,rime-ice实现了中英混合词汇的自动学习功能,大大提升了输入效率。这种方案展示了Rime输入法强大的可扩展性,用户可以根据自身需求灵活定制输入体验。对于经常需要输入专业术语、网络用语等混合内容的用户来说,这一功能尤为重要。

登录后查看全文
热门项目推荐

热门内容推荐

项目优选

收起
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
178
262
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
868
514
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
130
183
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
272
311
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
398
373
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.07 K
0
ShopXO开源商城ShopXO开源商城
🔥🔥🔥ShopXO企业级免费开源商城系统,可视化DIY拖拽装修、包含PC、H5、多端小程序(微信+支付宝+百度+头条&抖音+QQ+快手)、APP、多仓库、多商户、多门店、IM客服、进销存,遵循MIT开源协议发布、基于ThinkPHP8框架研发
JavaScript
93
15
note-gennote-gen
一款跨平台的 Markdown AI 笔记软件,致力于使用 AI 建立记录和写作的桥梁。
TSX
83
4
cherry-studiocherry-studio
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
599
58
GitNextGitNext
基于可以运行在OpenHarmony的git,提供git客户端操作能力
ArkTS
10
3