cecc

繁簡轉換函式庫 追求正確率 先解析詞性再繁簡轉換 繁體中文↔簡體中文轉換 Chinese converter between Traditional Chinese and Simplified Chinese.

Usage no npm install needed!

<script type="module">
  import cecc from 'https://cdn.skypack.dev/cecc';
</script>

README

npm version npm downloads

Known Vulnerabilities codebeat badge Codacy Badge DeepScan grade

CeCC - Colorless echo Chinese converter

在人工智慧讀通文義、繁簡轉換前,應用自然語言處理中文分詞、標注詞性、判斷語境之後再做轉換,應比單純詞彙比對更準確。辭典應可如維基百科般由眾人編輯,且記錄改變原由,加進 test suit。

Concepts

  1. 先中文分詞(附帶詞義、詞性標注)+自動判斷句子、段落的語境(配合維基百科專有名詞轉換
  2. 再繁簡轉換(輕量化繁簡轉換辭典負擔)

Process

繁簡轉換流程:

  1. 中文分詞(採用外包程式中文斷詞)
  2. TODO: 判別語境
  3. 依照相應詞典轉換各詞彙

Features

  1. 經由判斷詞性,可簡單判斷如何轉換。例如動詞用,形容詞用
  2. 自帶條件式生成功能,可快速生成辭典用的候選條件式。
  3. 自附 cache 功能,可大大降低多次轉譯長文的時間(例如在測試期間、修改辭典條件欲重新轉換)。

Installation

Install LTP first. 您可能需要 6 GB 記憶體來啟動 LTP server。

經實測,採用哈工大 LTP 4.1.3、Small(v3) 模型的服務端版本,配合相對應辭典,可正確 繁→簡→繁 轉換測試檔中的文字。

Install 中文分詞: LTP

On Windows, install LTP:

  1. 安裝 Pytorch。如果 pip install ltp 不成功則 至 Pytorch 官方網站選擇合適版本離線安裝。 e.g., cu101/torch-1.7.0%2Bcu101-cp38-cp38-win_amd64.whl

    CUDA version: "%ProgramFiles%\NVIDIA Corporation\NVSMI\nvidia-smi.exe" or "%SystemRoot%\System32\nvidia-smi.exe"

    pip install torch-*.whl

  2. Install tornado:

pip install tornado
  1. Install LTP:
pip install ltp
  1. Upgrade LTP:
pip install --upgrade ltp

Alternative: Install 中文分詞: nodejieba

Alternative method: On Windows, install nodejieba:

REM run as Administrator
npm install --global windows-build-tools
REM Waiting for some minutes...
npm install --global node-gyp
npm install --global node-pre-gyp
npm install nodejieba
REM Waiting for some minutes...

Install cecc

And then install cecc:

npm install cecc

Usage

  1. 啟動 LTP server,預設為 http://localhost:5000/ 。

  2. Try codes:

    // load module
    const CeCC = require('cecc');
    // chinese_converter
    const cecc = new CeCC({ LTP_URL : 'http://localhost:5000/' });
    cecc.to_TW('简体中文');
    cecc.to_CN('繁體中文');
    
  3. 完整測試。

    # 重新生成 .converted.* 解答檔案。
    npm test regenerate_converted
    # TODO: 重新生成所有詞性查詢 cache。
    npm test ignore_cache
    

Mechanism 文字替換機制

  1. 若有符合附帶詞性字典檔的文字,則依之變換。其他未符合的交由 CeL.extension.zh_conversion 處理。
  2. zh_conversion 基本上採用 OpenCC 的辭典,並以 generate_additional_table.js 合併新同文堂和 ConvertZZ 的字典檔成 additional.to_TW.auto-generated.txt 與 additional.to_CN.auto-generated.txt。依照 CeL.extension.zh_conversion 中 Converter.options 之字典檔順序,每個序列由長至短轉換。實際文字替換轉換作業在 CeL.data.Convert_Pairs 中的 function convert_using_pair_Map_by_length(text)

辭典修訂流程

一次正常的單句式辭典修訂流程

  1. 閱讀轉換過的文字,發現轉換錯誤。
  2. 改成正確的句子,填入測試檔 general.TW.txtgeneral.TW.answer.txt
  3. 啟動 LTP servernpm test 跑測試。
  4. 檢核測試工具自動生成的條件式,將合適的條件式填入辭典檔 CN_to_TW.LTP.PoS.txtTW_to_CN.LTP.PoS.txt。必要時添加新 filter 功能函數於 CN_to_TW.LTP.filters.js
  5. npm test 確認無衝突。
  6. 通過測試後 push 新辭典檔。

邊閱讀文本邊修訂流程

有時另外挑出句子會解析出不同語法,此時必須透過完整轉換文本修訂辭典:通過 work_crawler 選擇繁簡轉換功能,並隨時修訂辭典,應先設定 .cache_directory(work_crawler 會自動設定)。

  1. 閱讀轉換過的文字,發現轉換錯誤。
  2. 改成正確的句子,填入作品相應的測試檔 _test suite/articles/watch_target.作品名稱.(TW|CN).txt (e.g., watch_target.第一序列.TW.txt),會在每次轉換都測試是否有相符之文字。
  3. 持續修改辭典檔至能通過 npm test nowiki 測試。
  4. 重新生成繁簡轉換後文本,檢核測試工具自動生成的條件式,將合適的條件式填入辭典檔 CN_to_TW.LTP.PoS.txtTW_to_CN.LTP.PoS.txt
  5. 全部閱讀檢核完後,將作品相應的測試檔的文句填入測試檔 general.TW.txtgeneral.TW.answer.txt

Defect

  • LTP 轉換速率過慢。
  • 詞典仍過於薄弱、有缺陷,尚待加強。
  • 因為當前語言解析程式仍處於粗糙階段,解析結果不甚穩定;更換 LTP 程式版本就需要大幅改變辭典。

See also

中文分詞

久未更新

詞性標記 词性标注

久未更新

簡繁轉換

未考慮詞性之簡繁轉換: