博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java分词支持拼音_java 支持分词的高性能拼音转换工具,速度是 pinyin4j 的两倍...
阅读量:5149 次
发布时间:2019-06-13

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

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

b739ec46bb5c46d9c0aa4ce35ba1ea56.png

关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。

本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。

[java 支持分词的高性能拼音转换工具,速度是 pinyin4j 的两倍]http://www.zyiz.net/tech/detail-99566.html

转载地址:http://todnv.baihongyu.com/

你可能感兴趣的文章
关于异步reset
查看>>
索引优先队列的工作原理与简易实现
查看>>
处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“Manag
查看>>
01: socket模块
查看>>
mysql触发器
查看>>
淌淌淌
查看>>
web页面实现指定区域打印功能
查看>>
win10每次开机都显示“你的硬件设置已更改,请重启电脑……”的解决办法
查看>>
macOS10.12允许所有来源设置
查看>>
C++有关 const & 内敛 & 友元&静态成员那些事
查看>>
函数积累
查看>>
python搜索引擎(转)
查看>>
关于height,line-height导致的样式混乱的问题
查看>>
《SEO实战密码》读后一点感受
查看>>
bzoj 4815 [Cqoi2017]小Q的表格——反演+分块
查看>>
Swift 入门之简单语法(六)
查看>>
shim和polyfill有什么区别
查看>>
Failed to load the JNI shared library “E:/2000/Java/JDK6/bin/..jre/bin/client/jvm.dll
查看>>
〖Python〗-- IO多路复用
查看>>
栈(括号匹配)
查看>>