汉语转拼音(带音调和多音字识别)
汉语转拼音
-----带音调和多音字识别
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做的服务器)
(adsl pc做的服务器)