了解更多开源请访问:51CTO开源基础软件社区https://ost.51cto。com【本期看点】老子来访系列《老子的白日梦——基于OpenHarmony的中文拼音输入法》。概述本文的主要内容包括以下两个方面:(1)中文输入法原理及相关学术研究论文。输入法将输入数据触摸事件或按键事件转换成其他更丰富的字符。(2)OpenHarmony标准系统输入法框架,研究OpenHarmony平台输入法的基本框架,掌握输入法和用户交互的过程,在此基础上,可以实现一个最基本的可以与用户交互的中文输入法用户。输入法框架主要是连接应用程序和输入法,保证应用程序可以通过输入法输入文字。题外话:王小波也做过输入法开发。他也是中国最早的程序员之一。他用自己的输入法写文章。据说体验还不错。在那个时代,开发自己的输入法是一个多么了不起的想法。中文拼音输入法原理在安装了OpenHarmony标准系统的设备上编辑中文信息,总是需要中文输入法。拼音输入法是最合理的中文输入法。拼音输入法属于编码输入法。它的基本实现原理依赖于拼音与汉字之间的编解码。拼音输入法的诞生面临着严峻的挑战:现代汉语的拼音音节大约有410个。,它不成比例地代表了6000多个常用汉字,这导致拼音到字符映射中存在严重的歧义。解决当今拼音输入法关键问题的学术努力集中在推进拼音到字符的转换上。Pinyin-to-Chinese(PTC)pinyin-to-Chinese(PTC)pinyin-to-Chinese(PTC)拼音转换技术是汉语拼音输入法中最关键的部分。拼音转换就是将一串拼音流转换成对应的汉字作为输出。可以看作是一个从拼音到汉字的翻译过程。目前,音字转换技术大致可分为以下几类:以句规为约束的转换。使用模板匹配技术执行转换。转换基于统计知识。Up和down是上下文约束的转换。以上四种转换方式并不是相互独立的,它们之间或多或少存在着联系。汉字集通常包含10000-20000个字符左右,但实际在日常生活中使用的汉字却少得多。通常,2500个最宽字符可以覆盖97.97%的文本,3500个字符可以覆盖99.48%的文本。所有的合法字符都存储在字库中,中文输入系统只是试图在拉丁字母编码和中文字体之间建立一个高效的映射。拼音转汉字分为拼音流切分和音节转汉字两个阶段。这两个阶段看似简单,但实现起来却比较复杂。有很多因素需要考虑,包括转换精度和时间复杂度。、空间复杂度等,下面对这两个阶段的设计进行具体说明:拼音分词过程分为拼音分词和分词分词两个阶段第一阶段:拼音分词ChineseWordSegmentation1.一般情况用户输入时,只输入一串拼音流,拼音流切分就是将用户输入的拼音流分割成合理的拼音音节输出。非中文用户知道,在输入法中输入拼音时,中文输入法用户绝不会输入分隔符(如“空格”键)来分割拼音音节或拼音单词,而只是输入整个未分割的拼音序列。拼音输入不分段。例如,他要输入“HelloOpenHarmony”,只需要输入“nihaokaiyuanhongmeng”,而不用输入分段拼音序列“nihaokaiyuanhongmeng”。2、进行拼音音节切分非常方便。因为拼音音节的词汇量是非常有限的,而且严格遵循一套规则。第二阶段:词转换(将切分的拼音流转换为汉句)1、将拼音流一个一个切分成音节后,需要实现的是将音节转换成相应的汉字,并组成合理的句子。2.拼音切分将连续的用户输入分解为单个拼音音节,并将它们传递到此阶段,在此阶段提取候选词。这是一个查找对应拼音音节的汉字的查表任务。根据拼音音节建立候选词表。表中的每一列都是一个对应于音节的单词,按其出现的概率排序。例如,用户输入“你好开元鸿蒙”可以转换为“嗨开元鸿蒙”。3、一个拼音对应多个汉字。当用户输入一个长拼音流时,如果比较所有汉字组合的结果。挑选最好的是不现实的,而且复杂性成倍增加。整个输入法系统就会崩溃,无法满足用户的实时输入需求。这部分要求在保证转换精度的同时,尽可能降低时间复杂度,以保证输入法的正常运行。设计合理的拼音字符转换算法是实现拼音输入法的关键。拼音流转汉字的算法主要有两种:尝试过,但这些算法都不能很好地处理歧义。最大匹配法是所有拼音流分割算法中最简单、最容易实现的。所谓最大匹配,就是在对拼音流进行拆分时,拆分得到的单个合法拼音的长度尽可能大。优缺点:最简单,但缺点也很明显。后面输入的音节可能无法切分,很多短音节无法输入。拼音转换法在拼音转汉字的过程中,对于给定的拼音P序列,目标是找到最可能的汉字序列H,通常由语言模型生成(提供条件概率通过上下文单词)。使用贝叶斯定理:由陈征、李开复于2000年提出,是一种基于汉语拼音输入的统计方法。李开复加入微软,在中国创立并领导微软中国研究院(现微软亚洲研究院)。理论上,当所有H都列出来时,取最大值的Pr(H,P)被选为最佳汉字序列。在实践中,将使用一些有效的方法,例如维特比束搜索。问题转化为两部分,打字模型Pr(P|H)和语言模型Pr(H)。1)语言模型Pr(H)是汉字序列的先验概率。通常由Statisticallanguagemodeling统计语言模型(StatisticalLanguageModel,SLM)决定,比如triptych。最广泛使用的统计语言模型是所谓的n-gram马尔可夫模型。有时二元图或三元图用作SLM。对于英语,三元图被广泛使用。由于训练语料库大,tripletgraph也适合中文。在实践中,困惑度用于评估SLM:其中N是测试数据的长度。当呈现给语言模型时,困惑度可以粗略地解释为文档分支因子的几何平均值。显然,困惑越少越好。n-gram马尔可夫模型,也称为N-gram模型。是一种基于统计知识的模型,它使用统计概率来衡量单词之间的依赖关系。所谓N-gram就是第i个词的出现只依赖于该词之前的i-1个词。“统计输入法”的思想是通过将PTC(phonetic-to-characterconversion)变换建模为隐马尔可夫模型(HMM),并使用维特比(Viterbi,1967)算法对序列进行译码而提出的。目前,大部分音字转换方法都是基于统计方法,应用最广泛的是基于N-gram语言模型的转换算法。2)Pr(P|H)是汉字H被输入为拼音P的概率,这个模型称为打字模型。候选句的生成可以看作是一个解码问题,目标是找到最可能的中文单词序列:OpenHarmony的输入法框架输入法框架目前有四个模块:inputmethodclient:function:实现输入法frameworkservice和input方法传递的中间桥梁,包括监听输入法的当前状态等。输入法服务:功能:作为输入法框架的核心,输入法的主要处理逻辑都在这里完成。应用客户端:功能:实现应用与输入法框架服务的下发,包括应用与输入法服务的绑定,应用对输入法的显示隐藏请求等输入法js接口:功能:暂时暴露js接口,主要是保留给输入法调用。框架主要支持功能:点击编辑属性控件,可以通过输入法框架调用默认的输入法应用。您可以通过输入法应用打字,将屏幕上的字符输入到应用客户端。相关API接口文档:输入法框架模块接口使用说明。输入法服务模块接口使用说明。什么是输入法框架:应用调用输入法实现内容输入。平台的输入法框架是操作系统的重要组成部分。方法之间的切换等。输入法框架的作用主要是连接应用程序和输入法,保证应用程序可以通过输入法输入文字,是操作系统不可或缺的一部分。现代操作系统应该为用户提供多语言环境,而多语言环境的要求之一就是支持用户的多语言文本输入。OpenHarmony预设轻量级输入法kikainput是一款支持运行OpenHarmonyOS的智能终端的轻量级输入法应用。支持的语言是JavaScript,模型仅限于Stage模型。系统预置的输入法应用为示例输入法,目前仅支持符号输入键盘和英文键盘。中文键盘输入法样例正在开发中,预计最快本月上架Smaple仓库。OpenHarmony智能终端中文输入法的设计将由虚拟键盘、当前输入的按键和候选列表三部分组成。左边是OHOS3.1Beta预置输入法软键盘,右边是OHOS3.1Release预置输入法软键盘。两者在按钮页面布局上没有区别,发布版按钮大小更合理。每个键盘都采用全键盘模式进行输入。整个基调是灰色和白色。以白色和灰色为主色调,可以给用户安静舒适的视觉体验,减少长时间使用带来的疲劳。OpenHarmony暂时不支持中文输入。OpenHarmony内置输入法应用暂时不支持中文输入;仅支持英文、数字、字符、大小写切换、退格、ENTER键等基本功能。(更多信息请关注示例代码仓库)。OpenHarmony操作系统要支持中文输入,需要输入法应用提供中文输入功能。了解更多开源信息,请访问:51CTO开源基础软件社区https://ost.51cto.com。
