当前位置:首页 » 操作系统 » 拼音匹配算法

拼音匹配算法

发布时间: 2022-06-10 07:35:02

Ⅰ 如何模糊查找出拼音一样或字形相近的汉字

这个应该是做出不难做好难。

这要看你的数据库里面要存储着大量的拼音与汉字的相关信息。这样数据量也是很大滴,所以需要很好的匹配算法才是王道。

至于显示这倒是很简单。采用异步,采用匹配算法从数据库中查找。

Ⅱ 比特信安数据脱敏系统亮点及特色

1.1 利用了大数据脱敏
结合四川省科技厅“海量数据信息挖掘脱敏技术研究及应用“项目,首次创新性地提出采用大数据平台技术实现海量数据的脱敏,结合智能匹配算法对大数据内容进行选择性脱敏的专利技术有效的解决了当前传统的脱敏技术和产品(包括静态数据脱敏和动态数据脱敏中使用的替换和加密)均不能解决的海量数据的敏感数据快速智能识别的问题。
1.2 FPE格式保留加密
在实际应用中,对数据库中的信用卡号、身份证号等敏感数据进行加密非常必要,然而使用传统分组密码通常会扩展数据,使数据长度和类型发生变化,需要修改数据库结构或应用程序来适应这些变化,成本非常高。
FPE通过克隆原始数据进行掩码转换,输出一个与原数据格式、关联一模一样的数据,用于解决从生产环境的数据向测试环境(或者开发环境)导入时可能产生的数据内容安全问题。FPE技术在大数据领域作用非常大,比如美国Voltage 公司已将FPE 技术应用到其安全产品SecureData 中。
1.3 智能匹配算法对大数据内容进行选择性脱敏技术
常规手段对其进行脱敏保护时也会遇到不少难题,比如:使用单一的脱敏算法对大数据进行整体脱敏保护,优点是策略简单,直接将脱敏算法平移到大数据脱敏系统中即可。缺点是单一的脱敏算法对所有的海量数据进行脱敏处理,导致脱敏粒度较粗,不能有针对性的满足系统的脱敏需求。
通过智能匹配算法(比如近义词搜寻、词语向量相似度、缩写识别、拼音匹配等智能搜寻算法)对大数据内容进行选择性脱敏处理,能智能、有效实现海量数据脱敏处理。
1.4 采用大数据保险箱专用硬件实现海量数据的高效脱敏处理
整个海量数据脱敏处理系统基于大数据平台技术,通过采用硬件级的大数据安全保险箱,通过采用sqoop/Impal技术实现海量数据的高效脱敏
1.5 支持动静态脱敏
除静态脱敏,比特信安脱敏系统可在通讯层面上,通过代理部署方式,对业务系统数据库中敏感数据进行透明的、实时的脱敏。产品依据用户的角色、职责和其他IT定义身份特征,动态的对生产数据库返回的数据进行专门的屏蔽、加密、隐藏和审计,可确保不同级别的用户按照其身份特征恰如其分的访问敏感数据,并且不需要对生产数据库中的数据进行任何改变。
动态数据脱敏同样支持同义替换、部分遮蔽、混合脱敏、确定性脱敏及可逆脱敏,产品使用者可根据不同用户身份特征,指定对应的数据脱敏算法。

