纯净、安全、绿色的下载网站

首页|软件分类|下载排行|最新软件|IT学院

当前位置:首页IT学院IT技术

Python 拼音转换 Python实现拼音转换

一天一篇Python库   2021-06-07 我要评论
想了解Python实现拼音转换的相关内容吗一天一篇Python库在本文为您仔细讲解Python 拼音转换的相关知识和一些Code实例欢迎阅读和指正我们先划重点:Python,拼音转换下面大家一起来学习吧

什么是拼音转换

在我们学习语言之前我们一般会学习拼音来认识汉字并学会如何读汉字所以拼音在对于我们语言的重要性不言而喻

而拼音转换指的是将汉字转为拼音的过程但是我们中文博大精深一般来说某个字并不仅仅只有一个读音比如“翟”它作为姓氏可以读作zhái作为其他可读作di这是就需要结合上下文或者说结合与其组合的词汇进行转换拼音不仅如此拼音还有音调比如一二三四声表示的意义有时候也是不一样的

本篇博文将介绍字符串到拼音的转换

拼音转换

首先HanLP库提供的拼音转换为本位于data/dictionary/pinyin/pinyin.txt文件中每行分别由=隔开汉字与拼音其中多音字的拼音数量多余汉字数量在实际的转换过程中默认读取多音字的第一个拼音除非匹配到更长的词语

此外HanLP库还支持声母韵母音调音标以及输入法首字母与收声母功能当然也能给前文的繁体字转换为拼音

下面我们来看一段代码示例:

if __name__ == "__main__":
    text = "重载不是重量"
    pinyin_list = HanLP.convertToPinyinList(text)
    print(pinyin_list)

运行之后控制台输出如下:

拼音输出

可以看到基本上每个字的拼音都输出了如果程序判断不出来多音字是哪个声调会输出其所有的声调比如这里的体输出了3声和1声重输出了3声与2声

在python中我们通过HanLP.convertToPinyinList进行汉字与拼音的转换

输出音调

鉴于我们已经知道了如何转换汉字到拼音那么我们现在需要实现的是单独获取每个汉字的音调不需要声调现在该如何去实现呢?不妨先来看看代码:

if __name__ == "__main__":
    Pinyin = JClass("com.hankcs.hanlp.dictionary.py.Pinyin")
    text = "重载不是体重"
    pinyin_list = HanLP.convertToPinyinList(text)
    print(pinyin_list)
    print("输出音调")
    for pinyin in pinyin_list:
        print("%s," % pinyin.getPinyinWithToneMark(), end=" ")

如上面代码所示我们获取了Java的HanLP库中的Pinyin类这个类可以帮我们处理很多的拼音相关的问题比如这里的获取音调

运行之后效果如下:

输出音调

需要注意的是前面博文已经说过了通过python进行HanLP库使用时尽量调用Java类进行处理因为Java类的处理时间比python快很多这里我们通过Pinyin类的getPinyinWithToneMark()方法获取声调

输出声调

既然可以只输出音调那么肯定也可以单独输出声调具体代码如下:

if __name__ == "__main__":
    Pinyin = JClass("com.hankcs.hanlp.dictionary.py.Pinyin")
    text = "重载不是体重"
    pinyin_list = HanLP.convertToPinyinList(text)
    print(pinyin_list)
    print("输出声调")
    for pinyin in pinyin_list:
        print("%s," % pinyin.getTone(), end=" ")

运行之后效果如下:

输出声调

这里我们通过Pinyin类的getTone()方法获取声调

输出声母

同样的我们还可以输出声母代码如下:

if __name__ == "__main__":
    Pinyin = JClass("com.hankcs.hanlp.dictionary.py.Pinyin")
    text = "重载不是体重"
    pinyin_list = HanLP.convertToPinyinList(text)
    print(pinyin_list)
    print("\r\n输出声母")
    for pinyin in pinyin_list:
        print("%s," % pinyin.getShengmu(), end=" ")

运行之后效果如下:

输出声母

这里我们用getShengmu()方法输出声母方法名就是中文意思很好理解

输出韵母

接着我们再来输出韵母代码如下:

if __name__ == "__main__":
    Pinyin = JClass("com.hankcs.hanlp.dictionary.py.Pinyin")
    text = "重载不是体重"
    pinyin_list = HanLP.convertToPinyinList(text)
    print(pinyin_list)
    print("\r\n输出韵母")
    for pinyin in pinyin_list:
        print("%s," % pinyin.getYunmu(), end=" ")

运行之后效果如下:

输出韵母

这里我们用getYunmu()方法输出韵母方法名就是中文意思很好理解

处理数字拼音

除此之外上面因为都是汉字所以大家肯定都很好处理成拼音但是现在很多时候中文文本里面并不仅仅只有汉字也有数字和英文但是拼音是汉字独有的那怎么办呢?

我们先来看看按上面直接处理带数字与英文时效果怎么样代码如下所示:

if __name__ == "__main__":
    Pinyin = JClass("com.hankcs.hanlp.dictionary.py.Pinyin")
    text = "我们到2035年就会称为世界第一"
    pinyin_list = HanLP.convertToPinyinList(text)
    print(pinyin_list)

运行之后效果如下:

输出none

可以看到数字都直接替换为none5也就是缺失的意义拼音文件找不到与其匹配的汉语拼音

而我们实际在处理中文文档时都是保留数字与英文的并不直接翻译其实这里我们想保留其数字的话HanLP.convertToPinyinString()方法就能实现我们来看看这个方法的完整定义:

convertToPinyinString(转换为拼音的字符串文本,输出间隔符,布尔类型)

相信看了上面方法的读者应该很快就知道了第3个布尔类型就是转换数字与保留数字的关键参数这里我们再来变换代码:

if __name__ == "__main__":
    Pinyin = JClass("com.hankcs.hanlp.dictionary.py.Pinyin")
    text = "我们到2035年就会称为世界第一"
    pinyin_list = HanLP.convertToPinyinString(text," ",False)
    print(pinyin_list)

运行之后我们的英文与数字就会原封不动的保留下来效果如下:

输出数字


相关文章

猜您喜欢

  • OpenCV 人脸磨皮 OpenCV-Python实现人脸磨皮算法

    想了解OpenCV-Python实现人脸磨皮算法的相关内容吗一天一篇Python库在本文为您仔细讲解OpenCV 人脸磨皮的相关知识和一些Code实例欢迎阅读和指正我们先划重点:OpenCV,人脸磨皮下面大家一起来学习吧..
  • java同步容器与并发容器 Java并发编程之同步容器与并发容器详解

    想了解Java并发编程之同步容器与并发容器详解的相关内容吗小志的博客在本文为您仔细讲解java同步容器与并发容器的相关知识和一些Code实例欢迎阅读和指正我们先划重点:java同步容器,java并发容器,java容器下面大家一起来学习吧..

网友评论

Copyright 2020 www.fresh-weather.com 【世纪下载站】 版权所有 软件发布

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 点此查看联系方式