标点符(钱魏 Way)

中文进行繁简转换

中文的简繁转换看起来是一个简单的工作,但是细想下还是有一些问题的,因为字符间并不是简单的一一对应,不仅存在一简对多繁,也存在多简对一繁。比如:

要正确完成这样的转换,就要在单字对应关系之外加上词组对应。可以常用的工具有:Office Word、Google翻译及ConvertZ,除了字形以外,不同地区有些名称对应的叫法也不一样,如中国大陆说的计算机「程序」,台湾就是「程式」。为了满足大陆、台湾、香港、新加坡和马来西亚等不同地区中文用户的需求,在ZhengZhu等维基人的努力下,维基百科自2004年底开始逐步发展出一套比较成熟的简繁转换方案。分别记录简繁字体的对应关系和不同地区的用词习惯。这个办法的实用性已在现有30万中文维基条目的应用中得到验证。其不同地区包括:「大陆简体」、「马新简体」、「港澳繁体」、「台湾正体」等

中文维基目前正在使用的内置简繁转换表地址在这里:https://doc.wikimedia.org/mediawiki-core/REL1_25/php/ZhConversion_8php_source.html或从MediaWiki 源码包中的 includes/ZhConversion.php文件获取。

这个php文件包含了$zh2Hant、$zh2Hans、$zh2CN、$zh2HK、$zh2TW、$zh2SG这6个数组,分别对应中文->繁体、中文->简体、中文->大陆用词、中文->香港用词、中文->台湾用词和中文->新加坡用词的转换规则。例如从大陆简体到台灣正體的转换就是先将中文(允许简繁混用)转为繁体,再替换其中的台湾用词。如果不涉及复杂长句的简单应用,实现起来十分容易,将对应关系读入字典,用最大正向匹配算法查找词组替换就好。

PHP实现

我们将Mediawiki上面的代码拷贝下来,然后保存为:ZhConversion.php,这仅仅是一些数组,我们还需要做进一步的处理,我们新建一个转换文件:convert.php,然后引入ZhConversion.php文件,自定义转换函数,通过strtr() 函数转换字符串中特定的字符。

最后,在需要使用的页面调用函数即可。

Python实现

zhconv 供基于 MediaWiki 词汇表的最大正向匹配简繁转换,支持地区词转换:zh-cn, zh-tw, zh-hk, zh-sg, zh-hans, zh-hant。Python 2、3通用。与其他Python中文简繁转换程序相比:

  • langconv太复杂,而且不支持地区词转换
  • Pyzh 简单,只支持字对字
  • OpenCCopencc-python是一个比较完整准确的解决方案,但不适合纯 Python 环境和对精确度要求不高的需要。

下载源码:https://github.com/gumblex/zhconv,解压后转到相应目录,执行: python setup.py install

使用方法:

注意:Python 2下必须是unicode字符串,python3下必须str

Ruby实现

https://github.com/siuying/zhconv

目前的程序是基于最大正向匹配实现的,如果需要更高的要求,可以引入中文分词技术。

码字很辛苦,转载请注明来自标点符《中文进行繁简转换》

评论