Ⅲ 如何实现拼音与汉字的互相转换,拼音汉字转换器彝

  • 基于词库的汉字转拼音

    词库中既要包含每个字的拼音,也要包含常用单词/短语的读音。有些字是多音字,所以至少要保存其最常用的读音,不常用的读音多出现在单词短语里。

    你好世界杯

    我们的词库是这样子的:

    你:nǐ

    好:hǎo,hào

    世:shì

    界:jiè

    杯:bēi

    世界:shì,jiè

    你好:nǐ,hǎo

    苦尽甘来:kǔ,jìn,gān,lái

    词库中最长的词苦尽甘来包含4个字。所以你好世界杯从4个字开始匹配:

    判断你好世界是否在词库中,不在;

    判断你好世是否在词库中,不在;

    判断你好是否在词库中,在,得到nǐ,hǎo;

    判断世界杯是否在词库中,不在;

    判断世界是否在词库中,在,得到shì,jiè;

    判断杯是否在词库中,在,得到bēi;

    于是你好世界杯被转换为nǐ,hǎo,shì,jiè,bēi。

  • 基于词库和分词工具的汉字转拼音

    纯粹的基于词库的方法在实际的使用中会遇到问题,例如提出了解决方案这句话中了解会被当作一个单词,所以会得到错误的结果:

    tí,chū,liǎo,jiě,jué,fāng,àn

    更好的方法是先进行分词得到:

    提出

    解决

    方案

    然后基于词库对每个结果分别处理。

    基于HMM的拼音转汉字

    这里的拼音一般不带声调。

    将汉字作为隐藏状态,拼音作为观测值,使用viterbi算法可以将多个拼音转换成合理的汉字。例如给出 ti,chu,le,jie,jue,fang,an ,viterbi算法会认为 提出了解决方案 是最合理的状态序列。

    HMM需要三个分布,分别是:

    初始时各个状态的概率分布

    各个状态互相转换的概率分布

    状态到观测值的概率分布

    这个3个分布就是三个矩阵,根据一些文本库统计出来即可。

    viterbi算法基于动态规划,

    基于词库的拼音转汉字

    原则:

    词的权重大于字的权重;

    转换中匹配的词越多,权重越小。

    词库的格式是:

    拼音:单词:权重

    例如:

    ni:你:0.15 ni:泥:0.12 a:啊:0.18 hao:好:0.14 nihao:你好:0.6

    假如输入是 ni,hao,a ,我们计算一下各种组合的权重:

    组合 权重

    你,好,啊 0.15×0.14×0.18 = 0.00378

    泥,好,啊 0.12×0.14×0.18 = 0.003024

    你好,啊 0.6×0.18 = 0.108

    可以看出, 你好,啊 是最好的结果。

    实际实现中需要用到 动态规划 , 和求有向无环图中两点之间最短距离类似。


Ⅳ 求判断字符串是否是拼音的成熟算法

如果您是做输入法引擎的话,不能这么做的。任意的用户字母串都是拼音串。
例如:hello可以拆解为 he‘l’l‘o四段,您通过拼音输入法输入的话是可以完成输入的。
所以要做的话应该采用自动机原理,或者树结构来存储以任意字符开头的全部合法拼音组合。
例如 a开头的字符有 a、ai、ao、an、ang,那么以a开头的树的形状如下,+表示叶子结点,即若遇到此叶子节点则序列此时结束为合法序列。
a

i o n +
+ + + g

若给您一个字串是以a开头的,则从此树的根结点开始查找,例如序列为anaang
则起始查到an下一个字符为a所以已经无法再向下查找了,此时an即为一个拼音段,
接着下一个序列又是以a开头的所以继续在此树中查找,可以查到a此时a即为一个拼音段,
接下来重复这个过程,得到ang所以anaang的序列就被划分为了an'a'ang序列。
您只需要为26首字母建立树即可完成所有序列的匹配。

Ⅳ 微软拼音输入法的编码规则

微软拼音输入法是中国第三代汉字编码输入法.中文的输入法是从1974年8月开始基础工作,这个工程项目又叫“748工程”,其主要成果之一是《汉字频度表》,首先为汉字信息处理提供了重要的基础数据。经过对《汉字频度表》和其它字表的统计分析,国家标准总局颁布了汉字信息处理领域的第一个国家标准《信息交换用汉字编码字符集·基本集》(GB2312-80)。这是一个在中国的汉字信息处理历史上划时代的、具有深远影响的标准。

1981年,武汉大学等公布了在《新华字典》字集范围内的字根频度统计结果。1984年,国家文字改革委员会与武汉大学公布了《辞海》字集范围内汉字笔画、部件、结构的动态统计分析结果。
1985年,国家文字改革委员会与山西大学公布了人命姓氏用字的抽样统计分析结果。
1986年,北京航空学院、新华社利用计算机技术分别公布了基于大型语料库的新的汉字使用频度统计和流通频度统计1985年后,北京师范大学、上海交通大学、北京语言学院等分别使用各具特色的自动分词技术公布了基于大型语料库的现代汉语词语使用频度统计北京大学计算机语言研究所还建立了以汉语语法为中心的“现代汉语语法信息词典” 内容全面、翔实、使用方便的汉语语料库、字词属性库对推动汉字编码键盘输入技术的发展起到了重大作用。

九十年代后公布的与汉字键盘输入系统有关的国家标准有GB13000.1《信息技术多八位编码字符(UCS)》、GB18030 《信息技术 信息交换用汉字编码字符集基本集的扩充》、GB18031 《信息技术 数字键盘汉字输入通用要求》、GB15834 《标点符号用法》和即将公布的有GB/T18220-2000《信息技术 通用键盘汉字输入通用要求》。语委颁布的规范有GF3001 《信息处理 GB13000.1字符汉字部件规范》、GF3002 《GB13000.1字符集汉字笔顺规范》、GF3003 《信息处理用汉语拼音方案表示规范通用键盘》。

