rime中州韵小狼毫 inputShow lua Filter 输入字符透传滤镜

在 rime中州韵小狼毫 inputShow lua Translator 一文中,我们通过 inputShow.lua 定制了 inputShow_translator,这使得我们的输入方案可以将用户输入的字符透传到候选列表中来。如下👇:
20240102151229
👆上图中我们在候选列表中看到了 inputShow_translator 透传过来的字符 Straa,但是这两个透传过来的字符在候选列表中的位置是比较靠后的。

本文中, 我们通过定义一个 inputShow_Filterfilter,用于调整候选词的顺序,以使 inputShow_translator 透传过来的字符处于合理的位置。

Filter

在 rime中州韵 help lua Translator 一文中有提到 TranslatorFilter 的工作顺序。
20240101191010
以上文所示流程,Filer 工作于 Translator 之后,也就是说 Translator 所抛出的候选词列表,是 Filter 工作的输入项。Filter 是很强大的处理器,其功能包括但不限于:

  • 增删选项
  • 调整次序
  • 修饰选项(comment)

inputShow_Filter.lua

我们在 inputShow_Filter.lua 文档中定义我们的 Filter,脚本如下👇:

-- spaceAppending.lua
-- Copyright (C) 2023 yaoyuan.dou <douyaoyuan@126.com>
--[[这个脚本,作为filter来用,需要结合inputShow的在translator阶段的处理信息进行工作
--]]
local function _inputShow(input, env)local cands = {}local candsSelflg=falselocal candsInput = {}local inputInfo = {str='',len=0,flg=false,candsCntLimitForLen={15,25}}local candsCnt = 0for cand in input:iter() doif cand.comment == 'inputShowStr' then--这个选项表明了前端的输入编码信息inputInfo.str = string.sub(cand.text,4)inputInfo.len = string.len(inputInfo.str)elseif cand.comment == 'inputShow' then--这是一个转换后需要展示的选项inputInfo.flg = truelocal thisCand = {}thisCand.start = cand.startthisCand._end = cand._endthisCand.text = cand.textthisCand.comment = cand.commenttable.insert(candsInput,cand)candsCnt = candsCnt + 1else--这是一个没有转换的选项table.insert(cands,cand)if string.find(cand.comment,'☯') then--标记选项中存在自造词candsSelflg = trueendcandsCnt = candsCnt + 1endif inputInfo.flg and 0~=inputInfo.len then--如果已经捕获取了inputShow选项--根据输入的编码的长度,判断候选项数量是否已经够用if nil~=inputInfo.candsCntLimitForLen[inputInfo.len] thenif candsCnt >= inputInfo.candsCntLimitForLen[inputInfo.len] thenbreakendendendendif 0==inputInfo.len theninputInfo.flg = falseendlocal candsHasBeenYield=0--下面开始抛出候选项--第一步,如果存在自造词,则先抛出自造词local candsFor2nd = {}for idx=1,#cands doif inputInfo.flg thenif string.find(cands[idx].comment,'☯') thenyield(cands[idx])candsHasBeenYield = candsHasBeenYield + 1elsetable.insert(candsFor2nd,cands[idx])endelse--如果不需要处理 inputShow,则不做处理,进行转存table.insert(candsFor2nd,cands[idx])endend--第二步,把编码完全项抛出,即没有comment(此处指的是编码提示的comment内容)的选项,以供优先选用local candsFor4th = {}for idx=1,#candsFor2nd doif inputInfo.flg thenif candsFor2nd[idx].comment == '' thenyield(candsFor2nd[idx])candsHasBeenYield = candsHasBeenYield + 1elsetable.insert(candsFor4th,candsFor2nd[idx])endelse--如果不需要处理 inputShow,则不做处理,进行转存table.insert(candsFor4th,candsFor2nd[idx])endend--第三步,如果有的话,抛出inputShow的选项for idx=1,#candsInput dolocal thisC = candsInput[idx]--此处的comment是 inputShow,为了不为后续造成干扰,此处需要清除comment内容thisC:get_genuine().comment = ''yield(thisC)candsHasBeenYield = candsHasBeenYield + 1end--第四步,如果还有其它选项,则抛出其它选项for idx=1,#candsFor4th doif nil==inputInfo.candsCntLimitForLen[inputInfo.len] thenyield(candsFor4th[idx])elseif candsHasBeenYield<inputInfo.candsCntLimitForLen[inputInfo.len] thenyield(candsFor4th[idx])elsebreakendcandsHasBeenYield = candsHasBeenYield + 1end
endlocal function inputShow(input, env)--获取debug选项开关状态--local debugSwitchSts = env.engine.context:get_option("debug")_inputShow(input,env)
endreturn inputShow

