在人工智慧讀通文義、繁簡轉換前,應用自然語言處理中文分詞、標注詞性、判斷語境之後再做轉換,應比單純詞彙比對更準確。辭典應可如維基百科般由眾人編輯,且記錄改變原由,加進 test suit。
Chinese_converter 採用先中文分詞(附帶詞義、詞性標注),再以 CeL.zh_conversion 繁簡轉換的方法,來輕量化繁簡轉換辭典,同時達到較為精確的繁簡轉換。
CeL.zh_conversion 採用與 OpenCC 和新同文堂相同的技術,正向最大匹配法 (forward maximum matching algorithm);從前至後順向,於每個字元位置檢查符合辭典檔中詞彙的最長詞彙,一旦符合就置換並跳到下一個字元位置。
這種方法在遇到某些字詞必須與前一個字詞連動時,就可能漏失掉。例如「干」預設會轉成「幹」。(轉換標的通常是用途雜亂,最難找出規則又常出現、例外多的字詞。)因此當辭典檔中有「芒果」卻沒有「芒果乾」時,遇到「芒果干」就可能換成「芒果幹」。 我們可以藉由把這些需要連動的詞彙全部加入辭典檔來完善轉換結果,例如令「芒果干」轉換成「芒果乾」,additional.to_TW.txt 與 CN_to_TW.LTP.PoS.txt 中就有許多例子。但這造成辭典檔複雜龐大,就本例來說,我們畢竟不可能把所有動植物,如蘋果乾、響尾蛇乾全加進去。 而且每次加入新的詞彙也得考慮是否會影響到上下文。例如加入「上千」將造成「算得上千钧一发」因為先符合了「上千」,「钧一发」本身不在辭典檔中,將造成轉換錯誤。而加入了「下游」→「下游」,也得同時加入「下游戏」→「下遊戲」以防止「玩一下游戏」、「停下游戏」被錯誤轉換。
此外這種做法最大的問題是不能依上下文判斷。例如「这颗梨子干你什么事」、「我拿水蜜桃干他朋友什么事」就不容易正確轉換。而有些詞像「排泄」、「排洩」,「自制」、「自製」有兩種可能性,也必須依上下文來判斷。
先中文分詞來判斷,可依句子與片語的結構來轉換。不但較靈活,也更能應對特殊情況。例如 zh_conversion 指定了許多 这只→這隻、一只→一隻 之類的轉換。在遇到「這隻是小鳥」、「這只是妄想」時常常出錯。若能判斷出「只」是否為量詞,則可減少許多錯誤。
雖然中文分詞有其優勢,可惜現在中文分詞精確度尚待加強。辭典檔規則極為依賴中文分詞系統,加上 zh_conversion 執行速度快許多,因此 Chinese_converter 只對分詞極少出錯,或者要寫成 zh_conversion 形式規則太過繁雜的特殊情況,才採用中文分詞辭典。
歡迎提供句子以做測試,也歡迎提交辭典檔規則。
繁簡轉換流程:
幹
,形容詞用乾
。Install LTP 4.1.5.post2 first.
經實測,採用哈工大 LTP 4.1.5.post2 Base 模型的服務端版本,配合相對應辭典;以 繁→簡→繁 轉換測試檔中的文字,可轉換回原先之內容。
On Windows, install LTP:
pip install --force-reinstall "ltp==4.1.5.post2"
pip install tornado
pip install fire
Install Node.js, and then install cecc:
npm install cecc
'small'
為 'base'
。您可直接採用已改過的 server.base.py。# 當您採用上述已改過的 server.base.py,可以此法啟動 LTP server。
python server.base.py serve
// load module
const CeCC = require('cecc');
// chinese_converter
const cecc = new CeCC({ LTP_URL : 'http://localhost:5000/' });
cecc.to_TW('简体中文');
cecc.to_CN('繁體中文');
# 重新生成 .converted.* 解答檔案。
npm test regenerate_converted
# 不測試 wikipedia 頁面。
npm test nowiki
# TODO: 重新生成所有詞性查詢 cache。
npm test ignore_cache
function convert_using_pair_Map_by_length(text)
。npm test
跑測試。npm test
確認無衝突。有時另外挑出句子會解析出不同語法,此時必須透過完整轉換文本修訂辭典:通過 work_crawler 選擇繁簡轉換功能,並隨時修訂辭典,應先設定 .cache_directory(work_crawler 會自動設定)。
_test suite/articles/watch_target.作品名稱.(TW|CN).txt
(e.g., watch_target.第一序列.TW.txt),會在每次轉換都測試是否有相符之文字。npm test nowiki
測試。久未更新
久未更新
未考慮詞性之簡繁轉換辭典: