开源最前线 猿妹 整编

GitHub上一直有很多有意思的开源小工具,今天和大家分享一个可以把你汉字转换成拼音的开源工具 — pinyin,例如:汉字拼音 ➜ hàn zì pīn yīn 。

截至今日,该项目已经获得了 3523 个「star」以及 489 个「fork」,而且开发者也是十分勤奋,上一次更新就在两天前。(GitHub项目地址:)

这个开源工具就是帮助你把中文字符转换为拼音,可用于可以用于汉字注音、排序、检索。而且支持在Node 和 Web 浏览器环境运行。具有如下特性:

● 根据词组智能匹配最正确的拼音。

● 支持多音字。

● 简单的繁体支持。

● 支持多种不同拼音风格。

而且这个小工具还有不同语言版本,包括JavaScript、Python、Go、Rust,下面我们主要介绍Node.js/JavaScript 版本:

1.Node.js/JavaScript 版

安装:

via npm

npm install pinyin

用法:

var pinyin = require("pinyin");

console.log(pinyin("中心"));    // [ [ 'zhōng' ], [ 'xīn' ] ]
console.log(pinyin("中心", {
  heteronym: true               // 启用多音字模式
}));                            // [ [ 'zhōng''zhòng' ], [ 'xīn' ] ]
console.log(pinyin("中心", {
  heteronym: true,              // 启用多音字模式
  segment: true                 // 启用分词,以解决多音字问题。
}));                            // [ [ 'zhōng' ], [ 'xīn' ] ]
console.log(pinyin("中心", {
  style: pinyin.STYLE_INITIALS, // 设置拼音风格
  heteronym: true
}));                            // [ [ 'zh' ], [ 'x' ] ]

命令行:

$ pinyin 中心
zhōng xīn
$ pinyin -h                           // [ [ 'zh' ], [ 'x' ] ]

方法 pinyin(words[, options])

将传入的中文字符串 (words) 转换成拼音符号串。options 是可选的,可以设定拼音风格,或打开多音字选项。返回二维数组,第一维每个数组项位置对应每个中文字符串位置。 第二维是各个汉字的读音列表,多音字会有多个拼音项。

拼音汉字在线转换软件_汉字转拼音在线_拼音汉字在线转换

方法 Number pinyin.compare(a, b)

按拼音排序的默认算法。

参数

options.segment:是否启用分词模式,中文分词有助于极大的降低多音字问题。 但性能会极大的下降,内存也会使用更多。

options.heteronym:是否启用多音字模式,默认关闭。关闭多音字模式时,返回每个汉字第一个匹配的拼音。启用多音字模式时,返回多音字的所有拼音列表。

options.style:指定拼音风格。可以通过以下几种 STYLE_ 开头的静态属性进行指定:

静态属性

.STYLE_NORMAL:普通风格,即不带声调。如:pin yin

.STYLE_TONE:声调风格,拼音声调在韵母第一个字母上。注:这是默认的风格。如:pīn yīn

.STYLE_TONE2:声调风格 2,即拼音声调以数字形式在各个拼音之后,用数字 [0-4] 进行表示。如:pin1 yin1

.STYLE_TO3NE:声调风格 3,即拼音声调以数字形式在注音字符之后,用数字 [0-4] 进行表示。如:pi1n yi1n

.STYLE_INITIALS:声母风格,只返回各个拼音的声母部分。对于没有声母的汉字,返回空白字符串。如:中国的拼音:zh g。声明风格会区分 zh 和 z,ch 和 c,sh 和 s。

注意:部分汉字没有声母,如 啊,饿 等,另外 y, w, yu 都不是声母, 这些汉字的拼音声母风格会返回 “”。

.STYLE_FIRST_LETTER:首字母风格,只返回拼音的首字母部分。

为什么没有 y, w, yu 几个声母?

因为根据《汉语拼音方案》, y,w,ü (yu) 都不是声母,在某些特定韵母无声母时,才加上 y 或 w,而 ü 也有其特定规则。

2.Python 版

Python版本地址:

安装:

$ pip install pypinyin

使用示例:

Python 3(Python 2 下把 ‘中心’ 替换为 u’中心’ 即可):

>>> from pypinyin import pinyin, lazy_pinyin, Style
>>> pinyin('中心')
[['zhōng'], ['xīn']]
>>> pinyin('中心', heteronym=True)  # 启用多音字模式
[['zhōng''zhòng'], ['xīn']]
>>> pinyin('中心', style=Style.FIRST_LETTER)  # 设置拼音风格
[['z'], ['x']]
>>> pinyin('中心', style=Style.TONE2, heteronym=True)
[['zho1ng''zho4ng'], ['xi1n']]
>>> pinyin('中心', style=Style.BOPOMOFO)  # 注音风格
[['ㄓㄨㄥ'], ['ㄒㄧㄣ']]
>>> pinyin('中心', style=Style.CYRILLIC)  # 俄语字母风格
[['чжун1'], ['синь1']]
>>> lazy_pinyin('中心')  # 不考虑多音字的情况
['zhong''xin']

