中文转换成拼音实施方法
含多音字的句子:这两批货物都打折出售,严重折本,再也经不起这样的折腾了!
1.python 导入pypinyin库
pypinyin库详解
https://pypi.org/project/pypinyin/
pypinyin源代码
自定义拼音组来解决多音词问题
python安装pypinyin库(该库集成了对中文转拼音的方法,可以直接调用)。
实例:
from pypinyin import pinyinpinyinlist = pinyin("这两批货物都打折出售,严重折本,再也经不起这样的折腾了!")
print(pinyinlist)
[['zhè'], ['liǎng'], ['pī'], ['huò'], ['wù'], ['dōu'], ['dǎ'], ['zhé'], ['chū'], ['shòu'], [','], ['yán'], ['zhòng'], ['shé'], ['běn'], [','], ['zài'], ['yě'], ['jīng'], ['bù'], ['qǐ'], ['zhè'], ['yàng'], ['de'], ['zhē'], ['téng'], ['le'], ['!']]
2.字典法
把多音字组成的常用词组整理出来,弄成个库,取拼音时先判断当前词是否在词库里面,是的话就取词库的拼音。该方法暂时pass,已经实施效果不是很好。
3.C++调用python(可以实施,但是实施过程较麻烦)
尝试了几次,但是一直存在报错,目前没有把环境配置好。
找到的C++方法基本都是采用将20902个汉字的拼音按照unicode编码的大小排序写到文件中,然后对应汉字读取文件查询拼音。针对多音字问题建立一个多音字文件。
4.C++中文的拼音的开源代码
这里找到几篇C++博客。
- C++实现中文转换成拼音(有些字识别不出来)
- 汉字转拼音c/c++源码,支持gb2312和utf8(识别效果不好)
- C++汉字转拼音(不精确)
- Java中文转拼音的代码(不支持多音字)测试效果不是很好。:
- GitHub代码,将中文转换成首字母
- C++代码
一个适用于C#的汉字转拼音的库:
2009年3月31日,微软发布了 Microsoft Visual Studio International Pack 1.0 SR1。Visual Studio International Pack 包含一组类库,该类库扩展了.NET Framework对全球化软件开发的支持。使用该类库提供的类,.NET 开发人员可以更方便的创建支持多文化多语言的软件应用。下载地址是:http://www.microsoft.com/downloads/details.aspx?FamilyID=44cac7f0-633b-477d-aed2-99aee642fc10&DisplayLang=zh-cn 该软件包1.0版提供下面七个组件以增强.NET Framework对全球化软件应用开发的支持。
zhe liang pi huo wu dou da zhe chu shou , yan zhong zhe ben , zai ye jing bu qi zhe yang de zhe teng le !
5.C语言中文拼音开源代码
- 中文转拼音,不包含多音字C语言代码(不支持多音字)
- 中文转拼音,C语言代码(不确定支不支持多音字)
6.Java中文转拼音解决多音字
Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。介绍了Java 中利用Pinyin4j 实现汉字转拼音,但是对于多音字问题采取的是组合拼音方式,例如长沙 取拼音结果就是 changsha zhangsha。某些情况下我们希望能得到多音字的唯一拼音,此时就需要借助多音字字典了,原理很简单:给多音字一个默认的拼音并告诉计算机碰到哪些词的时候使用其它的拼音,例如 长 字,我们可以给它指定默认拼音为 zhang,并标识 长沙 拼音为 chang。
- 建立多音字词表
- 给多音字一个默认的拼音并告诉计算机碰到哪些词的时候使用其它的拼音
- 完美解决多音字转换问题(API)
- Java解决多音字转拼音代码、词库、blog
总结:
网上比较流行的有三种方式:
第一种:基于词库的汉字转拼音
词库中既要包含每个字的拼音,也要包含常用单词/短语的读音。有些字是多音字,所以至少要保存其最常用的读音,不常用的读音多出现在单词/短语里。
好了,词库准备好了,现在手头有一句话要转换要转换为拼音,这句话是:
你好世界杯
我们的词库是这样子的:
你: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
更好的方法是先进行分词得到:
提出
了
解决
方案
然后基于词库对每个结果分别处理。
第三种:然后基于词库对每个结果分别处理。
这里的拼音一般不带声调。
将汉字作为隐藏状态,拼音作为观测值,使用viterbi算法可以将多个拼音转换成合理的汉字。例如给出ti,chu,le,jie,jue,fang,an
,viterbi算法会认为提出了解决方案
是最合理的状态序列。
HMM需要三个分布,分别是:
- 初始时各个状态的概率分布
- 各个状态互相转换的概率分布
- 状态到观测值的概率分布
这个3个分布就是三个矩阵,根据一些文本库统计出来即可。
viterbi算法基于动态规划,维基百科 - Viterbi algorithm给出了很好的解释和示例。
总结参考文献
关于基于词库Mapping的思路,又有两种常见形式。
1. 代码里面硬编码所有的汉字拼音和编码,在程序里面使用对照,找到拼音——这个和Mapping的思路一样,这样不好。硬编码对于本身的代码来说,是种负担,而且,这个方法没有很好的解决多音字的问题,一个『了』可以发音:le,也可以发音liao,此时系统瘫了。
第二种方法更加干净简洁,可扩展性能比较好的东西。
2. Mapping,写文件,这里有两个思路:
第一个思路,就是直接做个(汉字,拼音)的Key&Value的Mapping,这个方法缺点是——笨拙,每个字都要映射上,多音字还要多次(格式调整下也可以,比如:汉字 拼音1 拼音2),而且,系统快速查找会是个瓶颈,怎么看也看不起眼啊,不过有个好处是,可控性强,而且扩展也比较好。
第二个思路,用汉字编码来Mapping,这样Mapping出来有个好处,编码有序,可以在文件中,用偏移量快速定位,假设每个汉字分配一个固定大小的编码块,在文件中,用编码得出偏移量,可以快速的找到汉字编码块进行解析。
准确识别各种复杂语句中混杂的多音字其实并没有那么容易,有两个关键的地方,一个是多音字词库的丰富程度,一个是能否正确的给语句进行分词。而词库和分词的实现都需要一个非常丰富的词典
文件。所以想要提高汉字2拼音性能,要增加词库的丰富程度,还有分词的能力。
中文转换成拼音实施方法相关推荐
- php实现拼音转中文,PHP将中文转换成拼音的方法
PHP将中文转换成拼音的方法 发布时间:2020-06-24 14:33:31 来源:亿速云 阅读:90 作者:Leah 这篇文章运用简单易懂的例子给大家介绍PHP将中文转换成拼音的方法,代码非常详细 ...
- php怎么把中文转,php如何把中文转换成拼音
php把中文转换成拼音的方法:首先在encode方法中传进两个参数,分别为"$utf8Data"和"$sRetFormat",第一个参数为"传入的中文 ...
- php_excel表中_如何自动将多行中文转换成拼音,Excel2007怎么批量将汉字转换为拼音...
excel中录入的姓名全是中文,但是要发给老外,所以要改成拼音显示的,怎么批量转换呢?其实方法很简单Excel中自带转换功能,下面就跟学习啦小编一起看看excel2007批量将汉字转换成拼音的方法. ...
- C#汉字转拼音(npinyin)将中文转换成拼音全文或首字母
汉字转拼音貌似一直是C#开发的一个难题,无论什么方案都有一定的bug,之前使用了两种方案. 1.Chinese2Spell.cs 一些不能识别的汉字全部转为Z 2.Microsoft Visual S ...
- 输入中文转换成拼音首字母
1.输入中文转换成拼音首字母. 需要的maven 工具包 <dependency><groupId>com.belerweb</groupId><artif ...
- 将中文转换成拼音的组件类的pinyin
---------------------- ASP.Net+Unity开发. .Net培训.期待与您交流! ---------------------- 1.增加对不同编码格式文本的支持,同时增加编 ...
- php_excel表中_如何自动将多行中文转换成拼音,excel表格怎样设置批量将汉字变成拼音...
在日常工作,常常会用到Excel做表格,也许在这个过程中会输入姓名或其它名称等,然后再另一个格中显示对应的拼音,很多人会一个个的输入,其实是可以直接进行批量转换的.下面学习啦给大家分享excel批量将 ...
- centos mysql lujin_MySQL中文转换成拼音的函数[zt]
注:如果创建函数出错,试试这个 set global log_bin_trust_function_creators=TRUE; 代码如下 -- 创建汉字拼音对照临时表 CREATE TABLE IF ...
- utf8版 中文转换成拼音
<?php /*************************************************************************** * ...
- 中文转换成拼音和笔画
在程序设计中,为方便用户输入,需设计成用户输入拼音首字母或笔画,电脑显示相应的汉字,下面存储过程演示这一过程: 1.在数据库中建一对应表chinese_tab,内含6W多条汉字对应记录,字段分别为ch ...
最新文章
- python模块手册_python模块说明
- UA PHYS515A 电磁理论V 电磁波与辐射6 波导
- Java 守护线程概述
- Android模拟位置出错IllegalArgumentException: Incomplete location object, missing timestamp or accuracy?
- 小程序 WXS响应事件(超出两屏显示返回顶部按钮)
- 超级抖音腾讯视频V3.6.0小程序源码 前端+后端 支持视频采集和上传
- 数据科学 IPython 笔记本 9.11 结构化数据:NumPy 的结构化数组
- getBoundingClientRect()来获取页面元素的位置”
- mysql 库迁移工具_mysql数据库迁移,有什么工具或许办法
- windows XP cmd命令大全
- 蝗虫优化算法(GOA)优化深度置信网络DBN【matlab源码】
- 速卖通热卖产品推荐—2021年速卖通家居行业厨房用品热卖产品趋势
- java,png,jpg,如何合并图片进行盖章,并且对印章的位置进行定位。
- [学习笔记]后缀系列总结
- #12304;#28404;#28404;#37329;#34701;#23458;#26381;#30005;#35805;#12305;
- 跟我一起从零学习安卓逆向分析
- 漫步者lollipods如何调节音量_漫步者LolliPods怎么配对双耳-使用教程
- 论文阅读笔记《Meta-Transfer Learning for Few-Shot Learning》
- 阿里云备案成功的域名可以用腾讯云的服务器吗?
- graph sage 翻译