👆以上的脚本中,我们首先依次读取候选项,根据既定的规则对所读取的候选项进行取舍处理。然后再根据既定的规则次序抛出候选项,从而达到对候选项的 增删调整修饰

inputShow_Filter 文档应该位于 用户文件夹lua 内,如下👇:
20240102155438

rime.lua

在 rime中州韵 help lua Translator 一文中,我们完成 translator 方法的定义后,我们需要在 rime.lua 内把 translator 方法转换为 Translator 接口,以便 rime中州韵小狼毫输入法引擎可以引用 Translator 接口。

同样的,我们在 inputShow_Filter.lua 中完成 Filter 方法的定义后,也需要在 rime.lua 内进行 Filter 方法向 Filter 接口的转换/映射。👇如下,我们在 rime.lua 中进行如下配置:

help_translator = require("help")
inputShow_translator = require("inputShow")
inputShow_Filter = require("inputShow_Filter")

👆以上的配置中,我们把 inputShow_Filter 映射成了 inputShow_Filter

wubi_pinyin.custom.yaml

类比对 translator 的引用,我们同样需要在输入方案中配置引用 Filter,此处以 五笔・拼音 输入方案为例,我们在 wubi_pinyin.custom.yaml 做👇如下的配置:

# encoding:utf-8
patch:engine/translators/+:                         #增加以下translator- lua_translator@inputShow_translator- table_translator@custom_phrase            # 指定使用 custom_phrase 进行输入字符的翻译- lua_translator@help_translatorengine/filters:								# 设置以下filter- simplifier- lua_filter@inputShow_Filter				# 这个过滤器用于在特定场景下,增加候选项- uniquifier								# 过滤重复候选项,依赖 simplifiercustom_phrase:  # 设置用户字/词典dictionary: ""user_dict: Custom_phrase  # 指向 Custom_phrase.txt 文档db_class: stabledbenable_completion: falseenable_sentence: trueinitial_quality: 1punctuator:  # 设置标点符号集import_preset: symbols# 设置以下 translator 相关的开关translator/enable_sentence: true          #是否整句连打translator/enable_user_dict: true         #开启用户词典translator/enable_encoder: true           #是否自动造词translator/encode_commit_history: false 	#对已上屏的内容整合成词条,看需求translator/max_phrase_length: 4          	#自动造词的最长字数translator/enable_completion: true  		#编码逐渐提示开关;编码提示

👆以上配置中,请注意观察 engine/filters 节点下的内容,我们在这个节点内增加了 inputShow_Filter

效果欣赏

当我们完成以上配置后,重新部署 rime中州韵小狼毫,则我们即可以观察到我们所配置的 inputShow_Filter 的效果,如下👇:
20240102174527
👆上图中,我们可以观察到,透传的字符 abip 都排到了较前的位置,同时这些字符中的 comment 内容(例如 inputShow, inputShowStr)被移除。这些处理结果,为下一步更丰富强大功能提供了基础。

inputShow_Filter.lua/rime.lua/wubi_pinyin.custom.yaml 文档

👆以上所述 inputShow_Filter.luarime.luawubi_pinyin.custom.yaml 文档,你也可以在 inputShow.zip 下载取胜。

小结

以上就是今天分享的在 rime 中州韵小狼毫输入中配置 inputShow_Filter 的方法。并以此为样例演示了如何定义一个基础的 Filter,并在 rime.lua 中完成接口映射,然后在输入方案文档 wubi_pinyin.custom.yaml 中引用该 inputShow_Filter,从而实现对候选词的调序和修饰。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/230197.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