下面是从第一代输入法到微软输入法的一些介绍:

第一代汉字编码输入法
电子工业部第六所于1983年正式公布了我国第一个中文磁盘操作系统CC-DOS,这在我国中文信息处理历史上具有划时代的意义。CC-DOS是在PC-DOS的基础上扩充、修改而成。在广泛使用的CC-DOS 2.1版中,有简拼、首尾码、快速码和区位码输入法,已经涵盖了包括音码、形码、音形码和数字码这些主要类型的输入法,对我国计算机应用的普及起到了开路先锋的作用。

当时使用得最广泛的输入法是简拼和首尾码。简拼是纯音码,使用的是介于全拼和双拼之间的一种拼音方法,对三个及三个字母以上的韵母进行了压缩。首尾码是一种纯形码,包含97个部件,分为52类;部件到键盘字母的映射没有太多的规律可循,记忆量很大;编码时只取字首和字尾各一个部件,对于未列出的变形部件需要输入者自己去猜测其应归属的键位。这两种方法都不支持联想,也不支持词组,都有很多重码。因此,在输入时选择、翻页操作很频繁,眼睛需要不断地扫描提示行以便在众多的重码中找寻所需的字,输得又累又慢,更不可能实现盲打。

快速码是通过压缩拼音加码方法实现的,可以在一定的程度上离散重码。由于快速码的加码方法没有规律可循,因此没有得到真正的应用。区位码需要完全要靠死记6763个汉字和符号的数字编码来输入,因此除了用于输入当时还没有其它办法输入的标点符号外,基本上没有人实际使用。

另一个早期的汉字编码输入法是电报码。电报码为4位等长码方案,使用的码字从0000到9999,可以代表一万个字符(包括汉字、字母、符号)。电报码没有重码,但编码的规律性不强,十分难记。因此,它完全是为了邮电部门那些已经熟悉电报码的人的需要而移植进计算机的,对一般的汉字输入者没有什么意义。

1986年,联想集团在推出联想汉卡的同时推出了联想式汉字环境,首先使用了联想方法来加快汉字的输入。那时还没有词组输入方法,联想技术让人耳目一新。汉字输入过程由原来的编码->翻页->选择->编码...变成了编码->选择->选择...,因此稍后的很多输入法都采用了这种技术。不过,按照现代汉字编码输入技术的标准来看,联想技术仍然存在两个致命的弱点。一个弱点是,如果后续要输入的字与前面已输入的字不能构成词组的话,则联想就会失败。另一个弱点是,联想选择时人机交互过于频繁,虽然平均码长缩短了,但是实际的输入速度反而会下降。

总之,第一代汉字编码输入法的特点是:在DOS环境下,以单字为单位进行输入,在屏幕底部提供专门的提示行显示数量众多的重码字,翻页、选择操作频繁;用数字键选择重码字,用ALT+数字键可重复选择出现在提示行中的重码字;连极为常用的标点符号的输入都需要使用区位码,很不方便;联想技术的采用使输入效率有所改善,但其作用是相当有限的;各种输入法间的切换(包括切换到英文)都是通过复合功能键ALT+Fn(F1-F12)来进行的;支持全角和半角方式,但不支持中文标点方式;不支持词组输入,更不支持自定义词组。
第二代汉字编码输入法
1986年,四通公司与日本三井物业合作,推出了四通MS-2400中文电子打字机,宣告了中国专业电子打字时代的到来。随着四通打字机的广泛使用,首先捆绑在四通打字机上的五笔字型输入法流传开来,后来捆绑到四通打字机上的由刘卫民发明的双音输入法也在当时得到比较广泛的使用。

五笔字型是最典型的纯形码部件类方案。在五笔字型中,一般将部件称为字根。五笔字型采用了130个基本字根。基本字根按起笔分为五类,对应通用键盘上的五个区。每类又细分为五组,每组对应一个键盘字母。在一个汉字中,字根间的关系被归纳为“单、散、连、交”四种。在汉字拆分时,遵循“取大优先,兼顾直观,能连不交,能散不连”的原则。五笔字型将汉字被分为键名汉字、成字字根汉字和键外汉字三种,分别服从不同的编码规则。另外,字的编码还有一、二、三级简码,其形成方法是取相应全码的前一、二、三个字母。五笔字型将词组也分为二字词、三字词和多字词三种。二字词按顺序取各字的前两个字根来编码。三字词按顺序取头两个字的第一个字根和末字的前二个字根来编码。多字词按顺序取第一、二、三、末字的第一个字根来编码。

五笔字型以非常复杂的编码规则换来了在GB2312-80字符集内较低的重码率。当采用强制简码时,还可进一步将低重码率。词组编码被放进全码字的剩余编码空间中,实现了字词混合编码。只要收录的词组量不大,发生重码的可能性是比较小的。一般的五笔字型不具备自造词的功能。五笔字型拥有的这些特点,正好适应了职业打字的需要,成为它在职业打字时代非常流行的重要原因之一。

虽然五笔字型在市场上取得了巨大的成功,但它存在的问题也是不容忽视的。首先,五笔字型是非常难学的,而且容易遗忘。它除了有非常复杂的编码规则而外,还有很多例外需要记忆。五笔字型打字员在打字时对一些常见字出现“卡壳”的现象是很普遍的事情。这时就需要临时换用拼音输入法。其次,五笔字型的扩展性差。当字符集从GB2312-80到GBK和GB18030过渡时,当词组量增大时,五笔字型在码长为4的码位上会出现大量的重码,使其丧失重码率低的优势。五笔字型采用的是4码无重码自动上屏的策略,4码重码增多就迫使打字员的视线更多地离开稿件来观察提示行以确认自己的输入,从而降低录入速度。最后,五笔字型最致命的弱点是规范性差。张孝存等就此提出了言辞激烈的批评:“五笔字型违反语言文字规范。它对汉字的拆分具有相当大的随意性,对国民基础文化素质具有不可忽视的负面影响。它对规范的汉字教育的冲击同其应用范围的扩大成正比[20]。”

双音输入法是一种比较巧妙的纯音码 [23][25]。双音输入法最大的特点就是“以词定字、反向联想”,以缓解纯音码方式下单字重码过多的问题。因为二字词的数量很多,所以一般情况下总可以找到某个二字词,它的第一个字就是你想要输入的字。如果该二字词处于提示行的第一候选位置,则可以省略选择键;否则需要用数字键进行选择。如果整个二字词都是你需要的,你可以加一个空格键输入第二个字。也就是说,如果采用双拼的话,利用“以词定字”技术可以使得常用字输入时的平均击键数为2.5,而且基本上避免了传统拼音+联想方式下过多地扫视提示行和翻页、选择的毛病。在双音输入法中,对于三字词和四字词,取各字的声母作为编码来输入,必要时加空格结束。对于不认识的字,可以打入“\\”调用“手写模拟”。虽然可以自定义词组,但它不支持在线造词。造词时需要用外部文本编辑器按照它定义的格式输入编码和对应的词组。

双音输入法是拼音汉字输入历史上的一大进步,在当时受到了许多非职业打字员的欢迎。但是,它也存在一些比较严重的不足,以至于现在几乎没有人再使用它了。首先,虽然在输入效率上它较传统的拼音有很大的提升,但是它与后来的语句级拼音输入法如智能ABC相比,还有相当的差距。另外,“以词定字”时很多字可以采用多个词来确定,而有的字难以找到词来确定,用户常常感到不知所措。虽然双音输入法中提供了很多其它的方法来解决单字的录入问题。例如,邓、郭、姚等姓氏用字的输入就有6条辅助规则。要记住这些方法并判断何时采用何种方法可不是一件容易的事情。由于只能离线造词,所以词组的自定义也很不方便。

第三代汉字编码输入法
到了九十年代末,随着微机价格的进一步降低、存储处理能力的进一步增强、Windows图形操作系统的流行和国际互联网的兴起,用户界面变得非常友好,微机大面积地进入中国的普通百姓家庭,进入了中小学教育中,真正实现了微机在中国的大普及。

微机的大普及使得打字成为每个人的基本技能,就像会写汉字一样;需要别人打字就像需要别人代笔一样,实际上是文盲的标志。这样便造就了一个庞大的非职业打字员用户群体。打字员作为一个职业正在快速消失。一般用户在打字时的操作方式是“想打”,与职业打字员的“盲打”方式完全不同。“盲打”要求操作者尽量少看屏幕,输入法提供的反馈信息只有在操作员不能“盲打”时才偶尔派上用场;而“想打”时操作者始终是看着屏幕的,输入法所提供反馈的方式和反馈信息量的大小都会对操作者的输入活动产生巨大影响。Windows图形操作系统为人机界面的丰富化提供了前提条件,可以满足反馈信息多样化的需求。

现代微机强大的存储处理能力为新型的存储密集型和处理密集型输入法的诞生提供了物质基础。输入法程序不再局限于DOS时代64KB的驻留内存中。千兆级的运算速度使得复杂的智能算法得以投入运行。硬盘容量不仅从兆级扩大到千兆级,访问硬盘的速度也比DOS时代大大提高。将巨型的词库存储在硬盘上并进行快速搜索已不成问题。

计算机教育日益广泛地在中小学开展后,学生们从小就开始学习打字了。汉字编码与语言文字教育的关系问题被尖锐地提了出来。起码的要求是,汉字编码不能与语言文字知识相冲突。理想的情况是,把汉字编码输入与语言文字知识的学习结合起来,起到相互促进的作用。

在上述背景下,第三代汉字编码输入法应运而生,其指导思想是:规范、易学、易用并且尽量保持输入速度。这一时期,智能化拼音输入法的研究高潮迭起,也出现了以笔画或笔对为输入单位的纯形码,还出现了以声母和笔画(或笔对)为基础的音形码[29]-[48]。

(1) 智能化拼音输入法

智能化拼音输入法按其实现原理可以分为四种:基于理解的、基于语用统计的、基于模板匹配的和基于上下文关联的。

智能ABC是目前Windows操作系统上使用得最为广泛的准语句级拼音输入法,因为它是以词组和短语为单位而不是以全句为单位进行转换的。智能ABC最大的特色是能够非常方便地自定义词组和调整重码字词的顺序。用户只需按自己的想法进行输入,输入时可以不进行手工分词,系统会从前到后逐个进行自动分词。在没有词组时,系统自动按单字方式显示重码字供用户选择;一旦用户选定并组成新词后,系统就可以记住它。在系统分词不正确或系统提供的词不是用户需要的词时,用户也可以加以修改,系统也能记住用户所作的修改。通过较长时间的使用后,如果用户没有发生变化,系统逐步适应该用户的使用习惯,使用户的输入过程变得自如起来。

智能ABC也有很多值得改进的地方。首先,在输入时可以随意使用全拼、简拼、混拼,输入者可以在任何时候进行音字转换,过多的方式让用户不知哪种是最好的。看似非常灵活,但却实际上是把优化输入的任务交给了用户。但大多数用户不是这方面的专家,不可能很好地完成这项任务,从而导致用户走很多弯路或形成不好的、低效的输入习惯。其次,音字转换的准确率不高,句内修改很频繁,导致输入速度不理想,即使使用双拼也没有自然码的效率高。

微软拼音是真正意义上的语句级音字转换智能输入法,是微软自然语言处理技术多年科研成果的结晶。微软拼音采用拼音作为汉字的录入方式,用户不需要经过专门的学习和培训,就可以方便使用并熟练掌握这种汉字输入技术。微软拼音采用基于语句的整句转换方式,用户连续输入整句话的拼音,不必人工分词、挑选候选词语,这样既保证了用户的思维流畅,又大大提高了输入的效率。微软拼音提供的人机界面非常具有特色。组字窗口可以嵌入正在输入的文本的插入光标处,减少用户在输入时视线的移动频率,使得输入法的易用性得到了很大提高。逐键变换并提示转换结果,使得用户不必自己做何时进行转换的决策。用户可以输入的编码长度没有限制,当超过系统的长度上限或遇到句号时系统会自动进行转换,以便用户能继续不间断地输入。由于考虑的上下文较广,微软拼音能够达到很高的转换准确率。微软拼音在默认情况下拒绝用户输入简拼和混拼,可以引导用户养成良好的输入习惯。

微软拼音也存在一些问题。首先,在编码输入出错或转换不正确时进行句内编辑的操作很繁琐和低效。其次,逐键变换时往往会把已经转换正确的内容又修改错了,用户不得不随时监视输入内容的正确性,当已转换的内容较多时是非常劳心的。另外,微软拼音没有提供方法加速单字的录入,也没提供方法来输入不认识的字,是不完备的输入法。

基于笔画(或笔对)和/或声母的输入法

采用笔画、声母这两个最简单的汉字特征信息来进行编码,可以极大地提高输入法的易学性[12]。但是,汉字的笔画一般归为五种。笔画种类太少,势必增加编码的长度,从而影响输入速度。于是,如何缩短码长、提高录入效率成了这类输入法成功与否的关键问题。

福建双笔码软件开发有限公司研制的双笔码是一种基于笔画的纯形码。为了克服笔画种类过少的问题,双笔码引入了一种新的笔画类型“叉”,从而将笔画种类扩大为六种,取码时按顺序每取两笔构成一个笔对,共可形成36种不同的笔对,并在键盘上相应的键位区内选择键位输入。另外,双笔码还规定病字旁、“口”、提手旁和“日”应作为一个整体取码。根据汉字不同构造的组合形状,双笔码把汉字划为三类基本字型即左右型、上下型和综合型。不论哪种类型的汉字,均按四码进行编码。双笔码词组的输入方法为:二字词输入每个字的头两码;三字词输入前两个字的头一码和末字打头两码,四字及四字以上词输入一、二、三、末字的头一码。

