java 同音字_pinyin: The high performance pinyin tool for java.(java 高性能中文转拼音工具。支持同音字。)...
pinyin
pinyin 是 java 實現的高性能中文拼音轉換工具。
創作目的
想為 java 設計一款便捷易用的拼音工具。
特性
極簡的 api 設計
支持轉換長文本
支持多音字
支持多種拼音標注方式
支持中文分詞
支持中文繁簡體
支持自定義拼音詞庫
支持判斷是否為同音字
支持單獨獲取聲調信息
支持獲取聲母韻母信息
v0.1.2 新特性
支持指定拼音連接符號
快速開始
準備
jdk 1.7+
maven 引入
com.github.houbb
pinyin
0.1.2
快速開始
返回中文的拼音
使用 PinyinHelper.toPinyin(string) 進行中文轉換。
String pinyin = PinyinHelper.toPinyin("我愛中文");
Assert.assertEquals("wǒ ài zhōng wén", pinyin);
返回多音字列表
使用 PinyinHelper.toPinyinList(char) 獲取多音字的讀音列表。
List pinyinList = PinyinHelper.toPinyinList('重');
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);
指定連接符號
有時候使用者希望指定特定的連接符號。
final String text = "我愛中文";
Assert.assertEquals("wazw", PinyinHelper.toPinyin(text, PinyinStyleEnum.FIRST_LETTER, StringUtil.EMPTY));
第三個參數用于指定一個非 null 的字符串作為拼音連接符號。 (默認是空格進行連接)
更多特性
是否為同音字
PinyinHelper.hasSamePinyin() 用來判斷兩個漢字是否為同音字,包括對多音字的處理。
char one = '花';
char two = '重';
char three = '中';
char four = '蟲';
Assert.assertFalse(PinyinHelper.hasSamePinyin(one, three));
Assert.assertTrue(PinyinHelper.hasSamePinyin(two, three));
Assert.assertTrue(PinyinHelper.hasSamePinyin(two, four));
支持繁體中文
本框架支持繁體中文獲取對應拼音。
當然你也可以使用 opencc4j 統一轉換為簡體再做拼音獲取,從而提高準確率。
String pinyin = PinyinHelper.toPinyin("奮斗");
Assert.assertEquals("fèn dòu", pinyin);
自定義拼音詞庫
已有的詞庫很難滿足各種各樣的場景,本工具提供自定義拼音詞庫的功能。
自定義單個字的拼音
自定義字典
自定義 resources/pinyin_dict_char_define.txt 文件內容,格式如下:
莪:wǒ
噯:ài,āi,ǎi
漢字與拼音使用英文: 分割,多音字使用英文,做拼音的分割。
測試
String pinyin = PinyinHelper.toPinyin("莪");
Assert.assertEquals("wǒ", pinyin);
自定義詞組的拼音
自定義字典
自定義 resources/pinyin_dict_phrase_define.txt 文件內容,格式如下:
褈慶炎鍋:chóng qìng huǒ guō
測試
以一串火星文為例。
String pinyin = PinyinHelper.toPinyin("莪噯褈慶炎鍋");
Assert.assertEquals("wǒ ài chóng qìng huǒ guō", 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 同音字_pinyin: The high performance pinyin tool for java.(java 高性能中文转拼音工具。支持同音字。)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [vue] 如果将axios异步请求同步
- 下一篇: [vue] watch和计算属性有什么区