pinyin-plus

汉字转拼音

License

License

GroupId

GroupId

com.github.taptap
ArtifactId

ArtifactId

pinyin-plus
Last Version

Last Version

1.0
Release Date

Release Date

Type

Type

jar
Description

Description

pinyin-plus
汉字转拼音
Project URL

Project URL

https://github.com/TapTap/pinyin-plus
Source Code Management

Source Code Management

https://github.com/TapTap/pinyin-plus

Download pinyin-plus

How to add to project

<!-- https://jarcasting.com/artifacts/com.github.taptap/pinyin-plus/ -->
<dependency>
    <groupId>com.github.taptap</groupId>
    <artifactId>pinyin-plus</artifactId>
    <version>1.0</version>
</dependency>
// https://jarcasting.com/artifacts/com.github.taptap/pinyin-plus/
implementation 'com.github.taptap:pinyin-plus:1.0'
// https://jarcasting.com/artifacts/com.github.taptap/pinyin-plus/
implementation ("com.github.taptap:pinyin-plus:1.0")
'com.github.taptap:pinyin-plus:jar:1.0'
<dependency org="com.github.taptap" name="pinyin-plus" rev="1.0">
  <artifact name="pinyin-plus" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.github.taptap', module='pinyin-plus', version='1.0')
)
libraryDependencies += "com.github.taptap" % "pinyin-plus" % "1.0"
[com.github.taptap/pinyin-plus "1.0"]

Dependencies

compile (2)

Group / Artifact Type Version
com.github.houbb : segment jar 0.1.8
com.github.houbb : segment-data-phrase-api jar 0.0.1

test (2)

Group / Artifact Type Version
org.junit.jupiter : junit-jupiter-api jar 5.6.0
io.undertow : undertow-core jar 2.1.0.Final

Project Modules

There are no modules declared in this project.

pinyin-plus

汉字转拼音的库,有如下特点

  • 拼音数据基于 cc-cedictkaifangcidian 开源词库
  • 基于拼音词库的数据初始化分词引擎进行分词,准确度高,解决多音字的问题
  • 支持繁体字
  • 支持自定义词库,词库格式同 cc-cedict 字典格式
  • api 简单,分为普通模式、索引模式

使用场景

汉字转拼音,常用于索引引擎场景创建拼音的索引,这个场景的问题一般由两种实现路径,一种是直接使用带拼音的的分词 插件,会自动帮你创建出拼音的索引,还有一种就是自己将汉字转换为拼音字符串,采用空格分隔分词来达到定制化索引的目的。 不论哪种实现路径,都离不开分词和拼音转换。pinyin-plus 的特点是,索引分词的词库和拼音的词库是基于同一套词库, 所以多音词的准确度特别高,而且词库的格式保留了开源词典的格式,词库可以轻松的定时更新。同时也预留了自定义词库的扩展 接口,保留定制化需求的高优先级

性能

#pinyin-plus 的压测数据,测试词语:率土之滨
kl@kldeMacBook-Pro-6 arthas % wrk -t16 -c100 -d15s --latency http://localhost:8080/%E7%8E%87%E5%9C%9F%E4%B9%8B%E6%BB%A8
Running 15s test @ http://localhost:8080/%E7%8E%87%E5%9C%9F%E4%B9%8B%E6%BB%A8
  16 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   733.97us  138.45us  16.40ms   96.12%
    Req/Sec     8.19k   293.50     8.90k    87.83%
  Latency Distribution
     50%  718.00us
     75%  739.00us
     90%  785.00us
     99%    1.02ms
  1970023 requests in 15.10s, 266.78MB read
Requests/sec: 130469.56
Transfer/sec:     17.67MB

添加依赖

gradle

compile "com.github.taptap:pinyin-plus:1.0"

maven

        <dependency>
            <groupId>com.github.taptap</groupId>
            <artifactId>pinyin-plus</artifactId>
            <version>1.0</version>
        </dependency>

使用

    //普通模式示例,汉字转换拼音后,单子采用空格隔开输出
    @Test
    void testToPinYin() {
        String pinyin = PinyinPlus.to("率土之滨");
        System.err.println(pinyin);
        Assertions.assertEquals("shuai tu zhi bin", pinyin);
    }
    //索引模式示例,汉字转换拼音后,词组采用空格隔开输出
    @Test
    void testToPinYin2() {
            String pinyin = PinyinPlus.toIndex("写的射雕英雄传");
            System.err.println(pinyin);
            Assertions.assertEquals("xie de shediaoyingxiongzhuan", pinyin);
    }
    

自定义词库

在项目 resources 目录下,新增 custom_cedict_ts.u8 文本文件,输入如下格式数据,# 开头的为注释,如:

#自定义词库
血花 血花 [xue4 hua1] //

格式保留和开源词库 cc-cedict 一样的风格,遇到相同的词组,自定义的优先级最高,会覆盖系统默认的词组

鸣谢

com.github.taptap

TapTap

易玩(上海)网络科技有限公司

Versions

Version
1.0