热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

汉语转拼音(带音调和多音字识别)

汉语转拼音-----带音调和多音字识别1、背景几年前就在网上看到过汉字转拼音的程序,大都就是按汉字的编码转换,单字对应的算法实现的。在网上搜索“汉字转拼音”的文章可以搜索到很多,基本都是同

汉语转拼音
-----带音调和多音字识别

1、  背景

几年前就在网上看到过汉字转拼音的程序,大都就是按汉字的编码转换,单字对应的算法实现的。在网上搜索“汉字转拼音”的文章可以搜索到很多,基本都是同一个算法,各种语言的移植版本都有,但是都有一个共同的缺点,不能支持多音字。比如“重庆”,“重量”这样的词语就不能正确的识别,这在很多应用中会是一个非常大的缺陷,更不用说支持音调。(来自http://sunli.cnblogs.com)

2、  解决办法

后来找了很多资料,发现微软的office word2003带有这个汉字转拼音的功能,还有声调,效果比网上的按编码和单字对应的好很多(部分也有不准确,比如“水浒传”的“转”它转成“chuan”了)。但是不知道怎么去用程序调用这个工具。后来又找到调用微软拼音输入法的API调用方法,发现还是不够好。最大的缺点就是固定在了windows平台。所以决定自己实现汉字转拼音的算法。

 

3、  汉字转拼音算法实现

中文分词

要实现多音字的识别就需要分词,按照词语的拼音组合,这样就可以解决多音字的问题,也可以解决音调的问题。中文分词在网上可以找到很多的源代码和算法,这里不详细叙述,

词语拼音

实现一个词语拼音的对照库。一个词语一个拼音,这样分出来的词语就可以找到对应的拼音了。到这里还有一个步骤,分词后还会有很多的单字,所以还要一个单字的拼音对照表,这个对照表跟网上常见的那个对照表不一样,他就是单字(不组合成词)的拼音,比如“的”的拼音就是“de,而不会是”di”,因为的确这个词语才是“di”。

组合拼音

把分词后的词语和对照表对应,就去得到了汉语的带音调的拼音了。可以再进过少量处理,就得到无调拼音了。

4、  总结

汉字转拼音的关键地方在分词和分词后的词语拼音对照表上。

汉字转拼音可以运用在很多场合,比如:

1.搜索的下拉框拼音提示

演示:http://www.google.cn

2.输入智能纠错。比如输入“留德华”可以提示“刘德华”
输入“liudehua”也可以提示“刘德华”

3.按拼音检索

5、  演示

  http://dev.oswind.com/pinyin/   
(adsl pc做的服务器

推荐阅读
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文详细介绍了如何解决Uploadify插件在Internet Explorer(IE)9和10版本中遇到的点击失效及JQuery运行时错误问题。通过修改相关JavaScript代码,确保上传功能在不同浏览器环境中的一致性和稳定性。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • SQL中UPDATE SET FROM语句的使用方法及应用场景
    本文详细介绍了SQL中UPDATE SET FROM语句的使用方法,通过具体示例展示了如何利用该语句高效地更新多表关联数据。适合数据库管理员和开发人员参考。 ... [详细]
  • 机器学习中的相似度度量与模型优化
    本文探讨了机器学习中常见的相似度度量方法,包括余弦相似度、欧氏距离和马氏距离,并详细介绍了如何通过选择合适的模型复杂度和正则化来提高模型的泛化能力。此外,文章还涵盖了模型评估的各种方法和指标,以及不同分类器的工作原理和应用场景。 ... [详细]
  • 自学编程与计算机专业背景者的差异分析
    本文探讨了自学编程者和计算机专业毕业生在技能、知识结构及职业发展上的不同之处,结合实际案例分析两者的优势与劣势。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 深入浅出:Google工程师的算法学习指南
    通过Google工程师的专业视角,带你系统掌握算法的核心概念与实践技巧。 ... [详细]
author-avatar
thiji_0
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有