mozillazg / python-pinyin

汉字转拼音(pypinyin)
https://pypinyin.readthedocs.io
MIT License
4.92k stars 612 forks source link

特定句子无法标注拼音 #331

Closed sonnycalcr closed 2 months ago

sonnycalcr commented 2 months ago

运行环境

问题描述

具体看下面的代码片段及输出,

from pypinyin import lazy_pinyin

text ="""李祖原觉得当代的社会⼀直讲究⻄⽅的科学"""

print(text)
print(lazy_pinyin(text))
print(len(text))
print(len(lazy_pinyin(lazy_pinyin(text))))

输出为:

李祖原觉得当代的社会⼀直讲究⻄⽅的科学
['li', 'zu', 'yuan', 'jue', 'de', 'dang', 'dai', 'de', 'she', 'hui', '⼀', 'zhi', 'jiang', 'jiu', '⻄⽅', 'de', 'ke', 'xue']
19
18

可以看到,这里出现了部分的字和词没有标注拼音的情况。

问题复现步骤

运行上面的代码片段即可。

mozillazg commented 2 months ago

@sonnycalcr 这个是因为那几个字符其实并不是你预期的那几个汉字:

>>> ord( '⼀')
12032
>>> ord( '一')   # 预期应该是这个
19968
>>> ord('⻄')
11972
>>> ord('西')  # <-
35199
>>> ord('⽅')
12101
>>> ord('方')  # <-
26041

之前也有类似的反馈 https://github.com/mozillazg/python-pinyin/issues/314 , 等我后面有空的时候调研一下有哪些存在这种情况的异体字,以及看看是否需要支持这些异体字的拼音(这些字本身没有拼音,考虑按字形注音)。

sonnycalcr commented 2 months ago

@sonnycalcr 这个是因为那几个字符其实并不是你预期的那几个汉字:

>>> ord( '⼀')
12032
>>> ord( '一')   # 预期应该是这个
19968
>>> ord('⻄')
11972
>>> ord('西')  # <-
35199
>>> ord('⽅')
12101
>>> ord('方')  # <-
26041

之前也有类似的反馈 #314 , 等我后面有空的时候调研一下有哪些存在这种情况的异体字,以及看看是否需要支持这些异体字的拼音(这些字本身没有拼音,考虑按字形注音)。

感谢解惑~