使用Python进行中文繁简转换的实现代码


Posted in Python onOctober 18, 2019

中文繁体、简体的差异,在NPL中类似英文中的大小写,但又比大小写更为复杂,比如同样为繁体字,大陆、香港和台湾又不一样。先前写过一篇中文繁简转换的文章,感觉写的不太详细,今天就针对Python下如何使用做进一步的记录。

OpenCC(Open Chinese Convert)

OpenCC是一个开源的中文繁简转化项目,支持词汇级别的转换、异体字转换和地区习惯用词转换(中国大陆、台湾、香港)。主要特点为:

  • 严格区分「一简对多繁」和「一简对多异」。
  • 完全兼容异体字,可以实现动态替换。
  • 严格审校一简对多繁词条,原则为「能分则不合」。
  • 支持中国大陆、台湾、香港异体字和地区习惯用词转换,如「?」「?」、「鼠?恕埂富?蟆埂?/li>
  • 词库和函数库完全分离,可以自由修改、导入、扩展。
  • 支持C、C++、Python、PHP、Java、Ruby、js and Android。
  • 兼容Windows、Linux、Mac平台。

opencc-python是用纯Python所写的OpenCC实现。需要注意的是使用pip安装时正确的命令是pip install opencc-python-reimplemented,如果使用pip install opencc-python会出现如下错误:

Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "C:\Users\qw\AppData\Local\Temp\pip-install-rvsnpo_d\opencc-python\setup.py", line 1, in <module>
        from distribute_setup import use_setuptools
    ModuleNotFoundError: No module named 'distribute_setup'

opencc-pytho的使用:

from opencc import OpenCC
 
cc = OpenCC('t2s')
# hk2s: Traditional Chinese (Hong Kong standard) to Simplified Chinese
# s2hk: Simplified Chinese to Traditional Chinese (Hong Kong standard)
# s2t: Simplified Chinese to Traditional Chinese
# s2tw: Simplified Chinese to Traditional Chinese (Taiwan standard)
# s2twp: Simplified Chinese to Traditional Chinese (Taiwan standard, with phrases)
# t2hk: Traditional Chinese to Traditional Chinese (Hong Kong standard)
# t2s: Traditional Chinese to Simplified Chinese
# t2tw: Traditional Chinese to Traditional Chinese (Taiwan standard)
# tw2s: Traditional Chinese (Taiwan standard) to Simplified Chinese
# tw2sp: Traditional Chinese (Taiwan standard) to Simplified Chinese (with phrases)
 
to_convert = '?放中文??Q(Pure Python)'
converted = cc.convert(to_convert)
print(converted)

opencc-python命令行调用:

usage: python -m opencc [-h] [-i <file>] [-o <file>] [-c <conversion>]
            [--in-enc <encoding>] [--out-enc <encoding>]
 
optional arguments:
 -h, --help      show this help message and exit
 -i <file>, --input <file>
            Read original text from <file>. (default: None = STDIN)
 -o <file>, --output <file>
            Write converted text to <file>. (default: None = STDOUT)
 -c <conversion>, --config <conversion>
            Conversion (default: None)
 --in-enc <encoding>  Encoding for input (default: UTF-8)
 --out-enc <encoding> Encoding for output (default: UTF-8)
 
example with UTF-8 encoded file:
 
 python -m opencc -c s2t -i my_simplified_input_file.txt -o my_traditional_output_file.txt
 
See https://docs.python.org/3/library/codecs.html#standard-encodings for list of encodings.

总结:OpenCC精度非常的高,另外也包含了习惯用词转换,比较适合放置在网站上进行自动的语言翻译。

参考链接:

https://github.com/BYVoid/OpenCC
https://github.com/yichen0831/opencc-python

zhconv

zhconv 提供基于 MediaWiki 和 OpenCC 词汇表的最大正向匹配简繁转换,支持地区词转换:zh-cn, zh-tw, zh-hk, zh-sg, zh-hans, zh-hant。Python 2、3通用。

安装方式:pip install zhconv

使用示例:

from zhconv import convert
 
print(convert(u'我?质颤N不干你事。', 'zh-cn'))
print(convert(u'人体内存在很多微生物', 'zh-tw'))

命令行工具:

python -mzhconv [-w] {zh-cn|zh-tw|zh-hk|zh-sg|zh-hans|zh-hant|zh} < input > output

参考链接:

https://github.com/gumblex/zhconv

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python socket.error: [Errno 98] Address already in use的原因和解决方法
Aug 25 Python
Python使用正则表达式获取网页中所需要的信息
Jan 29 Python
浅谈django三种缓存模式的使用及注意点
Sep 30 Python
Django 源码WSGI剖析过程详解
Aug 05 Python
Numpy的简单用法小结
Aug 28 Python
简单介绍django提供的加密算法
Dec 18 Python
python lambda函数及三个常用的高阶函数
Feb 05 Python
在Mac中PyCharm配置python Anaconda环境过程图解
Mar 11 Python
Python爬虫爬取电影票房数据及图表展示操作示例
Mar 27 Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
Jul 03 Python
Python json格式化打印实现过程解析
Jul 21 Python
python 逐步回归算法
Apr 06 Python
Python Django框架防御CSRF攻击的方法分析
Oct 18 #Python
python使用matplotlib绘制雷达图
Oct 18 #Python
Python 日志logging模块用法简单示例
Oct 18 #Python
python调用matplotlib模块绘制柱状图
Oct 18 #Python
Python Django模板之模板过滤器与自定义模板过滤器示例
Oct 18 #Python
树莓派4B+opencv4+python 打开摄像头的实现方法
Oct 18 #Python
python使用Matplotlib改变坐标轴的默认位置
Oct 18 #Python
You might like
php入门学习知识点八 PHP中for循环基本应用之九九乘法口绝表
2011/07/14 PHP
使用phpQuery采集网页的方法
2013/11/13 PHP
smarty内置函数config_load用法实例
2015/01/22 PHP
解决php的“It is not safe to rely on the system’s timezone settings”问题
2015/10/08 PHP
php+Memcached实现简单留言板功能示例
2017/02/15 PHP
yii 2.0中表单小部件的使用方法示例
2017/05/23 PHP
让IE6支持min-width和max-width的方法
2010/06/25 Javascript
Jquery实现控件的隐藏和显示实例
2014/02/08 Javascript
JavaScript字符串对象的concat方法实例(用于连接两个或多个字符串)
2014/10/16 Javascript
使用jQuery不判断浏览器高度解决iframe自适应高度问题
2014/12/16 Javascript
关于JS中match() 和 exec() 返回值和属性的测试
2016/03/21 Javascript
基于jQuery实现动态搜索显示功能
2016/05/05 Javascript
JS JSOP跨域请求实例详解
2016/07/04 Javascript
JS通过调用微信API实现微信支付功能的方法示例
2017/06/29 Javascript
详解Vue3中对VDOM的改进
2020/04/23 Javascript
[04:41]2014DOTA2国际邀请赛 Liquid顺利突围晋级正赛
2014/07/09 DOTA
Python3.0与2.X版本的区别实例分析
2014/08/25 Python
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
2015/03/31 Python
Python计算三维矢量幅度的方法
2015/06/15 Python
使用pandas实现csv/excel sheet互相转换的方法
2018/12/10 Python
Python实现的拉格朗日插值法示例
2019/01/08 Python
带你认识Django
2019/01/15 Python
python+pyqt5编写md5生成器
2019/03/18 Python
详解python执行shell脚本创建用户及相关操作
2019/04/11 Python
python绘制评估优化算法性能的测试函数
2019/06/25 Python
pytorch cuda上tensor的定义 以及减少cpu的操作详解
2020/06/23 Python
Restful_framework视图组件代码实例解析
2020/11/17 Python
英国Lookfantastic中文网站:护肤品美妆美发购物(英国直邮)
2020/04/27 全球购物
如何启动时不需输入用户名与密码
2014/05/09 面试题
对象的序列化(serialization)类是面向流的,应如何将对象写入到随机存取文件中
2015/06/22 面试题
一年级班主任寄语
2014/01/19 职场文书
会计师职业生涯规划范文
2014/02/18 职场文书
小学优秀辅导员事迹材料
2014/05/11 职场文书
社区志愿者活动总结
2014/06/26 职场文书
五年级学生期末评语
2014/12/26 职场文书
保送生自荐信范文
2015/03/26 职场文书