双笔码的优点是:与传统的部件类输入法相比,记忆量减少了许多;采用笔对和36键编码后平均码长也相当短;如果不按笔对而按单笔画输入,就可以非常容易地向数字键盘移植双笔码。但是双笔码的缺点也非常明显:作为基于笔画的输入法,它的取码和编码规则复杂,例外也不少,学习难度仍然很大;采用了上排数字键进行编码,击打不方便,且与常用数字的输入相冲突,影响了实际输入速度。

陈劲松先生发明的二笔输入法是目前使用得比较广泛的输入法之一。它是一种基于声母和笔画的输入法,也可以单纯基于笔画进行输入。二笔输入法的30个编码字符在通用键盘上分布于六个区,即五个双笔画区和一个单笔画区。区内再根据双笔画的第二笔或根据单笔画,按横、竖、撇、点、折的顺序定位。但10个设定偏旁部首的键位需要记忆。二笔输入法将汉字按字形结构分为独体字和合体字。输入汉字时,第一码取汉字拼音首字母,从第二码起取笔画,最多取四码,不足四码应全取,不能取双笔画时就取单笔画。独体字不必拆分;第一码取拼音首字母,第二码起按笔顺取笔画的代码,最多取四码。合体字拆分成两半,按汉字笔顺规则,先写的部分定为前半,后写部分为后半;第一码取取拼音首字母,第二码取前半的第一、二笔,第三码取后半的第一、二笔,第四码取后半的第三、四笔。二笔输入法词组的编码规则为:二字词取每个字的前二码,三字词取第一字的前二码和最后两个字的第一码,四字及四字以上词取前三字和最后一字的第一码。

二笔输入法的优点是:编码规则比双笔码更加简单,使用的编码字符也仅有30个;通过使用声母和笔画两种汉字特征信息编码,区分同码字词的能力得到了增强,取得了较高的输入效率;对于不认识的字还可以按全角方式输入;如果不按笔对而按单笔画输入,也可以非常容易地向数字键盘移植。但是二笔输入法也还存在问题:由于使用了笔对和设定部首,并需区分独体字和合体字进行不同的编码,因而学习难度和使用难度仍然较大。

数字键盘编码输入法
迄今为止,全国手机拥有量已超过3亿,手机短信息的产值超过50亿人民币。手机拥有量已经超过PC机用户,用手机输入汉字的人群远远超过用通用大键盘输入汉字的人群。

目前,美国特捷公司的T9拼音和T9笔画输入法、加拿大字源公司的字能笔画输入法和Motorola公司的iTap输入法垄断了中国大陆和港台的手机输入法市场。但是,国外的手机数字键盘输入法很不尽人意。以笔画输入为例,iTap用9个笔画,字能用8个笔画,T9用5个笔画。相同的一个笔画,不同的手机可以放在不同的位置上,输入速度也不理想。

为了打破外国手机输入法垄断中国手机市场和手机输入法不规范的尴尬局面。由中国中文信息学会等主办,由黄金码出版社(香港)有限公司等单位承办,于2004年11月21日,在人民大会堂举行了为期三天的中国首届手机中文输入大赛暨汉字数字码输入技术应用高峰论坛。在32支参赛队伍中,有23支参加模拟手机汉字数字码输入比赛,9支参加手机中文输入比赛。除了已参赛的数字编码方案外,比较引人注意的还有王永民先生的五笔数码[49]、郑岩松先生的左右数码[50]等。以下仅对当前使用得最为广泛的T9拼音、T9笔画和首届手机中文输入大赛中获得冠军的黄金码、大众数字码进行介绍。

T9拼音本质上采用的是一种全拼单字加联想的早期通用键盘输入技术。其最重要的创新是可以根据手机键盘上按键的组合情况判断是否能组合成合法的普通话音节,从而避免了传统上通过多次按键来输入一个拼音字母的弊端。但是,当按键组合适合多个合法的普通话音节,而且默认选择的普通话音节又不是用户所需要的时,用户还是得进行手动选择。另外,全拼的拼式过长、需要按1键进入选择状态和联想造成的过度人机交互都使得T9拼音的输入效率很低,而且全拼对普通话不好的人难度很大。

