Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

单字的多音情况太多了,只想用其中某一个字库,可以吗? #198

Closed
sorrytaobao opened this issue Apr 18, 2020 · 7 comments

Comments

@sorrytaobao
Copy link

直接安装之后,发现某些字的多音读音很多,比如“扔”字,默认的多音是[['rēng', 'rèng']]
其中rèng大部分情况是不需要的,所以有没有办法指定pinyin-data中的某一个库?
比如,只用kXHC1983.txt

@mozillazg
Copy link
Owner

不支持这个功能,不过你可以通过下面的方法间接实现:

  1. 使用 kXHC1983.txt 生成一个新的拼音数据文件:
$ python gen_pinyin_dict.py pinyin-data/kXHC1983.txt new_pinyin_data.py
  1. 使用这个新的拼音数据覆盖已有的数据(文档:https://pypinyin.readthedocs.io/zh_CN/master/usage.html#custom-dict ):
>>> from pypinyin import load_single_dict, pinyin
>>> import new_pinyin_data
>>> load_single_dict(new_pinyin_data.pinyin_dict)
>>> pinyin(u'扔')

@sorrytaobao
Copy link
Author

非常感谢,我试试

@sorrytaobao
Copy link
Author

Traceback (most recent call last):
File "G:/gitIdeaProjects/python-pinyin/gen_pinyin_dict.py", line 38, in
main(in_fp, out_fp)
File "G:/gitIdeaProjects/python-pinyin/gen_pinyin_dict.py", line 12, in main
for line in in_fp.readlines():
UnicodeDecodeError: 'gbk' codec can't decode byte 0x87 in position 19: illegal multibyte sequence
字符编码有问题了?

@sorrytaobao
Copy link
Author

我在代码里input的open里了编码就可以了

@sorrytaobao
Copy link
Author

另外还有个问题麻烦一下,我想自己修改字库,但是又不想在代码里硬编,是否可以通过方法直接修改pinyin-data里的字库?我看Pinyin-data里的字库有好多个,也有纠正的字库,这个多个字库怎么用?是将所有的字库,都通过上面的方法生成一个文件吗?

@mozillazg
Copy link
Owner

可以看一下 https://github.com/mozillazg/pinyin-data/blob/master/merge_unihan.py 这个程序, pinyin.txt 就是用这个程序生成的。

@mozillazg
Copy link
Owner

直接安装之后,发现某些字的多音读音很多,比如“扔”字,默认的多音是[['rēng', 'rèng']]
其中rèng大部分情况是不需要的,所以有没有办法指定pinyin-data中的某一个库?
比如,只用kXHC1983.txt

新开发了一个项目 pypinyin-dict 提供了一个预置的方法来实现这个需求:

$ pip install pypinyin-dict
>>> from pypinyin import pinyin
>>> pinyin('扔', heteronym=True)
[['rēng', 'rèng']]
>>> from pypinyin_dict.pinyin_data import kxhc1983
>>> kxhc1983.load()
>>> pinyin('扔', heteronym=True)
[['rēng']]
>>>

具体介绍详见项目仓库 README

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants