📚 开源资源分享——颜佐光的个人书架
✉️ 联系站长
书架 / 工具 / tts

汉字转拼音开源工具包Jpinyin介绍

2020-06-29 10:59 · 约 2,148 字 · 浏览 2,629 次 · 更新 2020-06-29 11:29tts

汉字转拼音开源工具包Jpinyin介绍

最近要实现一个根据词语得到词语对应拼音的功能,找到了Jpinyin这个开源工具包,使用下来发现它非常强大,完全满足我的需求,下面对它做一个简单的介绍,希望能够帮助到有需要的朋友。
https://github.com/stuxuhai/jpinyin

一、项目介绍

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

主要特性

  1. 准确、完善的字库;Unicode编码从4E00-9FA5范围及3007(〇)的20903个汉字中,JPinyin能转换除46个异体字(异体字不存在标准拼音)之外的所有汉字;
  2. 拼音转换速度快; 经测试,转换Unicode编码从4E00-9FA5范围的20902个汉字,JPinyin耗时约100毫秒。
  3. 多拼音格式输出支持;JPinyin支持多种拼音输出格式:带音标、不带音标、数字表示音标以及拼音首字母输出格式;
  4. 常见多音字识别;JPinyin支持常见多音字的识别,其中包括词组、成语、地名等;
  5. 简繁体中文转换

项目地址:JPinyin是一个汉字转拼音的Java开源类库

二、实现原理

通过阅读源代码发现,JPinyin的实现原理是通过将生字、词组和对应的拼音以及简繁汉字存放在数据库,然后通过代码操作数据库来实现汉字/词组转拼音和汉字简繁互转的,数据库都是加密的,不能扩充,但这个工具已经比较完善了,没有必要自己去扩充数据库,经本人测试,未发现有转换错误的问题。

img

三、核心方法说明

Jpinyin里面一共有四个类:
- ChineseHelper.java 汉字简繁体转换类
- PinyinFormat.java 拼音格式类
- PinyinHelper.java 汉字转拼音类
- PinyinResource.java 资源文件加载类

本文只介绍汉字转拼音PinyinHelper,简繁转换ChineseHelper不作介绍,其中PinyinHelper的公用接口如下:

/**
* 将单个汉字转换为相应格式的拼音
* @param c 需要转换成拼音的汉字
* @param pinyinFormat 拼音格式:
                        WITH_TONE_NUMBER--数字代表声调,
                        WITHOUT_TONE--不带声调,
                        WITH_TONE_MARK--带声调
* @return 汉字的拼音
*/
public static String[] convertToPinyinArray(char c, PinyinFormat pinyinFormat);

/**
 * 将单个汉字转换成带声调格式的拼音
 * @param c 需要转换成拼音的汉字
 * @return 字符串的拼音
 */
public static String[] convertToPinyinArray(char c);

/**
 * 将字符串转换成相应格式的拼音
 * @param str 需要转换的字符串
 * @param separator 拼音分隔符
 * @param pinyinFormat 拼音格式:
                        WITH_TONE_NUMBER--数字代表声调,
                        WITHOUT_TONE--不带声调,
                        WITH_TONE_MARK--带声调
 * @return 字符串的拼音
 */
public static String convertToPinyinString(String str, String separator, PinyinFormat pinyinFormat);


/**
 * 将字符串转换成带声调格式的拼音
 * @param str 需要转换的字符串
 * @param separator 拼音分隔符
 * @return 转换后带声调的拼音
 */
public static String convertToPinyinString(String str, String separator);


/**
 * 判断一个汉字是否为多音字
 * @param c 汉字
 * @return 判断结果,是汉字返回true,否则返回false
 */
public static boolean hasMultiPinyin(char c);

/**
 * 获取字符串对应拼音的首字母
 * @param str 需要转换的字符串
 * @return 对应拼音的首字母
 */
public static String getShortPinyin(String str);
← 返回《工具》目录书架 →