閩南語數據集專案 | 閩南語書寫

閩南語數據集專案

目錄
  1. 1. 專案結構
  2. 2. 編輯標記規則
    1. 2.1. 範例
  3. 3. 使用方式
    1. 3.1. 匯出
    2. 3.2. CSV 匯出
    3. 3.3. 採集詞條(Clippings)
  4. 4. 測試
  5. 5. 系統間轉換
  6. 6. 收錄內容
  7. 7. 授權

📌 若有缺漏,歡迎移步 hokkien-writing/dataset 相輔修訂。

閩南語文字數位化專案,書籍、歌詞等等經原文經人工校注後,可透過腳本匯出原版與修改版。

專案結構

books/               校注後的書籍來源(含編輯標記)
lyrics/ 校注後的歌詞來源(含編輯標記)
clippings/ 採集詞條(從書本或日常對話中摘錄的 CSV)
external/ 外部資料集原始檔(由 sync_external.sh 同步)
export/ 匯出輸出
books/ 書籍匯出
lyrics/ 歌詞匯出
clippings/ 採集詞條匯出
external/ 外部資料集標準化 CSV
scripts/ 工具腳本
export.py 匯出原版 / 修改版 Markdown
export_csv.py 匯出結構化 CSV
import_external.py 轉換外部資料集為標準化 CSV
importers/ 各外部資料集的轉換器
processors/ 各書籍的 CSV 解析處理器
base.py 基礎類別與共用函數
tests/ 單元測試
build.sh 一鍵建置腳本
sync_external.sh 同步外部資料集
test.sh 一鍵測試腳本

編輯標記規則

books/lyrics/ 等目錄中的 Markdown 檔案使用以下五種標記記錄校勘修改:

標記 含義 原版輸出 修改版輸出
~~餮~~ 刪除,不需改正 (移除)
~~餮~~(餐) 刪除並改正為括號內文字
~~小暑~~() 刪除但不知如何改正,暫時留白 小暑 〔〕
++等++ 新增文字 (移除)
++++ 需要新增但暫時找不到合適文字 (移除) 〔〕
人[訓] 訓用字,[訓] 標記前方為訓用字 人[訓]
丕[音] 借音字,[音] 標記前方為借音字 丕[音]

範例

來源(校注版):

~~菓~~(果)子
~~污穢~~(垃圾) ++污糟++
~~巧語~~()
++漉++
++++

原版輸出:

菓子
污穢
巧語


修改版輸出:

果子
垃圾 污糟
〔〕

〔〕

使用方式

匯出

./build.sh

會在 export/ 目錄下按來源目錄分別匯出,每個檔案產生三個版本:

  • *_original.md — 原版(移除標記,保留原始文字)
  • *_modified.md — 修改版(套用所有校勘修改)
  • *.csv - 詞句列表

CSV 匯出

每個檔案還會匯出結構化 CSV(需在 scripts/processors/ 中有對應的處理器):

欄位 說明
puj 潮州白話字(校注後)
puj_orig 潮州白話字(原始,僅當與 puj 不同時填寫)
poj 白話字(校注後)
poj_orig 白話字(原始,僅當與 poj 不同時填寫)
tl 台灣話羅馬字(校注後)
tl_orig 台灣話羅馬字(原始,僅當與 tl 不同時填寫)
dp 潮州話拼音(校注後)
dp_orig 潮州話拼音(原始,僅當與 dp 不同時填寫)
bp 閩南話拼音(校注後)
bp_orig 閩南話話拼音(原始,僅當與 bp 不同時填寫)
han 漢字(校注後)
han_orig 漢字(原始,僅當與 han 不同時填寫)
en 英文翻譯(校注後)
en_orig 英文翻譯(原始,僅當與 en 不同時填寫)
zh_CN 普通話翻譯(校注後)
zh_CN_orig 普通話翻譯(原始,僅當與 zh_CN 不同時填寫)
zh_TW 國語翻譯(校注後)
zh_TW_orig 國語翻譯(原始,僅當與 zh_TW 不同時填寫)
source 來源(書名 > 章節)

新增書籍時,只需在 scripts/processors/ 新增同名的 .py 檔案,定義繼承 BookProcessorProcessor 類別即可。

採集詞條(Clippings)

clippings/ 目錄存放從書本或日常對話中採集的詞條,格式為 CSV,命名規則為 {teochew|hokkien}.{source}.csv

CSV 表頭:

欄位 說明
latn_norm 標準化羅馬字(帶調號數字,如 ka2-thiann3
han 漢字,多個異體用 `
zh_TW 繁體中文釋義
zh_CN 簡體中文釋義
en 英文釋義

檔名前綴 teochewhokkien 決定 latn_norm 轉換為 PUJ 或 POJ。| 分隔的異體(latn_normhanzh_TW 皆支援)會在匯出時自動拆分為獨立行。

測試

專案使用 Python 內置的 unittest 框架進行測試。執行以下指令即可運行所有單元測試:

./test.sh

系統間轉換

支援 POJ、TL、PUJ、BP、DP 等系統間的互相轉換,以 LATN_NORM 為中介自動鏈式轉換。

from scripts.latn import create_translator

# PUJ → POJ
t = create_translator("PUJ", "POJ")
t.translate("tsàng") # "chàng"
t.translate("kóu") # "kó͘"

# POJ → TL
t = create_translator("POJ", "TL")
t.translate("chùi") # "tsùi"

# POJ → BP
t = create_translator("POJ", "BP")
t.translate("pàng") # "bàng"

收錄內容

授權

本專案程式碼以 MIT License 授權。

外部資料集各自有其授權條款,詳見 external/README.md。其中包含 CC BY-SA 4.0、CC BY-NC-SA 3.0 TW、CC BY-ND 3.0 TW、CC0 等不同授權。