T9笔画采用目前多数输入法对笔画的归类方法将汉字笔画归为横、竖、撇、点、折五类,分别用1、2、3、4、5表示。录汉字时,按笔顺进行输入,逐键提示,每屏数个,高频优先,最长可输入12个笔画,并支持联想。由于分别使用五个键表示五种笔画,因此不需要像T9拼音一样对组合情况进行智能判断,内部处理逻辑很简单。T9笔画充分利用了丰富的笔画信息和不等长码的短码位,并可以直接键选重码字,所以它的实际输入效率比T9拼音还高。

大众数字码[51]用10个数字对字词进行编码。除了用1、2、3、4、5分别表示横、竖、撇、点、折五种笔画外,还用6、7、8、9、0分别表示交、插、八、小、口五类部件。单字按笔顺取第一、二、三、四、末五个代码、不足时按实际码长,词组的码长为6位。大众数字码使用了相当多的笔画组合作为部件,但由于归类清晰,记忆起来比很多同类的输入法要容易些,加上精心的编码规则降低了重码率,使得它在比赛中脱颖而出。不过,应当看到它使用的部件相当多,编码规则也并不简单,学习难度还是相当大的。

黄金码用9个数字对字词进行编码。除了用1、2、3、4、5分别表示横、竖、撇、点、折五种笔画外,还用6、7、8、9分别表示“口”、“十”、“八”、“亠”四类部件。编码时分字首和字尾,也区分独体字与合体字的不同。在提示行不为空时,0、*和#用做选择键。黄金码最大的特色是,在输入时若用于编码的数字与已输入的编码一起不能构成另外的字词编码时,该数字键就可以用于选择同码字词,这样就大大地增加了输入法的键选能力,缩短了动态平均码长;结合高频先见的不等长码的使用,在输入时基本上不用翻页,进一步提高了输入效率。不过,字首与字尾的区分没有标准可循,常常因人而异;动态地使用剩余编码键选择重码字词也造成选择键位置变化太大,加重了人机交互的负担。

以上是我从事电脑工作以来接触的几种我熟悉的输入法,不知道对你能否有所帮助.

Ⅵ 怎样在java编程中输入一个数字输出这个数字的拼音

其实就是一个简单的算法问题,我给你写出算法来,补代码就简单多了。
看你问题的描述,就是给定一个数,给出对应的拼音。但是要按习惯读出来,对吧。其实不难,抓住主要的,数:0~9对应的拼音,还有就是读出位数来,个,十,百等。所以就简单多了
先要有0~9对应的拼音。
再要有位数的拼音:(个就可以不要了),十,百,千。。。。。。
有几个注意点:1>给一个数,拆除他的个,十,百,等。就是利用 x/y和x%y,这个相信,是个编程的人都会。(有个这个就可以确定 ’百‘,‘十’,等了。),
2>这个是一个细节的处理问题。102读作 1百0二,1002读1千零二,100002,10201等。就是一个数这么读的问题,就不多说了,小学的,都懂。
代码其实很简单了吧。

Ⅶ 通讯录拼音搜索模糊匹配的算法问题

我用java写了个简单的,你可以多测试下:

publicstaticvoidmain(String[]args){

String[]name={"wang","hai","bao"};

String[]tests={"whb","WaHB","wangHB","HB","wh","whbo","whba"};

for(Stringstring:tests){
System.out.println(string+":"+match(name,string));
}

}

publicstaticbooleanmatch(String[]source,Stringinput){

if(source==null||source.length==0||input==null||input.length()==0){
returnfalse;
}

Stringtemp;

//统一转小写
input=input.toLowerCase();

for(inti=0;i<source.length;i++){

temp=source[i].toLowerCase();

if(temp==null||temp.length()==0){
returnfalse;
}

//最后一步特殊处理
if(i==source.length-1){
if(temp.startsWith(input)){
returntrue;
}
}

//输入的字符完全匹配到
if(input.startsWith(temp)){
//匹配到后生成新的字符串
input=input.substring(0,input.indexOf(temp));
//System.out.println("temp:"+temp+" 匹配到后input:"+input);
}

//首字母匹配到
elseif(temp.startsWith(input.substring(0,1))){

input=input.substring(1);
//System.out.println("temp:"+temp+" 匹配到后input:"+input);
}else{
returnfalse;
}

//表示匹配结束
if(input.length()==0){
returntrue;
}

}

returnfalse;
}

Ⅷ 求一汉字拼音匹配算法

这可是大活

cxsj 可能是 程序设计,还可能是 持续时间

Ⅸ 汉字可以通过算法获取拼音,那如何英文有办法通过单词获取音标吗

