• Stars
    star
    204
  • Rank 190,957 (Top 4 %)
  • Language Hack
  • Created over 8 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

[本项目不再维护] 将汉字转换为拼音, 支持多音字,拼音 -> pin yin

ChineseTone (汉字转拼音)

ChineseTone是基于Python实现的拼音转汉字工具,实现了与jpinyin类似的接口,兼容Python2、Python3,支持多音字。

安装

方式1:

$ python setup.py install --user

方式2:

$ sudo python setup.py install

方式3:

$ pip install ChineseTone --user

方式4:

$ sudo pip install ChineseTone

使用

基本使用

from ChineseTone import *

print PinyinHelper.convertToPinyinFromSentence('了解了')
# 输出:[u'li\u01ceo', u'ji\u011b', u'le']

print '/'.join(PinyinHelper.convertToPinyinFromSentence('了解了'))
# 输出:liǎo/jiě/le

print PinyinHelper.convertToPinyinFromSentence('了解了', pinyinFormat=PinyinFormat.WITH_TONE_MARK)
# 输出:[u'li\u01ceo', u'ji\u011b', u'le']

print PinyinHelper.convertToPinyinFromSentence('了解了', pinyinFormat=PinyinFormat.WITH_TONE_NUMBER)
# 输出:[u'lia3o', u'jie3', u'le']

print PinyinHelper.convertToPinyinFromSentence('了解了', pinyinFormat=PinyinFormat.WITHOUT_TONE)
# 输出:[u'liao', u'jie', u'le']

第一个参数必须是unicode类型,或者utf-8编码的字符串。

非中文字符保持不变:

print PinyinHelper.convertToPinyinFromSentence('了解了,Mike', pinyinFormat=PinyinFormat.WITHOUT_TONE)
# 输出:[u'liao', u'jie', u'le', u'\uff0c', u'M', u'i', u'k', u'e']

可以用指定的字符作为非中文字符的输出:

print PinyinHelper.convertToPinyinFromSentence('了解了,Mike', pinyinFormat=PinyinFormat.WITHOUT_TONE, replace='%')
# 输出:[u'liao', u'jie', u'le', u'%', u'%', u'%', u'%', u'%']

某些情况下,为了保证准确性,可以指定一个分词函数,该函数必须返回一个可迭代对象,例如下面的cut函数:

import jieba

def cut(s):
    return jieba.cut(s, cut_all=False)

for word in cut('我来到北京清华大学,mike'):
    print word

'''输出

来到
北京
清华大学
,
mike
'''

使用segment参数指定分词函数:

import jieba

def cut(s):
    return jieba.cut(s, cut_all=False)

## 未指定分词函数
print PinyinHelper.convertToPinyinFromSentence('提出了解决方案', pinyinFormat=PinyinFormat.WITHOUT_TONE)
# 输出:[u'ti', u'chu', u'liao', u'jie', u'jue', u'fang', u'an']

## 指定分词函数
print PinyinHelper.convertToPinyinFromSentence('提出了解决方案', pinyinFormat=PinyinFormat.WITHOUT_TONE, segment=cut)
# 输出:[u'ti', u'chu', u'le', u'jie', u'jue', u'fang', u'an']

添加自己的词库

from ChineseTone import *

print ','.join(PinyinHelper.convertToPinyinFromSentence('金馆长啊', pinyinFormat=PinyinFormat.WITHOUT_TONE))
# 输出有错: jin,guan,chang,a

# 添加词库
PinyinHelper.addWordPinyin('金馆长', ['jin', 'guan', 'zhang'])  # 建议实际情况下拼音中加入声调
print ','.join(PinyinHelper.convertToPinyinFromSentence('金馆长啊', pinyinFormat=PinyinFormat.WITHOUT_TONE))
# 输出正确: jin,guan,zhang,a

# 也可以自定义某个字符的读音
print ','.join(PinyinHelper.convertToPinyinFromSentence('价值40$', pinyinFormat=PinyinFormat.WITHOUT_TONE))
# 输出: jia,zhi,4,0,$
# 自定义
PinyinHelper.addCharPinyin('4', ['si'])   # 考虑多音字,所以用list
PinyinHelper.addCharPinyin('0', ['ling'])
PinyinHelper.addWordPinyin('$', ['mei', 'yuan'])  # 这个用法奇怪些
print ','.join(PinyinHelper.convertToPinyinFromSentence('价值40$', pinyinFormat=PinyinFormat.WITHOUT_TONE))
# 输出: jia,zhi,si,ling,mei,yuan

