基于Linux平台的Sunpinyin输入法的研究与分析

时间:2022-08-30 04:01:21

基于Linux平台的Sunpinyin输入法的研究与分析

摘 要:在Windows操作系统中,谷歌、搜狗等多种拼音输入法因词库大、识别率高等优点,几乎已经成为装机必不可少的输入法。与之相比,虽然Linux不缺乏类似scim、fcitx的输入法平台,但仍很难找到得心应手的输入法。然而,Sunpinyin输入法的横空出世弥补了这个遗憾。本文首先对Sunpinyin输入法进行整体介绍[1];然后对Sunpinyin输入法引擎进行详细解读,并提出Sunpinyin输入法的优化设想;最后对将蒙古文与Sunpinyin输入法的融合做出了大胆构想。

关键词:Sunpinyin输入法;蒙古文;语言;信息处理

中图分类号:TP393.08

目前,虽然windows操作系统中各种各样的输入法争奇斗艳,但是Windows操作系统作为一种商业性的产品,它对外界是完全封闭[2]。我们都期盼输入法能的源代码能够允许所有的用户对其进行浏览、使用并且加以改进。Linux作为一种将源代码完全开放的Unix类操作系统,它的源代码的开放性以及技术的先进性,为我们提供了一个良好的应用平台。

1 Sunpinyin输入法的构成

Sunpinyin输入法的代码总共包括了后端(src/slm)、前端(src/ime-core)和语言模型(wrapper)三个部分。其中,src/slm目录下存放的是统计语言模型代码,src/ime-core目录下存放的是和输入法相关的一些接口,而各个输入法平台的前端则存放在wrapper目录下。

SunPinyin 输入法的后端即是输入法引擎,它的主要作用是负责SunPinyin输入法的算法并提供最基本的输入法功能,在GNU/Linux上它是以动态链接库的形式存在的。SunPinyin 输入法的前端是输入法的内核和输入法平台的交互界面。SunPinyin 输入法的语言模型由一些数据文件构成,其中包含了我们所熟悉的词库等数据。

2 SunPinyin输入法引擎

2.1 ime部分的概念模型

SunPinyin输入法ime部分的概念模型包括如图1所示的几部分。

其中,位于ime/src/slm目录中的Static SLM部分存放的是访问统计语言模型的代码,位于ime/src/lexicon目录中的Lexicon部分存放的是拼音词表的代码。在View部分中,由Window-Handler接收用户的输入后通过发送call-back(回调)命令,将pre-edit string和candidates返回给Window-Handler用来显示。另外,拼音串的切分是在音节切分器部分使用Lexicon完成的[3]。而历史输入缓存部分的功能是使用一个类Bigram的模型来记录用户最近提交的句子。

2.2 SunPinyin输入法的数据结构及核心算法

早先的SunPinyin组织search lattice的方式是通过使用CBone/Cskeleton进行的,每一个Bone对应一个syllable。SunPinyin 的最新版本SunPinyin2为了加强对模糊切分的支持,lattice采用以单个的拼音字符为单位用来取代以syllable为单位。SunPinyin2中定义了一个CLattice的类对应于原来的CSkeleton,用来表示整个的search lattice。同时,为了对应于原来的CBone/CBoneInnerData,将每一个列称为一个CLatticeFrame。SunPinyin2还在TlexiconState中加入了一些类似m_syls 和m_words等相应的字段已达到支持用户词典的效果。

2.3 用户词典

之前的SunPinyin只是通过用户历史缓存记录用户最近输入的bi-gram信息,并没有应用用户词典。假如出现一个bi-gram的概率比系统词典中的某个uni-gram的概率低的情况,它将不会出现在用户的候选列表中。例如,即使用户频繁的输入即期,但是“机器”这个unigram的概率更高些,所以它很难出现在候选列表中。假如“即期”这个词出现在了候选中,那么它就一定会是第一候选,会有这种情况的发生是因为它是以一个最佳候选句子的形式来呈现给用户的。一旦用户选择了“机器”,将会很难预测“即期”这个词多久出现,此缺陷也是广受用户诟病的。

3 Sunpinyin输入法的优化构想

虽然SunPinyin对于广大用户来说是一款非常实用的输入法,但目前SunPinyin2还没有能够重新实现微软拼音的输入风格并且现有的 Sunpinyin输入法的配置项还比较分散。另外,当前的SunPinyin输入法的拼音切分部分代码中的start的信息是冗余的。现有的CIMIContext可以根据最佳路径搜索来得到正确的切分路径已达到深层优化。

4 基于Linux平台蒙古文Sunpinyin输入法的实现构想

随着现代计算机技术的迅猛发展,蒙古文信息处理工作获得了不小的突破[4]。蒙古文的书写是按列从上到下,多列从左到右排列书写,不与中英文相同[5]。除此之外,蒙古文字库中的蒙文字符的存放方式也是匠心独运,都是呈现逆时针旋转90度后存放[6]。目前,Windows操作系统为了迎合广大蒙古文用户的书写习惯,利用Windows API函数在显示竖直排版的蒙文字符时将字符顺时针旋转90度后输出[7],但是Linux操作系统并不支持字符旋转[8]。

通过上述的分析可知,今后研究的目标将是在Linux操作系统上实现蒙古文Sunpinyin输入法,并且不再让显示的蒙文字采用“躺姿”。为了实现输入法字符编码的统一,防止之前“万码奔腾”局面的重现,该Linux平台上的蒙古文Sunpinyin输入法需要采用Unicode国际标准编码处理蒙古文字符,这也将能够极大地维持蒙古文信息的传播与交流,对满足习惯于使用蒙古文书写的用户需求意义深远。

5 结束语

本文通过对Sunpinyin输入法进行解读,首先概括性介绍了Sunpin输入法的后端、前端、语言模型三部分内容,继而着重描述了Sunpinyin输入法引擎,同时对Sunpinyin输入法的优化提出了一些设想,并对蒙古文与Sunpinyin的融合提出了一些构想,这些设想还仅仅是初步的,仍需要在实践中进一步检索和深化。

参考文献:

[1]周克兰.汉字数码输入法评价体系研究[D].苏州大学,2005.

[2]田寄远.基于Linux SCIM的传统蒙古文Unicode拼音输入法的设计与实现[D].内蒙古师范大学,2009.

[3]刘政怡.中文整句智能输入方法研究[D].安徽大学,2007.

[4]张瑾.规则与统计相结合的蒙古文编码转换的研究与实现[D].内蒙古大学,2009.

[5]额日和木.基于嵌入式Linux的蒙古文字处理方法的研究与实现[D].内蒙古大学,2011.

[6]李佳妍.嵌入式Linux环境下蒙文编辑器的设计与实现[D].内蒙古大学,2008.

[7]吴常福.基于嵌入式Linux的传统蒙古文垂直风格图形用户界面设计与实现[D].内蒙古大学,2009.

[8]王鲁瑞.基于生长函数的植物生长建模研究[D].重庆大学,2011.

作者简介:王亚君(1989-),女,河北保定人,2012级学术型研究生,研究方向:自然语言处理;指导老师:红梅。

作者单位:内蒙古师范大学 计算机与信息工程学院,呼和浩特 010022

上一篇:建筑工程电气安装施工质量的控制与管理 下一篇:盲分离在直升机声信号特征提取中的应用