談談網頁內容如何實現中文繁簡體的自動轉換

Bycodeant

談談網頁內容如何實現中文繁簡體的自動轉換

要讓網頁內容達到中文繁簡體的自動轉換,最簡單的方式就是用字表轉換,所以你要先收集繁體跟簡體的差異字,然後用 Lookup Table 的方式去做轉換即可,那麼中文繁簡體的差異字到底有多少個字呢?我自己收集到的部份一共有3060個字,我不是什麼語言研究的專家,所以這個數字不是學術等級的精準,但是仰賴數十位大陸朋友的真人實測,他們一致認為透過這3060個字表轉換後的文章內容,在閱讀上實用性已經很高了。

如果要求還要再更高,那就進入語意分析的領域了,很抱歉,我沒有那個水準去談語意分析。什麼是語意分析?例如說台灣說”當機”等於大陸說”死機”,台灣說”送出”等於大陸說”提交”…等等這一類就屬於語意分析的範圍,這個難度高很多,也會耗費更多計算資源,但是就像前面說的,透過簡單的字表轉換,其實已經達到實用的等級,實作上跟程式的運行效率都有不錯的CP值。

實作上,繁體轉簡體是容易的,而且效果也比較好,因為很多繁體字經過簡化後,會對應到同一個簡體字,也因為這個特性,簡轉繁難度高上許多,單純的字表轉換會出現語意不同的情況,不像繁轉簡,文章語意幾乎都是通順的,舉例來說:

Screenshot from 2017 01 19 121057

在進行簡體轉繁體的時候,你要選哪一個?所以簡轉繁要做的好,幾乎都要考慮語意分析!

還有就是繁體常用字等於部份簡體字的問題,舉例來說:

Screenshot from 2017 01 19 121114

前面說了一大堆,到底要如何去達到網頁的自動繁簡互轉呢?我個人是用判斷HTTP_ACCEPT_LANGUAGE的方式為主,再加上判斷HTTP_USER_AGENT為輔,這樣可以達到大部分來自中國大陸的訪問者,都是看到簡體網頁的內容,這其中當然也包含百度搜尋引擎的蜘蛛,PHP的程式碼如下:

$trans = FALSE;  

if (!empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {         
    $lang  = explode("," , $_SERVER['HTTP_ACCEPT_LANGUAGE']);          

    if (($lang[0] == 'zh-cn') || ($lang[0] == 'zh-CN')) {
        $trans = TRUE;         
    } 
} 

if (!$trans && !empty($_SERVER['HTTP_USER_AGENT']) && 
    strstr($_SERVER['HTTP_USER_AGENT'], "Baidu")) 
{         
    $trans = TRUE; 
} // From TW -> CN 

if ($trans) {         
    require_once '/include/TWtoCN.php';         
    $app = ant_zhtw2cn($app); 
}

上面這一段 Code ,我大概使用快十年了,如果你是一個以繁體中文為主的網站,同時也想對使用簡體中文的朋友們做到 User Friendly ,這樣就已經很足夠了,當然有部份人士的個性是屬於多毛症的,那就滿足不了。

About the author

codeant administrator

Leave a Reply