音视频通信

文章目录 一、音视频通信流程二、流媒体协议1、RTSP2、RTMP3、HLS4、WebRTC 一、音视频通信流程 音视频通信完整流程有如下几个环节&#xff1a;采集、编码、前后处理、传输、解码、缓冲、渲染等。 每一个细分环节&#xff0c;还有更细分的技术模块。比如&#xff0c;前后处…

[足式机器人]Part2 Dr. CAN学习笔记-Ch01自动控制原理

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-Ch01自动控制原理 1. 开环系统与闭环系统Open/Closed Loop System1.1 EG1: 烧水与控温水壶1.2 EG2: 蓄水与最终水位1.3 闭环控制系统 2. 稳定性分析Stability2.1 序言2.2 稳定的分类2.3 稳定的对…

[蓝桥杯2020国赛]答疑

答疑 题目描述 有 n 位同学同时找老师答疑。每位同学都预先估计了自己答疑的时间。 老师可以安排答疑的顺序&#xff0c;同学们要依次进入老师办公室答疑。 一位同学答疑的过程如下&#xff1a; 首先进入办公室&#xff0c;编号为 i 的同学需要 si​ 毫秒的时间。然后同学问…

2020年认证杯SPSSPRO杯数学建模D题(第一阶段)让电脑桌面飞起来全过程文档及程序

2020年认证杯SPSSPRO杯数学建模 D题 让电脑桌面飞起来 原题再现&#xff1a; 对于一些必须每天使用电脑工作的白领来说&#xff0c;电脑桌面有着非常特殊的意义&#xff0c;通常一些频繁使用或者比较重要的图标会一直保留在桌面上&#xff0c;但是随着时间的推移&#xff0c;…

Java数据结构:1. 数据结构前置知识

文章目录 一、初识数据结构二、初识集合框架1. 什么是集合框架2. 集合框架的重要性3. 背后所涉及的数据结构以及算法 三、时间复杂度空间复杂度1. 算法效率2. 时间复杂度&#xff08;1&#xff09;概念&#xff08;2&#xff09;大O的渐进表示法&#xff08;3&#xff09;推导大…

捕捉“五彩斑斓的黑”:锗基短波红外相机的多种成像应用

红外处于人眼可观察范围以外&#xff0c;为我们了解未知领域提供了新的途径。红外又可以根据波段范围&#xff0c;分为短波红外、中波红外与长波红外。较短的SWIR波长——大约900nm-1700nm——与可见光范围内的光子表现相似。虽然在SWIR中目标的光谱含量不同&#xff0c;但所产…

PostgreSQL荣获DB-Engines 2023年度数据库

数据库流行度排名网站 DB-Engines 2024 年 1 月 2 日发布文章宣称&#xff0c;PostgreSQL 荣获 2023 年度数据库管理系统称号。 PostgreSQL 在过去一年中获得了比其他 417 个产品更多的流行度增长&#xff0c;因此获得了 2023 年度 DBMS。 DB-Engines 通过计算每种数据库 2024 …

Amazon CodeWhisperer 免费 AI 代码生成助手体验分享

今年上半年&#xff0c;亚马逊云科技正式推出了实时AI编程助手 Amazon CodeWhisperer&#xff0c;还提供了供所有开发人员免费使用的个人版版本。经过一段时间的体验&#xff0c;我觉得 CodeWhisperer 可以处理编程工作中遇到的很多问题&#xff0c;并且帮助开发人员提高编程效…

高德地图经纬度坐标导出工具

https://tool.xuexiareas.com/map/amap 可以导出单个点&#xff0c;也可以导出多个&#xff0c;多个点可以连成线&#xff0c;可用于前端开发时自己模拟“线“数据

【Apache Doris】自定义函数之 JAVA UDF 详解

【Apache Doris】自定义函数之 JAVA UDF 详解 一、背景说明二、原理简介三、环境信息3.1 硬件信息3.2 软件信息 四、IDE准备五、JAVA UDF开发流程5.1 源码准备5.1.1 pom.xml5.1.2 JAVA代码 5.2 mvn打包5.2.1 clean5.2.2 package 5.3 函数使用5.3.1 upload5.3.2 使用 六、注意事…

