pinyin

pinyin 是 java 实现的高性能中文拼音转换工具。

创作目的

想为 java 设计一款便捷易用的拼音工具。

特性

极简的 api 设计

支持转换长文本

支持多音字

支持多种拼音标注方式

支持中文分词

快速开始

准备

jdk 1.7+

maven 引入

com.github.houbb

pinyin

0.0.4

快速开始

返回中文的拼音

使用 PinyinHelper.toPinyin(string) 进行中文转换。

String pinyin = PinyinHelper.toPinyin("我爱中文");

Assert.assertEquals("wǒ ài zhōng wén", pinyin);

返回多音字列表

使用 PinyinHelper.toPinyin(char) 获取多音字的读音列表。

List pinyinList = PinyinHelper.toPinyin('重');

Assert.assertEquals("[zhòng, chóng, tóng]", pinyinList.toString());

分词特性

默认支持中文分词,对用户透明。

String pinyin = PinyinHelper.toPinyin("重庆火锅");

Assert.assertEquals("chóng qìng huǒ guō", pinyin);

String pinyin2 = PinyinHelper.toPinyin("分词也很重要");

Assert.assertEquals("fēn cí yě hěn zhòng yào", pinyin2);

指定拼音标注形式

api

/**

* 转换为拼音

* @param string 原始信息

* @param styleEnum 样式枚举

* @return 结果

* @since 0.0.3

*/

public static String toPinyin(final String string, final PinyinStyleEnum styleEnum)

PinyinStyleEnum 样式枚举

枚举

说明

例子

DEFAULT

默认模式,拼音声调在韵母第一个字母上。

pīn yīn

NORMAL

普通模式,即不带声调。

pin yin

NUM_LAST

数字标注模式,即拼音声调以数字形式在各个拼音之后,用数字 1-5 进行表示。

pin1 yin1

FIRST_LETTER

首字母模式,只返回拼音的首字母部分。

p y

测试案例

DEFAULT

String pinyin = PinyinHelper.toPinyin("我爱中文", PinyinStyleEnum.DEFAULT);

Assert.assertEquals("wǒ ài zhōng wén", pinyin);

NORMAL

String pinyin = PinyinHelper.toPinyin("我爱中文", PinyinStyleEnum.NORMAL);

Assert.assertEquals("wo ai zhong wen", pinyin);

NUM_LAST

String pinyin = PinyinHelper.toPinyin("我爱中文", PinyinStyleEnum.NUM_LAST);

Assert.assertEquals("wo3 ai4 zhong1 wen2", pinyin);

FIRST_LETTER

String pinyin = PinyinHelper.toPinyin("我爱中文", PinyinStyleEnum.FIRST_LETTER);

Assert.assertEquals("w a z w", pinyin);

后期 Road-Map

支持中文繁简体

默认关闭该功能

拼音转汉字

用户自定义相关

用户自定义词组

用户自定义分词

benchmark

性能对比时使用相同的机器,相同测试文本,验证相同的次数。

均提前做好预热处理,可供参考。

单个分词

对比函数

对比次数

对比内容

耗时

Pinyin4j toHanyuPinyinStringArray()

100w 次

相同文本随机选择一个字符

621 ms

pinyin toPinyin()

100w 次

相同文本随机选择一个字符

317 ms

字符串分词

对比函数

对比次数

对比内容

耗时

Pinyin4j toHanyuPinyinString()

1w 次

相同长文本

33002 ms

pinyin toPinyin()

1w 次

相同长文本

17975 ms

而且 Pinyin4j 的汉语字符串转换是不支持分词的,本项目在支持分词的情况下速度基本依然是 pinyin4j 的两倍。

技术鸣谢

segment 提供的中文分词。

