mozillazg / python-pinyin

汉字转拼音(pypinyin)

Home Page:https://pypinyin.readthedocs.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

声母 Y 和 W 的问题

ultimate010 opened this issue · comments

类似

pinyin(u'中心', style=pypinyin.INITIALS) # 设置拼音风格
[['zh'], ['x']]

代码中声母表

_INITIALS = 'b,p,m,f,d,t,n,l,g,k,h,j,q,x,zh,ch,sh,r,z,c,s,'.split(',')

没有y和w。如果碰到Y和W开头的字,相应的字会返回空。
例如:

pinyin(u'火影忍者', style=pypinyin.INITIALS)
[[u'h'], [u''], [u'r'], [u'zh']]

我查了下资料,有的说声母不包括Y和W,所以这个返回是正常,但这样处理导致应用不好做,只能用首字母模式替代。是否新加一个接口,加上Y和W的返回,或者,说明上告知这个情况,以免别人使用的时候碰到问题。

嗯,谢谢你的建议。我之后会加一个 FAQ ,并把这个问题加到 FAQ 中。

@ultimate010 你的需求是否使用首字母风格更合适点?

不仅是 y, w 开头的拼音有这个问题,还有些没有声母的(比如 啊,饿,按,昂 等)情况也可能会给你带来困扰。

@hotoo 嗯,我的需求首字母确实更合适,不过一般情况下可能不知道声母中的Y、W问题,导致想当然的使用声母模式,结果出错。

有的说声母不包括Y和W

汉语拼音的声母当然包含 y, w……又不是注音里面要另分一类介母容纳 [iy] [uw]。

@Artoria2e5 汉语拼音的声母当然不包含 y, w。参见《汉语拼音方案》

@gumblex 欸,也算介母吗……(

应严格按《汉字拼音方案》来做才是正道的!

@ultimate010
请问python-pinyin如何批量处理?

运行环境
操作系统:Windows10
Python 版本:python-3.4.3
pypinyin 版本:v0.33.0

我有一个文本文件b.txt,utf-8格式,文件里面有内容:
这个
进行
因为
还是
时候
看到
……
想把转换成汉语拼音,该如何操作?

能批处理、拖叠文件等一步到位吗?
指教一下吧!谢!

还有一个问题,就是复韵母的问题,比如:ai2->爱,这类问题目前无法识别

@ultimate010 你的需求是否使用首字母风格更合适点?

不仅是 y, w 开头的拼音有这个问题,还有些没有声母的(比如 啊,饿,按,昂 等)情况也可能会给你带来困扰。

对,这类复韵母的问题没有解决

@charlesXu86 没明白你说的问题是啥,如果说的是没声母的问题的话,复韵母获取不到声母是预期的,因为它确实没有声母。

    感觉拼音方案的声韵母划分,很多时候确实是反声学直觉的。拼音方案就有声母,韵母,介母,整体认读音节 这样的划分。但是这样的分类,没办法直接映射到声学的音素类型划分【清音、浊音或者元音、辅音】上。它就是一个注音拼写方案。
    但是这个方案有多方便吗?也不是。比如 “火影忍者” 的第二个汉字。一般情况下 Y是声母吗?是声母。比如ya3, yan3,它就是声母。但是“火影”的“影”,拼音是ying3, 它是汉语拼音十六个整体认读音节之一,发的是其韵母部分 ing的音,y相当于没有发音,或者被涵盖到整体发音里了。所以认为这个拼音没有声母,y不是声母。其实如果跟 a[啊], an【安】一样,把ing也作为一个独立音节韵母,影就拼音成 ing3 就不至于发生这种问题。但是拼音方案就这么写的,没有办法。
    其实如果不是把“**整体认读**”作为跟声、韵母一个级别的分类的话,认为 “影”的声母是Y,也是没问题的。拼写上它占了声母的位置,认为它是声母也不影响发音。