Ruben Tsui commited on
Commit
fb81524
·
1 Parent(s): 70d6b97

Update book content

Browse files
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
- 對照查詢的實務場景也很常見。假設在翻譯軟體說明文件,遇到 onboarding、workspace、restore、linked account 這類詞。如果單獨查字典,得到的候選譯法很多,但若將查詢範圍縮到技術文件與產品支援語料,通常很快就能看出哪些譯法在特定領域最穩定。又例如在公共政策或外交文件中,promote、advance、enhance、strengthen 這幾個動詞雖然都可譯作「推動」、「提升」、「強化」,但各自常搭配的受詞與語氣仍有差異。公開雙語語料能幫助譯者在這種細微處做出較不武斷的判斷。
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
  ![](media/AliceWonderland_cover.png)
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: ``(\p{Han})\1(\p{Han})\2`` 可找到9筆AABB式疊詞:
92
 
93
  ![](media/Li_Qingzho.png)
94
 
@@ -98,102 +98,115 @@ Regex 工具 (2):Zed (開源文字編輯軟體;下載網址:[[https://zed.
98
 
99
  ## 正規表示式摘要
100
 
101
- | 字元 | 意義 / 用法 | 備註 |
102
- | :--- | :--- | :--- |
103
- | **字面意義的字元**<br>(literal characters) | 例如:`a` `b` `1` `2` `_` `"` `<` `>` | |
104
- | **特殊字元**<br>**metacharacters** | | |
105
- | `\t` | **t**ab(定位字元) | |
106
- | `\n` | **n**ewline(換行字元);<br>Windows:`\r\n`(CR LF)<br>UNIX/Linux/macOS:`\n`(LF) | |
107
- | `\s` | white **s**pace(空白字元) | 包含空格(space)及 tab 等 |
108
- | `.`(*句點*) | 比對任意字元(`\n` 除外 | |
109
- | **元字元**<br>(必須以 `\` 跳脫才能進行文字比對) | | |
110
- | `\` | 跳脫 (escape) 字元 | |
111
- | `|` | 替代(或) | |
112
- | `()` | 群組;`(?:)` 為非擷取群組 | |
113
- | `[]` | 字元類別;恰好比對一個字元 | 範例:比對任一英文母音字母 `[aeiou]` |
114
- | `{}` `*` `?` `+` | 量詞 | |
115
- | `^` `$` | 錨點(零寬度) | |
116
- | `?` | (1) 作為量詞時,作用於緊鄰其左方的一個字字元類別或群組;<br>(2) 作為非貪婪 non-greedy 或懶惰 lazy 指定符 | |
117
- | **錨點 anchor**<br>(零寬度:僅比對位置,不比對字元) | | |
118
- | `\b` | 詞邊界 | 範例:空白字元(或標點符號)與文字字元之間的位置 |
119
- | `^` | 脫字符號:字串開頭 | |
120
- | `$` | 錢字符號:字串結尾 | |
121
- | **量詞 quantifier**<br>(作用於緊鄰其左方的一個字元、字元類別或群組) | | |
122
- | `*` | 零次或多次 | |
123
- | `+` | 一次或多次 | 亦即「至少出現一次」 |
124
- | `?` | 零次或| 亦即「可有可無」 |
125
- | `{n}` | 恰好 *n* 次 | |
126
- | `{n,m}` | 至少 *n* 次,至多 *m* 次 | |
127
- | `{n,}` | 至少 *n* 次,無上限 | |
128
- | **字元類別** | 以 `[]` 括起的字元 ── 恰好比對一個字元 | |
129
- | **範圍** | `[a-z]` 比對任一英文小寫字母;<br>`\p{Han}`(最完整的寫法)或 `[一-龥]` 或 `[\u4E00-\u9FFF]` 或 `[\x{4E00}-\x{9FFF}]`,共 20,992 個基本中文字元 | 起始字元的 Unicode 碼位必須較小;中日韓統一表意文字(CJK Unified Ideographs)涵蓋最常見的 CJK 字元;Zed 及 Calibre ebook-viewer 皆可接受;CudaText 使用最後一種格式處理一般 Unicode 範圍 |
130
- | **快捷寫法** | `^` `[]` 中表示該類別「相反」(也就是所有此類別以外的字元) | 範例:比對*任何*非英文母音的字元 `[^aeiou]` |
131
- | `\d` | 數字,等同於 `[0-9]` | |
132
- | `\w` | 「文字」字元;`\d` 加上 `[a-zA-Z]` 加上 `_`底線字元;underscore),對於非英文母書寫的語言可能還包含更多字 | `\w` 的定義取決於特定的正規表示式引擎;部分引擎會納入中日韓字元及含附加符號的字元(如 é、ç、ü;其他引擎則不會。 |
133
- | `\D` `\S` `\W`<br>`\P{Han}`<br>(相反集合) | 代表對應小寫字元類別之**否定**的字元類別 | `\D`、`\S`、`\W`、`\P{Han}` 分別為非數字、非空白、非文字及非中日韓字元 |
134
-
135
- 例如,若欲找出文件中所有可能的變數或 placeholder,可以用\\{\[\^}\]+\\} 或 \\{\\{\[\^}\]+\\}\\}之類的模式。若欲找出所有數值加單位的表達,例如 5 km、3.5 GB、20%,可以寫成`\d+`(\\.`\d+`)?\\s?(km\|GB\|%)。若欲擷取英文術語後面緊接中文括號說明的寫法,例如Application Programming Interface(API) 或workspace(工作區),可以針對英文字串與全形括號組合設計模式。這些檢索方式之所以有用,是因為這些模式不是把文字當作一串字,而是把文字當成一種可辨識的形式。
136
-
137
- +-----------------------------------------------------------------------+
138
- | 在搜尋方塊輸入:`\d+(\.\d+)?\\s?(km|GB|%)` |
139
- | |
140
- | ![](media/image3.png) |
141
- | |
142
- +=======================================================================+
143
- +-----------------------------------------------------------------------+
144
-
145
- 以上可看到符合 regex 的文字在編輯器中標示出來。此 regex 分析如下:
146
-
147
- +--------------+-------------------------------------------------------+
148
- | `\d` | 數字(1或多個;代表整 |
149
- | +(\\.`\d+`)?\ | 數部分),後面有「可有可無」的小數點及1或多個數字」\ |
150
- | \\s?\ | 空格「可有可無」\ |
151
- | (km\|GB\|%) | 3選1: km 或 GB 或 % |
152
- | | |
153
- | 解釋以上要出 | |
154
- | 現在同行: | |
155
- | 分 3 rows | |
156
- +==============+=======================================================+
157
- +--------------+-------------------------------------------------------+
158
-
159
- ⇒ \[Ruben\] Provide examples
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
160
 
161
  ::: {.callout-note title="實務操作 (1) OpenSubtitles 2024"}
162
-
163
- +-----------------------------------------------------------------------+
164
- | [[https://colab.research.g |
165
- | oogle.com/drive/1hz8Yt1vev6xmfRnemPzDcyjXkBZ-m7qF]{.underline}](https |
166
- | ://colab.research.google.com/drive/1hz8Yt1vev6xmfRnemPzDcyjXkBZ-m7qF) |
167
- | |
168
- | 選單:先點選 Runtime ⇒ Run all 讓系統下載程式套件及語料庫 |
169
- | (OpenSubtitles 2024) |
170
- | |
171
- | ![](media/image7.png){width="5.854166666666667in" |
172
- | height="3.0in"} |
173
- | |
174
- | 因系統 |
175
- | 須下載語料庫,故請耐心等候數分鐘。系統完成搜尋後會將結果顯示於下方: |
176
- | |
177
- | ![](media/image11.png){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.\ ... **throw** *me* under the bus!\ I **threw** *four people* under the bus for \$35,000, ... 等等
193
 
194
  ![](media/image4.png){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
- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- [[https://colab.research.google.com/drive/1hz8Yt1vev6xmfRnemPzDcyjXkBZ-m7qF]{.underline}](https://colab.research.google.com/drive/1hz8Yt1vev6xmfRnemPzDcyjXkBZ-m7qF) ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
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
- | thirteen. |
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
  ![](media/AliceWonderland_cover.png)
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
  ![](media/Li_Qingzho.png)
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|%)` ![](media/Zed_regex_example.png)
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
+ | ![](media/Colab_OpenSubtitles2024_runall.png){width="5.854166666666667in" \| height="3.0in"} |
190
+ | |
191
+ | 因系統 須下載語料庫,故請耐心等候數分鐘。系統完成搜尋後會將結果顯示於下方: |
192
+ | |
193
+ | ![](media/Colab_OpenSubtitles2024_search_results.png){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
  ![](media/image4.png){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

  • SHA256: 391dd6abe09262144d50e720bab9fc41e9d23683094faf024c312a56ddea026d
  • Pointer size: 131 Bytes
  • Size of remote file: 252 kB
src/media/Colab_OpenSubtitles2024_runall.png ADDED

Git LFS Details

  • SHA256: 06e7e36cc501e7b9567468467b486f2f3b7083a2a802bef1811ccd0f04c137bc
  • Pointer size: 131 Bytes
  • Size of remote file: 263 kB
src/media/Colab_OpenSubtitles2024_search_results.png ADDED

Git LFS Details

  • SHA256: 18eaf01fa7aa833a68b3d4c6b03fc7723ca1fda1d6d6f1bc8b397f23a09f614b
  • Pointer size: 131 Bytes
  • Size of remote file: 385 kB
src/media/Zed_regex_example.png ADDED

Git LFS Details

  • SHA256: 0fb798f9e1bb62209b521ef29299fcc76497298705c356feec6fa0a020acf141
  • Pointer size: 131 Bytes
  • Size of remote file: 319 kB