java获取汉语拼音

获取汉语拼音

之前有个需求是要显示汉语拼音,然后找了一个工具包

xml 复制代码
<!-- 汉语拼音 -->
<dependency>
    <groupId>com.belerweb</groupId>
    <artifactId>pinyin4j</artifactId>
    <version>2.5.1</version>
</dependency>

来个栗子

java 复制代码
HanyuPinyinOutputFormat hanyuPinyinOutputFormat = new HanyuPinyinOutputFormat();
hanyuPinyinOutputFormat.setToneType(WITHOUT_TONE);
System.out.println(PinyinHelper.toHanYuPinyinString("北京市", hanyuPinyinOutputFormat, "", true));

// 输出 beijingshi

但是有时候是多音字的怎么处理的,比如长沙市

java 复制代码
HanyuPinyinOutputFormat hanyuPinyinOutputFormat = new HanyuPinyinOutputFormat();
hanyuPinyinOutputFormat.setToneType(WITHOUT_TONE);
System.out.println(PinyinHelper.toHanYuPinyinString("长沙市", hanyuPinyinOutputFormat, "", true));

// 输出 zhangshashi

这结果也不对呀

多音字处理

当然是有解决方案的,该工具提供了一个外挂,可以自定义一些词的多音字组合

如我配置了长沙在一块的话读changsha

scss 复制代码
长沙 (chang2,sha1)

然后使用该外挂

java 复制代码
HanyuPinyinOutputFormat hanyuPinyinOutputFormat = new HanyuPinyinOutputFormat();
hanyuPinyinOutputFormat.setToneType(WITHOUT_TONE);
MultiPinyinConfig.multiPinyinPath=Thread.currentThread().getContextClassLoader().getResource("pinyindb/multipy.txt").getPath();
System.out.println(PinyinHelper.toHanYuPinyinString("长沙市", hanyuPinyinOutputFormat, "", true));

// 输出  changshashi

后续的多音字直接在该文件中加入就行

参考文献

相关推荐
大模型教程8 小时前
大模型平民化:3块钱、2小时,MiniMind开源项目全解析
程序员·llm·agent
Vadaski9 小时前
私有 Context 工程如何落地:从方法论到实战
人工智能·程序员
大模型教程9 小时前
大模型(Qwen3)训练实战:从零开始玩转LLaMA-Factory
程序员·llm·agent
AI大模型10 小时前
工程师学AI之第三篇03:线性代数点积运算助你理解大模型注意力机制
程序员·llm·agent
AI大模型10 小时前
工程师学AI之第四篇:大模型的参数规模与哪些因素有关?
程序员·llm·agent
文心快码BaiduComate10 小时前
下周感恩节!文心快码助力感恩节抽奖页快速开发
前端·后端·程序员
永远不打烊13 小时前
c++11 之 统一初始化(Uniform Initalization)
c++·程序员
七牛云行业应用15 小时前
从草图到游戏仅需 60 秒:拆解多模态推理逻辑与低成本落地路径
程序员
峰中有多云15 小时前
python re 模块的使用
程序员