• 小狼毫输入法


    小狼毫输入法配置中,speller/algebra通过设置拼写运行,让输入法实现容错简拼模糊拼音等功能。

    拼写运算

    拼写运算是借助正则表达式实现其字符串处理能力,进一步利用数学知识,构造出建立在输入法编码集合上的代数系统,运算步骤以yaml字符串列表的形式定义,每个列表项描述一项运算,包含基于Perl规范的正则表达式。

    • 转换 /Transliteration
      依次将拼写中<左字符表>的音符替换为<右字母表>对应位置的字符。左、右字母表包含相同数目的Unicode字符。
    格式:xlit/<左字母表>/<右字母表>/
    实例:xlit/abc/ABC/  运算元:abracadabra  结果:ABrACAdABrA
    
    • 变形/Transformation
      若拼写字符串与<模式>匹配,则将所匹配的部分改写为<替换式>;否则拼写保持不变。<模式><替换式>遵循Perl正则表达式语法。
    格式:xform/<模式>/<替换式>/
    实例:算式 xform/^([nl])ue$/$1ve/  运算元:nue  结果:nve
    效果:输入 nue(lue) 可以获取源码表中与编码 nve(lve)对应的候选
    
    • 消除/Erasion
      若拼写与<模式> 完全匹配,则将该拼写从有效拼写集合中消除。
    格式:erase/<模式>/
    实例:算式 erase/^.*d$/  运算元:dang1  结果:带声调的拼音不可用
    
    • 派生/Derivation
      若对拼写做正则模式匹配、替换而获得了新的拼写,则有效拼写集合是包含派生前后的拼写;否则仅保留原拼写。
    格式:derive/<模式>/<替换式>/
    实例一:算式 derive/^([nl])ue$/$1ve/  运算元:nue  结果:nve
    效果:输入nve或nue(lve或lue) 均可获得源码表中与编码 nue(lue) 对应的候选
    
    实例二:算式 derive/^[nl](.*)$/l$1/  运算元:na  结果:la
    效果:输入la可获取源码表中与编码na、la对应的候选;输入na,候选仍为码表中编码为na的候选
    
    • 模糊/Fuzzing
      执行派生运算;派生出的拼写将获得「模糊」属性,可设定将其用作构成词组的简码,但不用与输入单字。
    格式:fuzz/<模式>/<替换式>/
    实例:算式 fuzz/^([a-z]).+([a-z])$/$1$2/
    效果:以首、尾码为多字母音节码的构词码。
    注:需配合 script_translator 的选项 `translator/strict_spelling: true` 方可限定该拼写不用于输入单字。
    
    • 缩略/Abbreviation
      执行派生运算,派生出的拼写将获得「缩略」属性,会在音节切分时与通常的拼写做区分处理。
    格式:abbrev/<模式>/<替换式>/
    实例:算式 abbrev/^([a-z]).+$/$1/
    效果:以首字母为多字母音节码的缩写。
    

    例子

    例1:朙月拼音(luna_pinyin.schema.yaml),定义简拼、容错拼写。

    ....
    speller:
      algebra:
        - abbrev/^([a-z]).+$/$1/          # 简拼(首字母)
        - abbrev/^([zcs]h).+$/$1/         # 简拼(zh, ch, sh)
        - derive/^([nl])ve$/$1ue/         # 设 nue = nve, lue = lve 
        - derive/ui$/uei/                 # 设 guei = gui,...
        - derive/iu$/iou/                 # 设 jiou = jiu,...
        - derive/([aeiou])ng$/$1gn/       # 容错 dagn = dang,...
        - derive/ong$/on/                 # 容错 zhonguo = zhong guo
        - derive/ao$/oa/                  # 容错 hoa = hao,...
        - derive/([iu])a(o|ng?)$/a$1$2/   # 容错 tain = tian,...
    ....
    

    例2:在拼音输入法中定义模糊音zh=z, ch=c, sh=s, n=l, en=eng, in=ing

    ...
    speller:
      algebra:
        - derive/^([zcs])h/$1/
        - derive/^([zcs])([^h])/$1h$2/
        - derive/^n/l/
        - derive/^l/n/
        - derive/([ei])n$/$1ng/
        - derive/([ei])ng$/$1n/
        # 模糊拼音先于简拼,可令简拼支持模糊拼音
        - abbrev/^([a-z]).+$/$1/
        - abbrev/^([zcs]h).+$/$1/
    ...
    
  • 相关阅读:
    c# 生成、读取xml
    http长连接与短连接
    p.net 子页面刷新父页面,页面自动刷新方法汇总
    遍历页面上所有控件
    从数据库导入到Excel表格(同时传四个表的数据到一个Excel中)
    .net海量数据分页通用存储过程
    SQL大数据量分页存储过程效率测试
    给一个接口传递参数,并接收返回的参数
    在asp.net中长内容自动分页的实现.NET教程
    GridView72般技巧
  • 原文地址:https://www.cnblogs.com/lqqgis/p/13846504.html
Copyright © 2020-2023  润新知