汉字获取拼音是有一个码有的,也就是词库,任何输入法都要有一个词,每次用户输入的法,都把当前的字每到词库里面匹配一下,然后就知道会有哪些可能的组合。如果想要音标,就要把每个单字的音拼弄出来做成一个音标文件,然后程序运行的时候去那个文件里面查。

Ⅹ 拼音分词算法 C语言

#include <stdio.h>
#define M_JUZI 200

// 树图的链表验证结构
// 用图的链式存储来构造树,子树均记录串的静态位置(索引)
typedef struct ST_FenCi{
int LeiBie; // 连什么类别?1 : 韵母,2 : 声母
int SuoYin; // 声母后的韵母索引 或者 词语中韵母后一个字的声母索引
struct ST_FenCi *pN; // 兄弟
} FenCi;
typedef struct ST_Ci{
int SuoYin; // 在原始串内的子串(字)索引
int Chang; // 子串长度
} Ci; // 记录结果的结构

typedef struct ST_ShengMu {
char Pin[3]; // 声母字符串
FenCi *pLian; // 分词树的子树
} ShengMu; // 用来定义声母的静态集合
typedef struct ST_YunMu {
char Yin[5]; // 韵母字符串,区别于声母
FenCi *pLian; // 分词树的子树
} YunMu; // 用来定义韵母的静态集合

// 声母开字头
ShengMu smJiHe[29] = {{""},{"b"},{"c"},{"d"},{""},{"f"},{"g"},
{"h"},{""},{"j"},{"k"},{"l"},{"m"},{"n"},
{""},{"p"},{"q"},{"r"},{"s"},{"t"},{""},
{""},{"w"},{"x"},{"y"},{"z"},{"ch"},{"sh"},{"zh"}};

// 韵母收字尾
YunMu ymJiHe[24] = {{"a"},{"o"},{"e"},{"i"},{"u"},{"v"},
{"ai"},{"ei"},{"ui"},{"ao"},{"ou"},
{"iu"},{"ie"},{"ue"},
{"er"},
{"an"},{"en"},{"in"},{"un"},{"vn"},
{"ang"},{"eng"},{"ing"},{"ong"}};

// 关于分字树,完全可以按照“现代汉语词典”的音节表来构造
// 某分字子树的构造
void InitFenZiShu0() {

}

int main() {
char JuZi[M_JUZI];
//scanf("%s",JuZi);

// 算法1. 首字哈希查找,链表连字,链表连词
// 如果需要查找的表有限,可以用if ,else,也可以用哈希查找
// 待解决的问题:
// 1.1. 声母头与声母尾的混淆,两个字头之间至少相差三个位置
// 1.2. 韵母尾与声母头的混淆,上下文,回退
// 1.3. 超前搜索,首先,如果韵母可以扩展到更长的另一个韵母,
// 1.3.1 从韵母收字的时候,
// 不仅要尝试韵母的"扩展",而且要判断扩展后新韵母的后缀,
// 如果这个后缀为声母头,那么在声母头的后面是否有合适的韵母构成一个新字?
// 如果有,就需要记录这种可能,而且做好提前收尾的准备
// 如果没有,理所当然要把新的韵母继续"扩展"
// 这样的韵母比如:e->er, a->an->ang, e->en->eng, i->in->ing, u->un,
// 这样的声母比如:e, r, g
// 1.3.2 从声母找字的时候,
// 如果后面找不到声母头链表里所有的韵母,就可以扩展匹配更长的声母

// 算法2. 渐进地找到所有声母点,上下文分析,修正,分析到结构,显示
// 算法2.1 对原文的每个字,逐个匹配已知声母
// 算法2.2 已知声母,在一定范围里搜集在原文里出现的每个声母点

getchar(); // enter
return 1;
}

热点内容
云服务器项目实施方案 发布:2024-11-02 04:26:00 浏览:245
写入存储 发布:2024-11-02 04:20:21 浏览:30
JavaString替换 发布:2024-11-02 04:14:29 浏览:559
百度查询脚本 发布:2024-11-02 04:14:22 浏览:98
阴阳师ios如何登录安卓 发布:2024-11-02 04:03:03 浏览:708
服务器公网ip地址可以改吗 发布:2024-11-02 04:01:32 浏览:960
大内网没上传 发布:2024-11-02 04:00:52 浏览:912
光遇如何用账号和密码登录 发布:2024-11-02 04:00:07 浏览:415
政府存储肉 发布:2024-11-02 03:57:27 浏览:798
安卓91桌面怎么退出 发布:2024-11-02 03:42:50 浏览:672