【“麒麟杯”获奖作品风采】一等奖:奥云蒙古文智能输入法
由中国软件行业协会、开放原子开源基金会、中国计算机学会开源发展委员会、中国开源软件推进联盟指导,openKylin开源社区、麒麟软件有限公司、国防科技大学、信创海河实验室联合主办的第十二届“麒麟杯”全国开源应用软件开发大赛已于10月20日完美落幕,自2023年4月开赛以来,吸引了来自全国60+高校的345组队伍报名参赛,经过层层选拔和严格评审,最终评选出大赛的一、二、三等奖及优胜奖,后续主办方将陆续展示开发者们的获奖作品风采,本篇带来一等奖《奥云蒙古文智能输入法》作品展示!
01作品介绍
我国是多民族、多语言、多文种的国家。随着科技的不断进步和全球化的发展,语言和文字的保护、传承和发展变得尤为重要。这些语言和文字是这些地区文化和身份认同的重要组成部分。然而,由于蒙古语数字化进程的滞后和缺乏相应的工具支持,这些民族语言和文字在数字化时代面临着许多困难和挑战。奥云蒙古文智能输入法旨在为用户提供一种便捷、高效、准确的输入体验,帮助用户轻松输入蒙古文,并满足他们在不同场景下的输入需求。
奥云蒙古文输入法支持蒙古文的输入、编辑和显示,其左竖式蒙古文垂直排版方式符合传统蒙古文读写习惯,助力蒙古语言文字信息化成果更好地惠及群众。
作品地址:https://gitee.com/openkylin/fcitx-aoyun
02作品亮点
(1) 功能方面
- 语音输入-用户可以通过语音输入蒙古文,并方便不擅长键盘输入的用户。
- 模糊输入-针对用户输入时的误差和拼写错误,自动矫正错误并提供正确的建议。
- 联想输入-通过智能联想算法,输入法能够根据用户的输入习惯和上下文,提供 准确的词语和短语建议。
- 特殊符号输入-输入法提供包括蒙古文音标、希腊拉丁字母、数字序号、标点符 号、数学和音标等在内的众多符号,满足用户在输入过程中的各种需求。
- 自定义短语快速输入-输入法允许用户自定义常用短语和表达,方便用户快速输 入常用内容,提高工作效率。
- 用户导入词库-针对用户大量导入自定义常用短语需求,输入法允许用户批量导 入词库,实现特定领域术语的快速输入。
- 支持国标与共享工程等多种编码-输入法参考多个编码标准文件,提供国标编码 与共享工程编码等多种编码选项,确保在不同环境下的字形正确显示。
(2) UI方面
1.蒙古文竖排排版
我们对所有配置项以及输入文字均采用竖排排版,符合用户的文字使用习惯。
2.多语言虚拟键盘
我们同时提供了包括传统蒙古文、托忒文、满文以及西里尔文等多个语种的虚拟键盘。
3.语音识别输入及托盘
我们还对托盘图标、语音输入框等进行了重绘。
4.多种自定义字体
如下图,在配置页的绿色部分,我们提供了8种字体,供用于选择。
03技术原理
01字符编码
蒙古文字符编码是蒙古文输入法的基础。蒙古文字符通常使用Unicode编码,其中包含了蒙古文字母、标点符号和其他特殊字符。
02键盘布局
键盘布局决定了按键与蒙古文字符的对应关系。根据蒙古文拼音输入的规则,我们将蒙古文字符对应的拉丁文分配到键盘的不同位置,使得输入时能够快速、准确地输入蒙古文字符。
03拉丁输入
蒙古文输入法通常支持拉丁输入,即用户根据蒙古文字符的拉丁逐个输入字符,然后输入法根据拼音进行匹配和推断,给出候选词或候选字。
04候选词推荐
奥云输入法会根据用户输入的拉丁或部分蒙古文字符,通过词库或语言模型进行匹配和推断,给出可能的候选词列表。用户可以从候选词列表中选择正确的蒙古文词汇。
05自动纠错
奥云输入法同时提供自动纠错功能,通过比对用户输入的拉丁或蒙古文字符与词库中的词汇、语法规则等进行匹配,尽可能自动纠正用户输入的错误。
03用户词库管理
支持用户自定义词汇的添加和管理,用户可以将常用的蒙古文词汇加入到个人词库中,以便输入法更好地适应个人的输入习惯和专业领域需求。
04开发难点
1. 蒙古文的竖式排版问题
- 字符形状:蒙古文字母的形状通常是竖直方向的,并且字符之间有一定的连写规则。将用于书写水平文字的绘制方法应用于竖排绘制可能会导致字符形状的变形或不连贯,使得阅读和理解文字变得困难。
- 连字符和标点符号:蒙古文中的连字符和标点符号通常与相邻字符连在一起,但在竖式排版中,它们可能需要放置在不同位置。这会导致排版混乱和不一致性。
- 排版规则:蒙古文具有一些特定的排版规则,例如字母间的连写和字母形态的变化。这些规则在横式排版中得到了很好的支持,但在竖式排版中需要重新定义和实现,增加了复杂性和困难。
2. 蒙古文字形内码的编码转换问题
- 多种编码方案:蒙古文字形的编码存在多种方案,不同的编码方案使用不同的字符映射表和编码规则,导致在进行编码转换时需要了解和处理不同的方案。
- 字符映射和对应关系:蒙古文字形与字符的映射关系复杂,不同的编码方案可能对应不同的字符集和编码表。在进行编码转换时,需要准确地确定字符之间的对应关系,以确保转换的准确性。
- 编码规则和转换算法:蒙古文字形的编码涉及到一些特殊的规则和算法,如字符组合、音节拆分和调序等。进行编码转换时,需要了解和遵循这些规则和算法,以确保转换的正确性和一致性。
05获奖感受
在文章最后,我们想说,非常感谢麒麟杯主办方—openKylin社区提供的比赛平台。通过参加这次比赛,我们不仅对国产操作系统及Linux内核都有了更深入的认识,同时也获得了宝贵的经验和机会,以及与其他开发者交流和学习的平台。在参赛过程中,从初期开发的疑难解答到决赛阶段的专家答疑辅导,主办方深入到了比赛的整个流程,务求为参赛者提供一个更加便利的环境,使得我们有了非常棒的参赛体验。
此次输入法的开发所使用的fcitx框架对我们来说是一个完全陌生的领域。由于之前没有相关的开发经验,导致项目开发初期,遇到了一些技术难题,对框架的理解和使用存在一些困惑。这让我们整个队伍感到有些不安和无助,担心是否能够顺利完成项目。但这时导师耐心地解答了我们遇到的问题,并给予了很多的指导和建议。这使我们逐渐克服了困难,更好地理解和运用了框架,进而最终完成了整个项目。最终,我们很高兴看到我们的项目在比赛中获得了第一名。这个成绩不仅代表了我们团队的努力和奉献,也证明了我们在克服困难和挑战中取得的成长和进步。这段经历教会了我勇敢面对挑战的重要性,同时也体现了团队合作和互助的力量。
(右二飞龙教授、右一呼斯楞、左一阿鲁斯、左二苗萌)
openKylin(开放麒麟)社区旨在以“共创”为核心,在开源、自愿、平等、协作的基础上,通过开源、开放的方式与企业构建合作伙伴生态体系,共同打造桌面操作系统顶级社区,推动Linux开源技术及其软硬件生态繁荣发展。
社区理事成员单位包括麒麟软件、普华基础软件、中科方德、麒麟信安、凝思软件、一铭软件、中兴新支点、元心科技、中国电科32所、技德系统、北京麟卓、先进操作系统创新中心、飞腾、兆芯、龙芯中科、景美、京东科技、平头哥、申泰信息、海光等21家产业同仁和行业机构。
来源:内大小分队
审核:openKylin