java分词支持拼音_java 支持分词的高性能拼音转换工具,速度是 pinyin4j相关推荐

  1. java 中文分词转拼音_java 支持分词的高性能拼音转换工具, 速度是 pinyin4j 的两倍...

    java 支持分词的高性能拼音转换工具, 速度是 pinyin4j 的两倍 pinyin https://github.com/houbb/pinyin 是 java 实现的高性能中文拼音转换工具. ...

  2. java分词支持拼音_java 支持分词的高性能拼音转换工具,速度是 pinyin4j 的两倍...

    pinyin pinyin 是 java 实现的高性能中文拼音转换工具. 创作目的 想为 java 设计一款便捷易用的拼音工具. 特性 极简的 api 设计 支持转换长文本 支持多音字 支持多种拼音标 ...

  3. java获取汉字拼音_Java 根据汉字获取其拼音

    pom.xml导入pinyin4j的依赖 com.belerweb pinyin4j 2.5.1 汉字转拼音工具类package com.bizcloud.function; import net.s ...

  4. 推荐一个支持各种地理坐标系、投影坐标系的在线转换工具

    支持多种地理坐标系投影坐标系之间进行转换的在线小工具. 支持海量坐标系进行转换,不仅支持手动输入,还支持以文件导入的方式进行批量转换~ GIS 小工具​www.supermapol.com/gisto ...

  5. java正向最大匹配算法_java中文分词之正向最大匹配法实例代码

    前言 基于词典的正向最大匹配算法(最长词优先匹配),算法会根据词典文件自动调整最大长度,分词的好坏完全取决于词典. 所谓词典正向最大匹配就是将一段字符串进行分隔,其中分隔 的长度有限制,然后将分隔的子 ...

  6. java中是否支持多重继承_java支持多重继承吗 JAVA特性面试题:

    1.简要介绍java程序的健壮性. 答:JAVA程序会在编译和运行的时候自动的检测可能出现的错误,而且它是一种强类型语言,对于类型的检查很严格,而且它的垃圾回收机制也有效的避免了内存的泄漏. 2.为什 ...

  7. java数据访问策略_java – 支持基于最近访问过的项目的高效启动策略的数据结构...

    我需要一个数据结构,以支持最长时间前请求的项目的最有效的启动策略.例如,我有一堆不时要求的物品.当我内存不足时,我想踢出我数据结构中最古老的项目(哈希映射). 我在想像Queue这样的FIFO ds, ...

  8. java获取汉字拼音_Java获取汉字对应的拼音(全拼或首字母)

    Java 根据汉语字符串获得对应的拼音字符串或者拼音首字母字符串等操作,需要添加jar包: 代码实现: import java.util.regex.Matcher; import java.util ...

  9. java将中文转换成拼音_java实现将汉语转换为拼音功能

    这几天在做项目的时候用到了通过拼音去数据库表里面去模糊查询汉语字段,刚开始的时候感觉特别神奇,查了好多资料,直接去模糊查询是能实现的,但是貌似很复杂.所以最终取了一个比较容易的方案,就是给数据库表里面 ...

最新文章

  1. 我们死去后,宇宙还能记住我们吗?
  2. nginx gzip配置
  3. 控制结构(1)-判断控制
  4. error C3861: “setw”: 找不到标识符
  5. 融合通信常见问题2月刊 | 云信小课堂
  6. HLS—AXI4-Lite Interface
  7. matlab guide 打开图像并将图像显示到界面
  8. bootstrap设计登录页面_前端小白如何在10分钟内打造一个爆款Web响应式登录界面?...
  9. 摘抄:java查询数据导出excel并返回给浏览器下载
  10. SQLAlchemy介绍
  11. Vmarker图片标注工具使用文档
  12. python卡方拟合性检验_卡方拟合优度检验
  13. 自定义快捷键整理 - Windows
  14. python 金融知识图谱_从零搭建金融证券知识图谱-Part2
  15. 反向传播思想及其优缺点
  16. 学习通信原理之——什么是傅立叶级数
  17. CSS基础常识问答(二)
  18. 带协议解析的串口调试助手
  19. mysql提权软件后门_Mysql提权留后门
  20. pandas使用read_csv函数读取文件的前N行数据并保留表头、pandas使用read_csv函数读取制表符分割的文件(tab-delimited)、自定义设置sep参数

热门文章

  1. Archlinux和Windows双系统安装
  2. VCS makefile文件
  3. XXL-JOB原理--任务调度中心执行器注册(三)
  4. 手机酷派4G5316 5313s 黑砖 求转成功 9008端口 9006端口 少走弯路选对镜像...
  5. insert 插入数据
  6. Jetson-Xavier-NX刷机+pytorch环境配置+yolov5运行
  7. idea中的jar包在哪里导入?
  8. 【oracle】oracle创建表、创建索引、创建自增id
  9. Linux内核的删除
  10. Python面向对象编程(类编程)中self的含义详解(简单明了直击本质的解释)