服务报价 | 域名主机 | 网络营销 | 软件工具| [加入收藏]
 热线电话: #
当前位置: 主页 > php教程 > php教程 >

中文进行繁简转换

时间:2016-12-26 23:18来源:未知 作者:最模板编辑 点击:
中文的简繁转换看起来是一个简单的工作,但是细想下还是有一些问题的,因为字符间并不是简单的一一对应,不仅存在一简对多繁,也存在多简对一繁。比如: 头发发展 - 頭髮發展
中文的简繁转换看起来是一个简单的工作,但是细想下还是有一些问题的,因为字符间并不是简单的一一对应,不仅存在一简对多繁,也存在多简对一繁。比如:
 
头发发展 -> 頭髮發展
萝卜卜卦 -> 蘿蔔卜卦
秒表表达 -> 秒錶表達
晾干乾坤 -> 晾乾乾坤
要正确完成这样的转换,就要在单字对应关系之外加上词组对应。可以常用的工具有: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() 函数转换字符串中特定的字符。
 
global $zh2Hans, $zh2Hant, $zh2TW, $zh2CN, $zh2SG, $zh2HK;
require_once( dirname(__FILE__) . '/ZhConversion.php');
 
function zhconversion($str, $variant) {
    global $wpcc_langs;
    return $wpcc_langs[$variant][0]($str);
}
 
function zhconversion_hant($str) {
    global $zh2Hant;
    return strtr($str, $zh2Hant );
}
 
function zhconversion_hans($str) {
    global $zh2Hans;
    return strtr($str, $zh2Hans);
}
 
function zhconversion_cn($str) {
    global $zh2Hans, $zh2CN;
    return strtr(strtr($str, $zh2CN), $zh2Hans);
}
 
function zhconversion_tw($str) {
    global $zh2Hant, $zh2TW;
    return strtr(strtr($str, $zh2TW), $zh2Hant);
}
 
function zhconversion_sg($str) {
    global $zh2Hans, $zh2SG;
    return strtr(strtr($str, $zh2SG), $zh2Hans);
}
 
function zhconversion_hk($str) {
    global $zh2Hant, $zh2HK;
    return strtr(strtr($str, $zh2HK), $zh2Hant);
}
 
function zhconversion_zh($str) {
    return $str;
}
最后,在需要使用的页面调用函数即可。
 
Python 实现
 
zhconv 供基于 MediaWiki 词汇表的最大正向匹配简繁转换,支持地区词转换:zh-cn, zh-tw, zh-hk, zh-sg, zh-hans, zh-hant。Python 2、3通用。与其他Python中文简繁转换程序相比:
 
langconv 太复杂,而且不支持地区词转换
Pyzh 简单,只支持字对字
OpenCC 和 opencc-python 是一个比较完整准确的解决方案,但不适合纯 Python 环境和对精确度要求不高的需要。
下载源码: https://github.com/gumblex/zhconv ,解压后转到相应目录,执行: python setup . py install
 
使用方法:
 
# -*- coding: utf-8 -*-
 
importzhconv
printzhconv.convert(u'大衛碧咸在寮國見到了布希','zh-cn')
注意:Python 2下必须是unicode字符串,python3下必须str
 
Ruby 实现
 
https://github.com/siuying/zhconv
 
目前的程序是基于最大正向匹配实现的,如果需要更高的要求,可以引入中文分词技术。
(责任编辑:最模板)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
热点内容