java分词支持拼音_java 支持分词的高性能拼音转换工具,速度是 pinyin4j 的两倍...
发布日期:2021-06-24 16:45:23 浏览次数:3 分类:技术文章

本文共 2042 字,大约阅读时间需要 6 分钟。

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 提供的中文分词。

转载地址:https://blog.csdn.net/weixin_33921444/article/details/114563887 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:java中的%不对 如何处理_Java心得--异常及其处理
下一篇:java预处理指令_Java程序员学C++_1_C++中的预处理命令 | 学步园

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月18日 23时38分58秒