3. Go 版

Go版本地址:

安装:

go get -u github.com/mozillazg/go-pinyin

install CLI tool:

go get -u github.com/mozillazg/go-pinyin/cmd/pinyin
$ pinyin 中国人
zhōng guó rén

示例:

package main

import (
    "fmt"
    "github.com/mozillazg/go-pinyin"
)

func main() {
    hans := "中国人"

    // 默认
    a := pinyin.NewArgs()
    fmt.Println(pinyin.Pinyin(hans, a))
    // [[zhong] [guo] [ren]]

    // 包含声调
    a.Style = pinyin.Tone
    fmt.Println(pinyin.Pinyin(hans, a))
    // [[zhōng] [guó] [rén]]

    // 声调用数字表示
    a.Style = pinyin.Tone2
    fmt.Println(pinyin.Pinyin(hans, a))
    // [[zho1ng] [guo2] [re2n]]

    // 开启多音字模式
    a = pinyin.NewArgs()
    a.Heteronym = true
    fmt.Println(pinyin.Pinyin(hans, a))
    // [[zhong zhong] [guo] [ren]]
    a.Style = pinyin.Tone2
    fmt.Println(pinyin.Pinyin(hans, a))
    // [[zho1ng zho4ng] [guo2] [re2n]]

    fmt.Println(pinyin.LazyPinyin(hans, pinyin.NewArgs()))
    // [zhong guo ren]

    fmt.Println(pinyin.Convert(hans, nil))
    // [[zhong] [guo] [ren]]

    fmt.Println(pinyin.LazyConvert(hans, nil))
    // [zhong guo ren]
}

4.Rust 版

Rust版本地址:

Add this to your Cargo.toml:

[dependencies]
pinyin = "0.4"

示例:

extern crate pinyin;

pub fn main() {
    let hans = "中国人";
    let mut args = pinyin::Args::new();

    // 默认输出 [["zhong"] ["guo"] ["ren"]]
    println!("{:?}",  pinyin::pinyin(hans, &args));
    // ["zhong""guo""ren"]
    println!("{:?}",  pinyin::lazy_pinyin(hans, &args));

    // 包含声调 [["zhōng"], ["guó"], ["rén"]]
    args.style = pinyin::Style::Tone;
    println!("{:?}",  pinyin::pinyin(hans, &args));

    // 声调用数字表示 [["zho1ng"] ["guo2"] ["re2n"]]
    args.style = pinyin::Style::Tone2;
    println!("{:?}",  pinyin::pinyin(hans, &args));

    // 开启多音字模式
    args = pinyin::Args::new();
    args.heteronym = true;
    // [["zhong""zhong"] ["guo"] ["ren"]]
    println!("{:?}",  pinyin::pinyin(hans, &args));

    // [["zho1ng""zho4ng"] ["guo2"] ["re2n"]]
    args.style = pinyin::Style::Tone2;
    println!("{:?}",  pinyin::pinyin(hans, &args));
}

你以为这就完了么?当然不是,猿妹搜索了一下,GitHub上类似的项目还有很多,这边举几个相似的项目:

1、pinyin4j

Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 (项目地址:)

2、pinyin

Pinyin 是一个将中文转换为拼音的PHP工具,支持多音字,以及10w+常用词的正确音译,基于CC-CEDICT 词典。(详情:)

3、jpinyin

JPinyin是一个汉字转拼音的Java开源类库,在PinYin4j的功能基础上做了一些改进。具有以下特性:

1、准确、完善的字库;Unicode编码从4E00-9FA5范围及3007(〇)的20903个汉字中,JPinyin能转换除46个异体字(异体字不存在标准拼音)之外的所有汉字;

2、拼音转换速度快;经测试,转换Unicode编码从4E00-9FA5范围的20902个汉字,JPinyin耗时约100毫秒。

3、多拼音格式输出支持;JPinyin支持多种拼音输出格式:带音标、不带音标、数字表示音标以及拼音首字母输出格式;

4、常见多音字识别;JPinyin支持常见多音字的识别,其中包括词组、成语、地名等;

5、简繁体中文转换;

6、支持添加用户自定义字典(项目地址:)

4、PinYin4Objc

PinYin4Objc是一个流行的objective-c库,支持中文(简体和繁体)字符和最流行的拼音系统之间的转换,它的性能非常高效,第一次缓存数据,你可以使用async方法和块,这可以避免ui阻塞,并顺利运行。拼音的输出格式可以定制。(详情:)

5、chineseandpinyin

Java版汉字转拼音工具,支持多样化输出、拼音排序、中英混合排序!(详情:)

开源中国征稿开始啦!

开源中国 是目前备受关注、具有强大影响力的开源技术社区,拥有超过 200 万的开源技术精英。我们传播开源的理念,推广开源项目,为 IT 开发者提供一个发现、使用、并交流开源技术的平台。

———END———

限 时 特 惠: 本站每日持续更新海量各大最新【内部创业教程】,一年会员只需 98 元,全站资源免费下载 点击查看详情

站 长 微 信: webprojs_com

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注