获取某汉字的所有拼音

print PinyinHelper.convertToPinyinFromChar('了')
# 输出:[u'le', u'li\u01ceo']

print PinyinHelper.convertToPinyinFromChar('了', PinyinFormat.WITH_TONE_MARK)
# 输出:[u'le', u'li\u01ceo']

print PinyinHelper.convertToPinyinFromChar('了', PinyinFormat.WITH_TONE_NUMBER)
# 输出:[u'le', u'lia3o']

print PinyinHelper.convertToPinyinFromChar('了', PinyinFormat.WITHOUT_TONE)
# 输出:[u'le', u'liao']

## 若不是单个汉字,返回原值组成的长度为1的列表
print PinyinHelper.convertToPinyinFromChar('了解')
# 输出:[u'\u4e86\u89e3']  # 即“了解”

print PinyinHelper.convertToPinyinFromChar('12')
# 输出:[u'12']

判断是否为多音字

print PinyinHelper.hasMultiPinyin('了')
# 输出:True

print PinyinHelper.hasMultiPinyin('你')
# 输出:False

获取拼音的声母部分

print PinyinHelper.getShengmu('ni')
# 输出:n

print PinyinHelper.getShengmu('sheng')
# 输出:sh

print PinyinHelper.getShengmu('en')
# 输出:None

是否全部是汉字

print ChineseHelper.isChinese('n')
# 输出:False

print ChineseHelper.isChinese('你好')
# 输出:True

print ChineseHelper.isChinese('hi,小王')
# 输出:False

简单的简/繁转换

print ChineseHelper.convertToTraditionalChinese('hi,你好,我来到了北京天安门')
# 输出:hi,你好,我來到了北京天安門

print ChineseHelper.convertToSimplifiedChinese('hi,你好,我來到了北京天安門')
# 输出:hi,你好,我来到了北京天安门

词库

词库位于ChineseTone/data下,可以根据需要添加条目。

词库来自jpinyinpinyinpinyinpinyin.db中的数据是合成自这三个词库。

更新词库后需要重新安装:

  • 如果有build目录,则删除;
  • 安装

原理

如何实现拼音与汉字的互相转换

感谢

补充

@2016-6-12: https://github.com/mozillazg/pinyin-data/ 整理了非常好的拼音数据。

协议

WTFPL && 注明词库来源,即:

More Repositories

1

TextRank4ZH

🌳从中文文本中自动提取关键词和摘要
Python
3,067
star
2

Pinyin2Hanzi

拼音转汉字, 拼音输入法引擎, pin yin -> 拼音
Python
552
star
3

huno

A responsible theme for Hexo
CSS
495
star
4

another-tutorial-about-java-web

😿 another tutorial about java web
340
star
5

tencent-open-source

腾讯开源作品整理
Python
274
star
6

how-to-load-dynamic-script

The right way to load javascript files dynamically.
HTML
217
star
7

kmedoids

[Unmaintained] The Python implementation of k-medoids.
Python
119
star
8

flask-tutorial

Python Flask Web 框架入门教程
50
star
9

awesome-toc

generate awesome toc for web page
HTML
44
star
10

jianshu-site-search

简书站内搜索
Python
24
star
11

mybatis-tutorial

mybatis 入门教程
Java
16
star
12

Flask-dashboard-for-UPYUN

基于Python Flask框架的又拍云管理工具
JavaScript
16
star
13

paste-as-markdown

Paste HTML as Markdown
JavaScript
5
star
14

TPP

[Deprecated] A PHP framework
PHP
3
star
15

mini-pinyin

Get tone(pinyin) of Chinese character.
JavaScript
2
star
16

n-source

源码注释 https://github.com/tj/n
Shell
2
star
17

rq-source

源码注释 https://github.com/nvie/rq
Python
2
star
18

random-password-cli

Generate random password in cli.
JavaScript
2
star
19

center-text

Center the output in terminal.
Shell
1
star
20

terminal-text-width

Get the number of columns occupied by specified text in terminal.
JavaScript
1
star
21

pocha-demos

pocha is python's mocha.
Python
1
star
22

lyric-player

Play lyric in terminal.
JavaScript
1
star
23

p

PS1 management
Python
1
star
24

Timestamp-Workflow

Alfred Workflow 时间戳转换
Python
1
star
25

wxapp-find-pinyin

微信小程序:查拼音
JavaScript
1
star