Ruben Tsui commited on
Commit ·
fb81524
1
Parent(s): 70d6b97
Update book content
Browse files- commit_changes.sh → commit_changes_hf.sh +0 -0
- commit_changes_posit.sh +16 -0
- src/_publish.yml +4 -0
- src/index.qmd +122 -113
- src/media/Colab_OpenSubtitles2024.png +3 -0
- src/media/Colab_OpenSubtitles2024_runall.png +3 -0
- src/media/Colab_OpenSubtitles2024_search_results.png +3 -0
- src/media/Zed_regex_example.png +3 -0
commit_changes.sh → commit_changes_hf.sh
RENAMED
|
File without changes
|
commit_changes_posit.sh
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/bin/bash
|
| 2 |
+
|
| 3 |
+
# Use the first argument as the commit message, or default to "Update book content"
|
| 4 |
+
COMMIT_MSG=${1:-"Update book content"}
|
| 5 |
+
|
| 6 |
+
echo "Publishing the Quarto book to Posit Connect Cloud..."
|
| 7 |
+
|
| 8 |
+
# The actual Quarto project configuration (_quarto.yml) is located inside the 'src' directory.
|
| 9 |
+
# This command will handle the publishing process to Posit Connect Cloud.
|
| 10 |
+
quarto publish posit-connect-cloud src
|
| 11 |
+
|
| 12 |
+
echo "Staging and committing changes to git..."
|
| 13 |
+
git add .
|
| 14 |
+
git commit -m "$COMMIT_MSG"
|
| 15 |
+
|
| 16 |
+
echo "Publishing complete!"
|
src/_publish.yml
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
- source: project
|
| 2 |
+
posit-connect-cloud:
|
| 3 |
+
- id: 019d8a54-7c6f-f25c-a5f6-e83ae6be4abc
|
| 4 |
+
url: https://connect.posit.cloud/rubentsui/content/019d8a54-7c6f-f25c-a5f6-e83ae6be4abc
|
src/index.qmd
CHANGED
|
@@ -2,7 +2,6 @@
|
|
| 2 |
title: "第三章 從使用工具到建立資源:語料、檢索與雙語平行資料"
|
| 3 |
---
|
| 4 |
|
| 5 |
-
|
| 6 |
前兩章的重點放在電腦輔助翻譯工具(computer-assisted translation tools, CAT tools的操作,以及譯者如何在既有的工作介面裡提升效率。本章將拓寬探討範疇:譯者不只是在工具裡工作,也可主動建立自己的參考資源、檢索環境與可重用資料。當譯者開始累積雙語例句、整理舊譯稿、處理雙語網站、對齊中英文段落,原本零散的參考材料就會逐漸轉化為真正可回收、可檢索、可驗證的翻譯資產。
|
| 7 |
|
| 8 |
對譯者而言,這種轉變很重要。因為翻譯工作的困難,往往不在於「看不懂原文」,而在於「如何在特定領域、特定語境、特定語區(locale)下,選出最合適的譯法」。這時候,快速找到可信的雙語例句、比對相近文脈、觀察常見搭配,往往比單靠個人語感來得可靠。語料與雙語平行資料的價值,就在於能把「我好像看過這樣寫」轉化成「我知道這種寫法在哪些文本裡一再出現過,因此它是客觀正確的」。
|
|
@@ -11,7 +10,7 @@ title: "第三章 從使用工具到建立資源:語料、檢索與雙語平
|
|
| 11 |
|
| 12 |
如果要用一句話概括本章的核心觀念,那就是:譯者不只是工具的使用者,也可以是語料資源的建造者。當譯者開始建置雙語資料基礎設施,工作方式就會從「每次都重新開始」逐漸轉向「在既有資產上持續累積自身價值」。
|
| 13 |
|
| 14 |
-
|
| 15 |
|
| 16 |
「語料庫」(corpus; 複數 corpora)這個詞,聽起來有點學術,但對實務譯者來說,可以用一個簡單的方式理解:語料庫就是一批可系統性檢索的文本。若這批文本只有單一語言,就稱為單語語料(monolingual corpus);若同一批內容在兩種語言之間存在對應關係,就形成雙語語料(bilingual corpus)或平行語料(parallel corpus)。其中對譯者特別有幫助的,是那些可以同時看到原文與譯文、或至少能在兩種語言間進行對照查詢的資料。
|
| 17 |
|
|
@@ -35,15 +34,15 @@ OPUS 的優點,不只是量大,也在於來源多樣。其收錄的語料包
|
|
| 35 |
|
| 36 |
對譯者來說,公開語料庫真正的價值往往不在於「直接拿來用」,而在於「協助縮小判斷範圍」。在先從語料觀察到三種常見寫法,再回顧客戶的風格指南(style guide)、既有翻譯記憶庫(translation memory, TM)、參考資料與專案語境後,譯者即更容易做出一致而有根據的選擇。換句話說,語料庫不是要取代譯者,而是要協助譯者在資訊不足情況下做出較合理的判斷。
|
| 37 |
|
| 38 |
-
對照查詢的實務場景也很常見。
|
| 39 |
|
| 40 |
-
另一個常
|
| 41 |
|
| 42 |
然而公開語料也有其侷限:(1)公開語料未必能反映最新的品牌、流行用語以及語言習慣;(2)這類資源常缺乏脈絡細節,不知道某個譯法是在什麼任務條件下產生;(3)公開語料可能混入不同時期、不同翻譯規範與不同���質等級的文本。這些限制提醒我們,語料庫不能直接取代客戶指示、既有術語庫與專案內部資源。但在沒、有內部資源、需要快速建立判斷時,公開雙語語料仍然是譯者極具成本效益的外部輔助工具。
|
| 43 |
|
| 44 |
如果把公開雙語語料庫的功能濃縮成一句工作原則,那就是:先用公開語料擴大視野,再用專案規範收斂答案。譯者真正需要的不是海量文本本身,而是從海量文本中抽出與當前任務最相關、最可信、最接近目標語區的那一小部分。
|
| 45 |
|
| 46 |
-
|
| 47 |
|
| 48 |
語料之所以有用,前提在於能有效檢索所需資訊。大量文本若不能有效搜尋,充其量只是一堆資料。對譯者來說,搜尋語料最基本的能力不是寫程式,而是知道怎麼把「我想找某種句子」轉換成可執行的檢索條件。這就是關鍵詞檢索、對照查詢與正規表示式要解決的問題。
|
| 49 |
|
|
@@ -53,6 +52,8 @@ OPUS 的優點,不只是量大,也在於來源多樣。其收錄的語料包
|
|
| 53 |
|
| 54 |
這種檢索能力,不必依賴昂貴平台才能做到。傳統的「對照檢索軟體」(concordancer[^1])可以勝任,很多日常工具也可以部分完成同樣的工作。以 Calibre 的 ebook-viewer 為例,這套工具原本是電子書閱讀器,卻很適合被譯者挪用為中小型語料檢索介面。官方文件指出,ebook-viewer 不只支援一般搜尋,也支援 whole words、nearby words 與 regex搜尋模式,並提供 Reference mode 方便定位段落,以及 highlight 與 annotation 功能協助做人工標記。若將整理好的雙語文件或單語參考資料做成 ePub、或匯入為可閱讀文本,calibre 其實能成為相當順手的例句檢索工具。
|
| 55 |
|
|
|
|
|
|
|
| 56 |
Calibre **Regex 工具使用方式**
|
| 57 |
|
| 58 |
工具 (1):⇒ \[Ruben\] Itemize the following steps
|
|
@@ -65,7 +66,6 @@ Calibre 為一開源 (open source)電子書及文件格式轉換軟體,內
|
|
| 65 |
|
| 66 |
1. 安裝完成後可在 Explorer/Finder 內在檔名上按右鍵,再點選 ebook-viewer 可將文件打開。例如,*Alice in Wonderland* (《愛麗絲夢遊仙境》) 一書可以在古騰堡計畫 (Project Gutenberg) 網站下載:[[https://www.gutenberg.org/ebooks/11]{.underline}](https://www.gutenberg.org/ebooks/11)
|
| 67 |
|
| 68 |
-
|
| 69 |

|
| 70 |
|
| 71 |
Ctrl-F (Windows) 或 ⌘F (macOS)可進入搜尋。搜尋方塊下方的下拉式選單中可點選以 regex 搜尋。
|
|
@@ -88,7 +88,7 @@ Regex 工具 (2):Zed (開源文字編輯軟體;下載網址:[[https://zed.
|
|
| 88 |
|
| 89 |
關鍵詞檢索、對照查詢與 regex 的關係可以如此理解:關鍵詞搜尋是找字串,concordancing 是看上下文,而regex 係將搜尋條件表達得更精準。當檢索需求從「找這個詞」變成「找所有帶有百分比與括號的句子」、「找所有未翻譯的英文字串」、「找所有第 X 條、第 X 項」,甚至是如「戚戚然」、「營營役役」的疊詞時,regex 就會變得非常有用。
|
| 90 |
|
| 91 |
-
下載《李清照集》([[https://www.degruyterbrill.com/document/doi/10.1515/9781501504518/html]{.underline}](https://www.degruyterbrill.com/document/doi/10.1515/9781501504518/html))英譯 ePub 檔,以 Calibre ebook-viewer 搜尋 regex: `
|
| 92 |
|
| 93 |

|
| 94 |
|
|
@@ -98,102 +98,115 @@ Regex 工具 (2):Zed (開源文字編輯軟體;下載網址:[[https://zed.
|
|
| 98 |
|
| 99 |
## 正規表示式摘要
|
| 100 |
|
| 101 |
-
|
| 102 |
-
|
|
| 103 |
-
|
| 104 |
-
| **
|
| 105 |
-
|
| 106 |
-
|
|
| 107 |
-
|
| 108 |
-
| `
|
| 109 |
-
|
| 110 |
-
| `\`
|
| 111 |
-
|
| 112 |
-
| `
|
| 113 |
-
|
| 114 |
-
| `
|
| 115 |
-
|
| 116 |
-
|
|
| 117 |
-
|
| 118 |
-
| `\
|
| 119 |
-
|
| 120 |
-
| `
|
| 121 |
-
|
| 122 |
-
| `
|
| 123 |
-
|
| 124 |
-
| `
|
| 125 |
-
|
| 126 |
-
| `{
|
| 127 |
-
|
| 128 |
-
|
|
| 129 |
-
|
| 130 |
-
|
|
| 131 |
-
|
| 132 |
-
|
|
| 133 |
-
|
| 134 |
-
|
| 135 |
-
|
| 136 |
-
|
| 137 |
-
+-----------------------------------------------------------------------+
|
| 138 |
-
|
|
| 139 |
-
|
| 140 |
-
|
|
| 141 |
-
|
| 142 |
-
|
| 143 |
-
+-----------------------------------------------------------------------+
|
| 144 |
-
|
| 145 |
-
|
| 146 |
-
|
| 147 |
-
+--------------+-------------------------------------------------------+
|
| 148 |
-
| `
|
| 149 |
-
|
| 150 |
-
|
|
| 151 |
-
|
| 152 |
-
|
|
| 153 |
-
|
| 154 |
-
|
|
| 155 |
-
|
| 156 |
-
|
| 157 |
-
+--------------+-------------------------------------------------------+
|
| 158 |
-
|
| 159 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 160 |
|
| 161 |
::: {.callout-note title="實務操作 (1) OpenSubtitles 2024"}
|
| 162 |
-
|
| 163 |
-
|
| 164 |
-
|
|
| 165 |
-
|
|
| 166 |
-
|
|
| 167 |
-
|
|
| 168 |
-
|
|
| 169 |
-
|
|
| 170 |
-
|
|
| 171 |
-
| {width="5.854166666666667in" |
|
| 178 |
-
| height="2.2222222222222223in"} |
|
| 179 |
-
| |
|
| 180 |
-
| 使用者可更改搜尋語言及 |
|
| 181 |
-
| 字串(中、英字串輸入方格分開)。如要儲存搜尋結果,可先點一下表格,按 |
|
| 182 |
-
| Ctrl-A 或 ⌘A (全選), 再剪貼至 Word、Excel 或文字編輯器即可。 |
|
| 183 |
-
+=======================================================================+
|
| 184 |
-
+-----------------------------------------------------------------------+
|
| 185 |
-
|
| 186 |
:::
|
| 187 |
|
| 188 |
⇒throw \<someone\> under the bus
|
| 189 |
|
| 190 |
例如,輸入英文搜尋字串 thr\[eo\]w(s\|ing)? .+? under the bus 可找到
|
| 191 |
|
| 192 |
-
... **throwing** *you* under the bus.
|
| 193 |
|
| 194 |
{width="5.854166666666667in" height="2.2916666666666665in"}
|
| 195 |
|
| 196 |
-
|
| 197 |
|
| 198 |
對譯者特別重要的,是正規表示式在品管與前處理上的用途。很多雙語資料在進入對齊或TM之前,都需要先過濾雜訊,如頁首頁尾、重複空白、編號殘片、複製貼上留下的斷行、OCR造成的錯字、HTML標記、網址、程式碼片段、電子郵件地址等,若不先處理,後續比對與對齊的品質就會大幅下降。regex 的價值,正在於能快速批次抓出這些形式,免去逐行人工檢查的勞費。
|
| 199 |
|
|
@@ -206,11 +219,9 @@ Regex 工具 (2):Zed (開源文字編輯軟體;下載網址:[[https://zed.
|
|
| 206 |
不過,使用 regex 時一定要記住:不同工具的正規表示式引擎(regex engine)不完全相同。某些編輯器支援 lookbehind,某些不支援;有些工具把`\w` 視為英數底線,不包含中文;有些則對 Unicode 支援較完整。calibre 的regex 搜尋、文字編輯器的搜尋、程式語言內建的 regex函式庫,彼此的細節也可能不同。因此,實務上最重要的不是背所有語法,而是知道先做小範圍測試。切忌一開始便對整批資料進行大規模取代;應先於少量樣本上確認模式是否精確匹配目標。
|
| 207 |
|
| 208 |
::: {.callout-note title="實務操作 (2)"}
|
|
|
|
| 209 |
|
| 210 |
-
|
| 211 |
-
|
| 212 |
-
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 213 |
-
|
| 214 |
:::
|
| 215 |
|
| 216 |
具備這種檢索思維後,很多工作會突然變快。譯者不再僅憑「肉眼尋找」,而是學會構思更精準的搜尋條件。這種能力對建立語料尤其關鍵。因為語料建置的本質,往往不是高難度演算法,而是大量重複的小判斷:哪些行要保留、哪些要刪除、哪些看起來像正文、哪些只是網站噪音、哪些中英片段可能互相對應。regex 無法替譯者做出所有判斷,但仍能把最機械、最耗時的篩選工作大幅自動化。
|
|
@@ -262,18 +273,19 @@ Regex 工具 (2):Zed (開源文字編輯軟體;下載網址:[[https://zed.
|
|
| 262 |
| |
|
| 263 |
| 你可以在帳號頁面重設密碼。 |
|
| 264 |
+=======================================================================+
|
|
|
|
| 265 |
+-----------------------------------------------------------------------+
|
| 266 |
|
| 267 |
第二,一對多。例如英文原為一句,中文為了語氣自然而拆成兩句(以喬治.歐威爾《1984》開場白為例):
|
| 268 |
|
| 269 |
-
+-----------------------------------------------------------------------+
|
| 270 |
-
| It was a bright cold day in April, and the clocks were striking
|
| 271 |
-
|
|
| 272 |
-
|
|
| 273 |
-
|
|
| 274 |
-
|
| 275 |
-
|
| 276 |
-
+-----------------------------------------------------------------------+
|
| 277 |
|
| 278 |
第三,多對一。例如英文兩句,中文為了順句而合併:
|
| 279 |
|
|
@@ -283,6 +295,7 @@ Regex 工具 (2):Zed (開源文字編輯軟體;下載網址:[[https://zed.
|
|
| 283 |
| |
|
| 284 |
| 點一下「儲存」後,關閉對話方塊。 |
|
| 285 |
+=======================================================================+
|
|
|
|
| 286 |
+-----------------------------------------------------------------------+
|
| 287 |
|
| 288 |
第四,是不完全對應。有些說明性插句、文化補充或法規聲明,在某一語言版本中可能被省略或改寫。這種情況如果硬要逐句對齊,通常只會製造更多噪音。
|
|
@@ -307,10 +320,9 @@ Regex 工具 (2):Zed (開源文字編輯軟體;下載網址:[[https://zed.
|
|
| 307 |
|
| 308 |
::: {.callout-note title="文本句對齊實務操作 (Google Colab notebook)"}
|
| 309 |
|
| 310 |
-
|
| 311 |
-
|
| 312 |
-
-----------------------------------------------------------------------
|
| 313 |
|
|
|
|
| 314 |
:::
|
| 315 |
|
| 316 |
第五節 如何把自建資源接回 CAT 工作流程
|
|
@@ -349,10 +361,9 @@ Regex 工具 (2):Zed (開源文字編輯軟體;下載網址:[[https://zed.
|
|
| 349 |
|
| 350 |
::: {.callout-note title="TMX Editor實務操作"}
|
| 351 |
|
| 352 |
-
|
| 353 |
-
|
| 354 |
-
-----------------------------------------------------------------------
|
| 355 |
|
|
|
|
| 356 |
:::
|
| 357 |
|
| 358 |
第六節 延伸討論:AI 代理人(AI agent)與未來翻譯工作流程
|
|
@@ -401,6 +412,4 @@ Regex 工具 (2):Zed (開源文字編輯軟體;下載網址:[[https://zed.
|
|
| 401 |
|
| 402 |
\* Zed editor: [[https://zed.dev]{.underline}](https://zed.dev)
|
| 403 |
|
| 404 |
-
\* TMXEditor: [[https://github.com/rmraya/TMXEditor]{.underline}](https://github.com/rmraya/TMXEditor)
|
| 405 |
-
|
| 406 |
-
[^1]: 華語地區通常直接使用英語 concordance??
|
|
|
|
| 2 |
title: "第三章 從使用工具到建立資源:語料、檢索與雙語平行資料"
|
| 3 |
---
|
| 4 |
|
|
|
|
| 5 |
前兩章的重點放在電腦輔助翻譯工具(computer-assisted translation tools, CAT tools的操作,以及譯者如何在既有的工作介面裡提升效率。本章將拓寬探討範疇:譯者不只是在工具裡工作,也可主動建立自己的參考資源、檢索環境與可重用資料。當譯者開始累積雙語例句、整理舊譯稿、處理雙語網站、對齊中英文段落,原本零散的參考材料就會逐漸轉化為真正可回收、可檢索、可驗證的翻譯資產。
|
| 6 |
|
| 7 |
對譯者而言,這種轉變很重要。因為翻譯工作的困難,往往不在於「看不懂原文」,而在於「如何在特定領域、特定語境、特定語區(locale)下,選出最合適的譯法」。這時候,快速找到可信的雙語例句、比對相近文脈、觀察常見搭配,往往比單靠個人語感來得可靠。語料與雙語平行資料的價值,就在於能把「我好像看過這樣寫」轉化成「我知道這種寫法在哪些文本裡一再出現過,因此它是客觀正確的」。
|
|
|
|
| 10 |
|
| 11 |
如果要用一句話概括本章的核心觀念,那就是:譯者不只是工具的使用者,也可以是語料資源的建造者。當譯者開始建置雙語資料基礎設施,工作方式就會從「每次都重新開始」逐漸轉向「在既有資產上持續累積自身價值」。
|
| 12 |
|
| 13 |
+
## 第一節 公開雙語語料庫如何幫助譯者
|
| 14 |
|
| 15 |
「語料庫」(corpus; 複數 corpora)這個詞,聽起來有點學術,但對實務譯者來說,可以用一個簡單的方式理解:語料庫就是一批可系統性檢索的文本。若這批文本只有單一語言,就稱為單語語料(monolingual corpus);若同一批內容在兩種語言之間存在對應關係,就形成雙語語料(bilingual corpus)或平行語料(parallel corpus)。其中對譯者特別有幫助的,是那些可以同時看到原文與譯文、或至少能在兩種語言間進行對照查詢的資料。
|
| 16 |
|
|
|
|
| 34 |
|
| 35 |
對譯者來說,公開語料庫真正的價值往往不在於「直接拿來用」,而在於「協助縮小判斷範圍」。在先從語料觀察到三種常見寫法,再回顧客戶的風格指南(style guide)、既有翻譯記憶庫(translation memory, TM)、參考資料與專案語境後,譯者即更容易做出一致而有根據的選擇。換句話說,語料庫不是要取代譯者,而是要協助譯者在資訊不足情況下做出較合理的判斷。
|
| 36 |
|
| 37 |
+
對照查詢的實務場景也很常見。例如在公共政策或外交文件中,promote、advance、enhance、strengthen 這幾個動詞雖然都可譯作「推動」、「提升」、「強化」,但各自常搭配的受詞與語氣仍有差異。公開雙語語料能幫助譯者在這種細微處做出較不武斷的判斷。
|
| 38 |
|
| 39 |
+
另一個常受到忽略的優點,是語料能幫助譯者判斷「不要怎麼翻」。多數情況下,導致譯文顯得生硬的主因並非嚴重誤譯,而是受限於原文句法生硬套用至中文。若透過雙語語料觀察某個英文結構在中文裡通常如何重組,便能更清楚哪些語序為中文慣用、哪些只是看似忠實,但實則僵硬。這也是為什麼語料對譯者有時比字典更有用:字典僅提供對應詞,語料則呈現實際用法的情境。
|
| 40 |
|
| 41 |
然而公開語料也有其侷限:(1)公開語料未必能反映最新的品牌、流行用語以及語言習慣;(2)這類資源常缺乏脈絡細節,不知道某個譯法是在什麼任務條件下產生;(3)公開語料可能混入不同時期、不同翻譯規範與不同���質等級的文本。這些限制提醒我們,語料庫不能直接取代客戶指示、既有術語庫與專案內部資源。但在沒、有內部資源、需要快速建立判斷時,公開雙語語料仍然是譯者極具成本效益的外部輔助工具。
|
| 42 |
|
| 43 |
如果把公開雙語語料庫的功能濃縮成一句工作原則,那就是:先用公開語料擴大視野,再用專案規範收斂答案。譯者真正需要的不是海量文本本身,而是從海量文本中抽出與當前任務最相關、最可信、最接近目標語區的那一小部分。
|
| 44 |
|
| 45 |
+
## 第二節 文本檢索與資料處理技術:對照查詢與正規表示式
|
| 46 |
|
| 47 |
語料之所以有用,前提在於能有效檢索所需資訊。大量文本若不能有效搜尋,充其量只是一堆資料。對譯者來說,搜尋語料最基本的能力不是寫程式,而是知道怎麼把「我想找某種句子」轉換成可執行的檢索條件。這就是關鍵詞檢索、對照查詢與正規表示式要解決的問題。
|
| 48 |
|
|
|
|
| 52 |
|
| 53 |
這種檢索能力,不必依賴昂貴平台才能做到。傳統的「對照檢索軟體」(concordancer[^1])可以勝任,很多日常工具也可以部分完成同樣的工作。以 Calibre 的 ebook-viewer 為例,這套工具原本是電子書閱讀器,卻很適合被譯者挪用為中小型語料檢索介面。官方文件指出,ebook-viewer 不只支援一般搜尋,也支援 whole words、nearby words 與 regex搜尋模式,並提供 Reference mode 方便定位段落,以及 highlight 與 annotation 功能協助做人工標記。若將整理好的雙語文件或單語參考資料做成 ePub、或匯入為可閱讀文本,calibre 其實能成為相當順手的例句檢索工具。
|
| 54 |
|
| 55 |
+
[^1]: 華語地區通常直接使用英語 concordance??
|
| 56 |
+
|
| 57 |
Calibre **Regex 工具使用方式**
|
| 58 |
|
| 59 |
工具 (1):⇒ \[Ruben\] Itemize the following steps
|
|
|
|
| 66 |
|
| 67 |
1. 安裝完成後可在 Explorer/Finder 內在檔名上按右鍵,再點選 ebook-viewer 可將文件打開。例如,*Alice in Wonderland* (《愛麗絲夢遊仙境》) 一書可以在古騰堡計畫 (Project Gutenberg) 網站下載:[[https://www.gutenberg.org/ebooks/11]{.underline}](https://www.gutenberg.org/ebooks/11)
|
| 68 |
|
|
|
|
| 69 |

|
| 70 |
|
| 71 |
Ctrl-F (Windows) 或 ⌘F (macOS)可進入搜尋。搜尋方塊下方的下拉式選單中可點選以 regex 搜尋。
|
|
|
|
| 88 |
|
| 89 |
關鍵詞檢索、對照查詢與 regex 的關係可以如此理解:關鍵詞搜尋是找字串,concordancing 是看上下文,而regex 係將搜尋條件表達得更精準。當檢索需求從「找這個詞」變成「找所有帶有百分比與括號的句子」、「找所有未翻譯的英文字串」、「找所有第 X 條、第 X 項」,甚至是如「戚戚然」、「營營役役」的疊詞時,regex 就會變得非常有用。
|
| 90 |
|
| 91 |
+
下載《李清照集》([[https://www.degruyterbrill.com/document/doi/10.1515/9781501504518/html]{.underline}](https://www.degruyterbrill.com/document/doi/10.1515/9781501504518/html))英譯 ePub 檔,以 Calibre ebook-viewer 搜尋 regex: `(\p{Han})\1(\p{Han})\2` 可找到9筆AABB式疊詞:
|
| 92 |
|
| 93 |

|
| 94 |
|
|
|
|
| 98 |
|
| 99 |
## 正規表示式摘要
|
| 100 |
|
| 101 |
+
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| 102 |
+
| 字元 | 意義 / 用法 | 備註 |
|
| 103 |
+
+:======================================================================+:================================================================================================================================================+:===================================================================================================================================================================================================+
|
| 104 |
+
| **字面意義的字元**<br>(literal characters) | 例如:`a` `b` `1` `2` `_` `"` `<` `>` | |
|
| 105 |
+
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| 106 |
+
| **特殊字元**<br>**metacharacters** | | |
|
| 107 |
+
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| 108 |
+
| `\t` | **t**ab(定位字元) | |
|
| 109 |
+
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| 110 |
+
| `\n` | **n**ewline(換行字元);<br>Windows:`\r\n`(CR LF)<br>UNIX/Linux/macOS:`\n`(LF) | |
|
| 111 |
+
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| 112 |
+
| `\s` | white **s**pace(空白字元) | 包含空格(space)及 tab 等 |
|
| 113 |
+
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| 114 |
+
| `.`(*句點*) | 比對任意字元(`\n` 除外) | |
|
| 115 |
+
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| 116 |
+
| **元字元**<br>(必須以 `\` 跳脫才能進行文字比對) | | |
|
| 117 |
+
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| 118 |
+
| `\` | 跳脫 (escape) 字元 | |
|
| 119 |
+
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| 120 |
+
| `|` | 替代(或) | |
|
| 121 |
+
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| 122 |
+
| `()` | 群組;`(?:)` 為非擷取群組 | |
|
| 123 |
+
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| 124 |
+
| `[]` | 字元類別;恰好比對一個字元 | 範例:比對任一英文母音字母 `[aeiou]` |
|
| 125 |
+
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| 126 |
+
| `{}` `*` `?` `+` | 量詞 | |
|
| 127 |
+
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| 128 |
+
| `^` `$` | 錨點(零寬度) | |
|
| 129 |
+
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| 130 |
+
| `?` | \(1\) 作為量詞時,作用於緊鄰其左方的一個字元、字元類別或群組;<br>(2) 作為非貪婪 non-greedy 或懶惰 lazy 指定符 | |
|
| 131 |
+
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| 132 |
+
| **錨點 anchor**<br>(零寬度:僅比對位置,不比對字元) | | |
|
| 133 |
+
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| 134 |
+
| `\b` | 詞邊界 | 範例:空白字元(或標點符號)與文字字元之間的位置 |
|
| 135 |
+
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| 136 |
+
| `^` | 脫字符號:字串開頭 | |
|
| 137 |
+
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| 138 |
+
| `$` | 錢字符號:字串結尾 | |
|
| 139 |
+
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| 140 |
+
| **量詞 quantifier**<br>(作用於緊鄰其左方的一個字元、字元類別或群組) | | |
|
| 141 |
+
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| 142 |
+
| `*` | 零次或多次 | |
|
| 143 |
+
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| 144 |
+
| `+` | 一次或多次 | 亦即「至少出現一次」 |
|
| 145 |
+
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| 146 |
+
| `?` | 零次或一次 | 亦即「可有可無」 |
|
| 147 |
+
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| 148 |
+
| `{n}` | 恰好 *n* 次 | |
|
| 149 |
+
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| 150 |
+
| `{n,m}` | 至少 *n* 次,至多 *m* 次 | |
|
| 151 |
+
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| 152 |
+
| `{n,}` | 至少 *n* 次,無上限 | |
|
| 153 |
+
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| 154 |
+
| **字元類別** | 以 `[]` 括起的字元 ── 恰好比對一個字元 | |
|
| 155 |
+
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| 156 |
+
| **範圍** | `[a-z]` 比對任一英文小寫字母;<br>`\p{Han}`(最完整的寫法)或 `[一-龥]` 或 `[\u4E00-\u9FFF]` 或 `[\x{4E00}-\x{9FFF}]`,共 20,992 個基本中文字元 | 起始字元的 Unicode 碼位必須較小;中日韓統一表意文字(CJK Unified Ideographs)涵蓋最常見的 CJK 字元(即漢字);Zed 及 Calibre ebook-viewer 皆可接受;CudaText 使用最後一種格式處理一般 Unicode 範圍 |
|
| 157 |
+
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| 158 |
+
| **快捷寫法** | `^` 在 `[]` 中表示該類別的「相反」(也就是所有此類別以外的字元) | 範例:比對*任何*非英文母音的字元 `[^aeiou]` |
|
| 159 |
+
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| 160 |
+
| `\d` | 數字,等同於 `[0-9]` | |
|
| 161 |
+
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| 162 |
+
| `\w` | 「文字」字元;`\d` 加上 `[a-zA-Z]` 加上 `_`(底線字元;underscore),對於非英文字母書寫的語言可能還包含更多字元 | `\w` 的定義取決於特定的正規表示式引擎;部分引擎會納入漢字字元及含附加符號的字元(如 é、ç、ü);其他引擎則不會。 |
|
| 163 |
+
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| 164 |
+
| `\D` `\S` `\W`<br>`\P{Han}`<br>(相反集合) | 代表對應小寫字元類別之**否定**的字元類別 | `\D`、`\S`、`\W`、`\P{Han}` 分別為非數字、非空白、非文字及非中日韓字元 |
|
| 165 |
+
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| 166 |
+
|
| 167 |
+
例如,若欲找出所有數值加單位的表達,例如 5 km、3.5 GB、20%,可以寫成`\d+(\.\d+)?\s?(km|GB|%)`。若欲擷取英文術語後面緊接中文括號說明的寫法,例如 Application Programming Interface(API) 或 workspace(工作區),可以針對英文字串與全形括號組合設計模式。這些檢索方式之所以有用,是因為這些模式不是把文字當作一串字,而是把文字當成一種可辨識的形式。
|
| 168 |
+
|
| 169 |
+
在搜尋方塊輸入:`\d+(\.\d+)?\s?(km|GB|%)` 
|
| 170 |
+
|
| 171 |
+
以上可看到符合該 regex 的文字在編輯器中標示出來。此 regex 以3個部分分析如下:
|
| 172 |
+
|
| 173 |
+
+------------------------------------+-------------------------------------------------------------------------+
|
| 174 |
+
| \\d+(\\.\\d+)? | 數字(1或多個;代表整數部分),後面有「可有可無」的小數點及1或多個數字」 |
|
| 175 |
+
+====================================+=========================================================================+
|
| 176 |
+
| \\s? | 空格「可有可無」 |
|
| 177 |
+
+------------------------------------+-------------------------------------------------------------------------+
|
| 178 |
+
| (km\|GB\|%) | 3選1: km 或 GB 或 % |
|
| 179 |
+
+------------------------------------+-------------------------------------------------------------------------+
|
| 180 |
+
| 以上為要出現在同一行: 分 3 rows \| | |
|
| 181 |
+
+------------------------------------+-------------------------------------------------------------------------+
|
| 182 |
|
| 183 |
::: {.callout-note title="實務操作 (1) OpenSubtitles 2024"}
|
| 184 |
+
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
| 185 |
+
| [[https://colab.research.g oogle.com/drive/1hz8Yt1vev6xmfRnemPzDcyjXkBZ-m7qF]{.underline}](https%20://colab.research.google.com/drive/1hz8Yt1vev6xmfRnemPzDcyjXkBZ-m7qF) |
|
| 186 |
+
| |
|
| 187 |
+
| 選單:先點選 Runtime ⇒ Run all 讓系統下載程式套件及語料庫 (OpenSubtitles 2024) |
|
| 188 |
+
| |
|
| 189 |
+
| {width="5.854166666666667in" \| height="3.0in"} |
|
| 190 |
+
| |
|
| 191 |
+
| 因系統 須下載語料庫,故請耐心等候數分鐘。系統完成搜尋後會將結果顯示於下方: |
|
| 192 |
+
| |
|
| 193 |
+
| {width="5.854166666666667in" \| height="2.2222222222222223in"} |
|
| 194 |
+
| |
|
| 195 |
+
| 使用者可更改搜尋語言及 字串(中、英字串輸入方格分開)。如要儲存搜尋結果,可先點一下表格,按 Ctrl-A 或 ⌘A (全選), 再剪貼至 Word、Excel 或文字編輯器即可。 |
|
| 196 |
+
+==========================================================================================================================================================================+
|
| 197 |
+
| |
|
| 198 |
+
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 199 |
:::
|
| 200 |
|
| 201 |
⇒throw \<someone\> under the bus
|
| 202 |
|
| 203 |
例如,輸入英文搜尋字串 thr\[eo\]w(s\|ing)? .+? under the bus 可找到
|
| 204 |
|
| 205 |
+
... **throwing** *you* under the bus. ... **throw** *me* under the bus! I **threw** *four people* under the bus for \$35,000, ... 等等
|
| 206 |
|
| 207 |
{width="5.854166666666667in" height="2.2916666666666665in"}
|
| 208 |
|
| 209 |
+
------------------------------------------------------------------------
|
| 210 |
|
| 211 |
對譯者特別重要的,是正規表示式在品管與前處理上的用途。很多雙語資料在進入對齊或TM之前,都需要先過濾雜訊,如頁首頁尾、重複空白、編號殘片、複製貼上留下的斷行、OCR造成的錯字、HTML標記、網址、程式碼片段、電子郵件地址等,若不先處理,後續比對與對齊的品質就會大幅下降。regex 的價值,正在於能快速批次抓出這些形式,免去逐行人工檢查的勞費。
|
| 212 |
|
|
|
|
| 219 |
不過,使用 regex 時一定要記住:不同工具的正規表示式引擎(regex engine)不完全相同。某些編輯器支援 lookbehind,某些不支援;有些工具把`\w` 視為英數底線,不包含中文;有些則對 Unicode 支援較完整。calibre 的regex 搜尋、文字編輯器的搜尋、程式語言內建的 regex函式庫,彼此的細節也可能不同。因此,實務上最重要的不是背所有語法,而是知道先做小範圍測試。切忌一開始便對整批資料進行大規模取代;應先於少量樣本上確認模式是否精確匹配目標。
|
| 220 |
|
| 221 |
::: {.callout-note title="實務操作 (2)"}
|
| 222 |
+
---------------------------------------------------------------------------------------------------------------------------------------------------------------------- [[https://colab.research.google.com/drive/1hz8Yt1vev6xmfRnemPzDcyjXkBZ-m7qF]{.underline}](https://colab.research.google.com/drive/1hz8Yt1vev6xmfRnemPzDcyjXkBZ-m7qF) ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 223 |
|
| 224 |
+
------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
| 225 |
:::
|
| 226 |
|
| 227 |
具備這種檢索思維後,很多工作會突然變快。譯者不再僅憑「肉眼尋找」,而是學會構思更精準的搜尋條件。這種能力對建立語料尤其關鍵。因為語料建置的本質,往往不是高難度演算法,而是大量重複的小判斷:哪些行要保留、哪些要刪除、哪些看起來像正文、哪些只是網站噪音、哪些中英片段可能互相對應。regex 無法替譯者做出所有判斷,但仍能把最機械、最耗時的篩選工作大幅自動化。
|
|
|
|
| 273 |
| |
|
| 274 |
| 你可以在帳號頁面重設密碼。 |
|
| 275 |
+=======================================================================+
|
| 276 |
+
| |
|
| 277 |
+-----------------------------------------------------------------------+
|
| 278 |
|
| 279 |
第二,一對多。例如英文原為一句,中文為了語氣自然而拆成兩句(以喬治.歐威爾《1984》開場白為例):
|
| 280 |
|
| 281 |
+
+---------------------------------------------------------------------------+
|
| 282 |
+
| It was a bright cold day in April, and the clocks were striking thirteen. |
|
| 283 |
+
| |
|
| 284 |
+
| 四月裡,天氣晴朗寒冷。\ |
|
| 285 |
+
| 鐘敲了十三下。 |
|
| 286 |
+
+===========================================================================+
|
| 287 |
+
| |
|
| 288 |
+
+---------------------------------------------------------------------------+
|
| 289 |
|
| 290 |
第三,多對一。例如英文兩句,中文為了順句而合併:
|
| 291 |
|
|
|
|
| 295 |
| |
|
| 296 |
| 點一下「儲存」後,關閉對話方塊。 |
|
| 297 |
+=======================================================================+
|
| 298 |
+
| |
|
| 299 |
+-----------------------------------------------------------------------+
|
| 300 |
|
| 301 |
第四,是不完全對應。有些說明性插句、文化補充或法規聲明,在某一語言版本中可能被省略或改寫。這種情況如果硬要逐句對齊,通常只會製造更多噪音。
|
|
|
|
| 320 |
|
| 321 |
::: {.callout-note title="文本句對齊實務操作 (Google Colab notebook)"}
|
| 322 |
|
| 323 |
+
------------------------------------------------------------------------
|
|
|
|
|
|
|
| 324 |
|
| 325 |
+
------------------------------------------------------------------------
|
| 326 |
:::
|
| 327 |
|
| 328 |
第五節 如何把自建資源接回 CAT 工作流程
|
|
|
|
| 361 |
|
| 362 |
::: {.callout-note title="TMX Editor實務操作"}
|
| 363 |
|
| 364 |
+
------------------------------------------------------------------------
|
|
|
|
|
|
|
| 365 |
|
| 366 |
+
------------------------------------------------------------------------
|
| 367 |
:::
|
| 368 |
|
| 369 |
第六節 延伸討論:AI 代理人(AI agent)與未來翻譯工作流程
|
|
|
|
| 412 |
|
| 413 |
\* Zed editor: [[https://zed.dev]{.underline}](https://zed.dev)
|
| 414 |
|
| 415 |
+
\* TMXEditor: [[https://github.com/rmraya/TMXEditor]{.underline}](https://github.com/rmraya/TMXEditor)
|
|
|
|
|
|
src/media/Colab_OpenSubtitles2024.png
ADDED
|
Git LFS Details
|
src/media/Colab_OpenSubtitles2024_runall.png
ADDED
|
Git LFS Details
|
src/media/Colab_OpenSubtitles2024_search_results.png
ADDED
|
Git LFS Details
|
src/media/Zed_regex_example.png
ADDED
|
Git LFS Details
|