使用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 yield 小结和实例
Apr 25 Python
详解Python中表达式i += x与i = i + x是否等价
Feb 08 Python
TensorFlow平台下Python实现神经网络
Mar 10 Python
Python 经典面试题 21 道【不可错过】
Sep 21 Python
python 基于TCP协议的套接字编程详解
Jun 29 Python
python使用tomorrow实现多线程的例子
Jul 20 Python
基于python中__add__函数的用法
Nov 25 Python
Python跑循环时内存泄露的解决方法
Jan 13 Python
使用anaconda安装pytorch的实现步骤
Sep 03 Python
聊聊python在linux下与windows下导入模块的区别说明
Mar 03 Python
教你使用Pandas直接核算Excel中快递费用
May 12 Python
python实现双向链表原理
May 25 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
安装APACHE
2007/01/15 PHP
PHP使用SOAP调用.net的WebService数据
2013/11/12 PHP
zf框架的session会话周期及次数限制使用示例
2014/03/13 PHP
利用php输出不同的心形图案
2016/04/22 PHP
Laravel中unique和exists验证规则的优化详解
2018/01/28 PHP
Yii2框架中一些折磨人的坑
2019/12/15 PHP
JS判断页面加载状态以及添加遮罩和缓冲动画的代码
2012/10/11 Javascript
html向js方法传递参数具体实现
2013/08/08 Javascript
BootStrap点击下拉菜单项后显示一个新的输入框实现代码
2016/05/16 Javascript
手机端图片缩放旋转全屏查看PhotoSwipe.js插件实现
2016/08/25 Javascript
Vuex之理解Mutations的用法实例
2017/04/19 Javascript
JavaScript学习总结之正则的元字符和一些简单的应用
2017/06/30 Javascript
webpack搭建vue 项目的步骤
2017/12/27 Javascript
基于$.ajax()方法从服务器获取json数据的几种方式总结
2018/01/31 Javascript
微信小程序实现验证码获取倒计时效果
2018/02/08 Javascript
ES6基础之默认参数值
2019/02/21 Javascript
Vue在H5 项目中使用融云进行实时个人单聊通讯
2020/12/14 Vue.js
[02:23]完美世界全国高校联赛街访DOTA2第一期
2019/11/28 DOTA
Python 性能优化技巧总结
2016/11/01 Python
不到40行代码用Python实现一个简单的推荐系统
2019/05/10 Python
Python实现某论坛自动签到功能
2019/08/20 Python
教你如何一步一步用Canvas写一个贪吃蛇
2018/10/22 HTML / CSS
浅谈html5标签css3的常用样式
2016/10/20 HTML / CSS
Parts Express:音频、视频和扬声器的第一来源
2017/04/25 全球购物
在数据文件自动增长时,自动增长是否会阻塞对文件的更新
2014/05/01 面试题
与UNIX有关的几个名词
2015/09/17 面试题
会计自我鉴定范文
2013/10/06 职场文书
优秀员工表扬信
2014/01/17 职场文书
项目建议书模板
2014/05/12 职场文书
党章培训心得体会
2014/09/04 职场文书
竞选大学学委演讲稿
2014/09/13 职场文书
领导班子四风问题对照检查材料
2014/09/27 职场文书
2016年五一劳动节专题校园广播稿
2015/12/17 职场文书
编写python程序的90条建议
2021/04/14 Python
JavaScript实现登录窗体
2021/06/22 Javascript
vue生命周期钩子函数以及触发时机
2022/04/26 Vue.js