华为端口隔离高级用法经典案例

最终效果&#xff1a; pc4不能ping通pc5&#xff0c;pc5能ping通pc4 pc1不能和pc2、pc3通&#xff0c;但pc2和pc3能互通 vlan batch 2 interface Vlanif1 ip address 10.0.0.254 255.255.255.0 interface Vlanif2 ip address 192.168.2.1 255.255.255.0 interface MEth0/0/1 i…

服务器防护怎么做

随着网络攻击的日益猖獗&#xff0c;服务器安全已成为关注的焦点。如何有效防御各种网络威胁&#xff0c;确保数据安全与业务连续性&#xff0c;已成为一项迫切的需求。目前服务器所面临的主要威胁包括但不限于&#xff1a;DDoS攻击、SQL注入、跨站脚本攻击(XSS)、远程命令执行…

大模型笔记 【1】 大模型初探

以下是Andrej Karpathy一小时讲解chatgpt的笔记。 Andrej Karpathy做自动驾驶的人应该比较熟悉&#xff0c;他是李飞飞的学生。在openAI做了一年半的科学家之后&#xff0c;去了特斯拉。在Tesla AI day讲解tesla自动驾驶方案的就是他。 这里我的主要收获是两个 大模型是一个有…

七夕祭

title: 七夕祭 date: 2024-01-03 22:47:05 tags: 传送门 题目大意 解题思路 行的感兴趣的摊点或者列的感兴趣的摊点的数量能被行数或者列数整除&#xff0c;则能够实现要求。“均分”思想&#xff0c;设总感兴趣摊点数 T T T 和行数列数 n n n&#xff0c;当前感兴趣的摊点数…

三、HTML元素

一、HTML元素 HTML 文档由 HTML 元素定义。 *开始标签常被称为起始标签&#xff08;opening tag&#xff09;&#xff0c;结束标签常称为闭合标签&#xff08;closing tag&#xff09;。 二、HTML 元素语法 HTML 元素以开始标签起始。HTML 元素以结束标签终止。元素的内容是…

玩转贝启科技BQ3588C开源鸿蒙系统开发板 —— 首次运行DevEco Studio

接前一篇文章&#xff1a;玩转贝启科技BQ3588C开源鸿蒙系统开发板 —— DevEco Studio下载与安装 上一篇文章详细说明了Dev Eco Stdio的下载即安装过程&#xff0c;本回讲一下首次运行DevEco Studio的过程。 笔者电脑的操作系统是Windows 11。点击“开始菜单”&#xff0c;在弹…

Linux 如何 kill 指定的 python 进程

文章目录 写在前面一、显示python相关的进程二、找到自己想要 kill 的进程&#xff0c;执行下述指令 写在前面 自己的系统是 Ubuntu 20.04 一、显示python相关的进程 ps -ef | grep python显示结果如下 其中&#xff0c;第二列分别是各个进程的 PID 号。 二、找到自己想要…

Python搭建代理IP池实现存储IP的方法

目录 前言 1. 介绍 2. IP存储方法 2.1 存储到数据库 2.2 存储到文件 2.3 存储到内存 3. 完整代码示例 总结 前言 代理IP池是一种常用的网络爬虫技术&#xff0c;可以用于反爬虫、批量访问目标网站等场景。本文介绍了使用Python搭建代理IP池&#xff0c;并实现IP存储的…

人机交互不是人机融合智能

一、人机交互和人机融合智能是两个不同的概念 人机交互是指人类与计算机之间的信息交流和操作方式&#xff0c;包括输入和输出界面、交互技术、用户体验等方面。人机交互的目标是提供用户友好的界面和自然的交互方式&#xff0c;使人类能够与计算机更加高效地进行沟通和协作。 …

pytest conftest通过fixture实现变量共享

conftest.py scope"module" 只对当前执行的python文件 作用 pytest.fixture(scope"module") def global_variable():my_dict {}yield my_dict test_case7.py import pytestlist1 []def test_case001(global_variable):data1 123global_variable.u…