111 年 國立臺灣大學語言學研究所《語言與計算方法》
第 1. 題50 分
- (50%) Regex and Constructions
正規表示式 (regular expressions, regex) 是使用單個字串來描述、符應一系列符合某個句法規則的字串表示。比方說,我們可以用 H(alälae)ndel 這個 regex 來描述 Handel、Händel 和 Haendel 這三個字串。
1.1 (20%)
有一個能夠涵蓋以下所有姓名的正規表示寫成這樣: (\\w+),\\s(Mr|Ms|Mrs|Dr).?\\s(\\w+)
請解釋其中每個字元的意義。
Smith, Mr. John
Davis, Ms Nicole
Robinson, Mrs. Rebecca
Armstrong, Dr Sam
Downey, Mr. Robert
1.2 (30%)
寫出一個正規表示法,能用來抽取語料庫中所有的【一X-Y】的構式實例。所謂的構式在這裡的定義是,一種約定俗成的「形式-意義」結合體,其整體的意義不是由個別組成成分的語意所組合的。例如: ‘一心一意’、‘一來一往’。但注意,X 與 Y 可以是超過一個漢字,例如‘一步一腳印’。
如果要避免寫出的 regex 有過度蔓生 (overgenerate) 的問題,有什麼作法?例如,如何濾掉‘一天一餐’、‘一張一塊錢’、‘一天又一天’的偽構式?
登入後即可作答並保存紀錄。
這是一題關於正規表示式 (regex) 的應用題,主要測試考生對 regex 語法、組成原理的理解,以及如何設計 regex 來匹配特定模式並避免過度匹配 (overgeneration)。
1.1 題目核心概念:正規表示式的基本語法與元字元 (metacharacters) 的意義
給定的正規表示式為:(\\w+),\\s(Mr|Ms|Mrs|Dr).?\\s(\\w+)
這個 regex 的目的是匹配「姓, 稱謂 名」這樣的姓名格式。我們逐一解釋其中每個字元的意義:
(和): 這是一對括號,用於分組。在此,它將\\w+、(Mr|Ms|Mrs|Dr)和\\w+分別視為獨立的組,以便後續處理或計數。\\w: 這是一個預定義的字元類,代表任何字母數字字元(字母、數字)以及底線 (_)。在很多 regex 引擎中,它也包含一些 Unicode 字元。+: 這是一個量詞,表示它前面的元素(在這裡是\\w)必須出現一次或多次。所以\\w+表示匹配一個或多個字母數字字元或底線。,: 這是一個字面字元,表示匹配逗號。\\s: 這是一個預定義的字元類,代表任何空白字元,包括空格、定位符 (tab)、換行符等。|: 這是一個邏輯「或」運算子,用於選項。例如,(Mr|Ms|Mrs|Dr)表示匹配 "Mr" 或 "Ms" 或 "Mrs" 或 "Dr"。.: 這是一個萬用字元,代表匹配除了換行符以外的任何單一字元。?: 這是一個量詞,表示它前面的元素(在這裡是.)可以出現零次或一次。
綜合解釋:
(\\w+): 匹配並捕捉一個或多個字母數字字元(通常是姓氏)。,: 匹配字面上的逗號。\\s: 匹配一個空白字元。(Mr|Ms|Mrs|Dr): 匹配並捕捉 "Mr"、"Ms"、"Mrs" 或 "Dr" 中的任一個。.?: 匹配一個句號(.)零次或一次。這裡的句號是稱謂後面的標點符號,例如 "Mr."。?使得這個句號成為可選的。\\s: 匹配一個空白字元。(\\w+): 再次匹配並捕捉一個或多個字母數字字元(通常是名字)。
範例對應:
Smith, Mr. John:Smith匹配(\\w+),,匹配,,\\s匹配空格,Mr匹配(Mr|Ms|Mrs|Dr),.匹配.,\\s匹配空格,John匹配(\\w+)。Davis, Ms Nicole:Davis匹配(\\w+),,匹配,,\\s匹配空格,Ms匹配(Mr|Ms|Mrs|Dr),\\s匹配空格,Nicole匹配(\\w+)。(此處稱謂後無句號,.?匹配零次)。
【答案】
(和): 分組符號,用於將部分模式組合起來。\\w: 匹配字母數字字元和底線。+: 量詞,表示前一個字元或群組出現一次或多次。,: 匹配字面上的逗號。\\s: 匹配任何空白字元。|: 「或」運算子,用於列出多個可能的選項。.: 萬用字元,匹配除了換行符以外的任何單一字元。?: 量詞,表示前一個字元或群組出現零次或一次。
1.2 題目核心概念:設計 regex 匹配特定構式,並處理過度蔓生問題
第一部分:抽取【一X-Y】構式
我們要設計一個 regex 來匹配形如「一心一意」、「一來一往」、「一步一腳印」的構式。
這些構式的特點是:
- 開頭是「一」。
- 中間是某個詞 (X)。
- 接著是「-」。
- 結尾是某個詞 (Y)。
- X 和 Y 可以是超過一個漢字。
一個基本的 regex 可以是:一.*?-.?
這個 regex 的解釋:
一: 匹配字面上的「一」。.*?: 匹配任意字元 (.) 零次或多次 (*),並且是「非貪婪」模式 (?)。非貪婪模式會盡可能少地匹配字元,直到遇到下一個模式。這很重要,因為我們不希望它匹配到句子的結尾,而是盡快找到下一個-。-: 匹配字面上的連字號。.*?: 再次匹配任意字元零次或多次,非貪婪模式。
然而,題目要求 X 和 Y 可以是「超過一個漢字」。在中文語境下,通常我們將詞語視為連續的漢字。因此,更精確的 regex 應該是:
一[\u4e00-\u9fff]+-[\u4e00-\u9fff]+
解釋:
一: 匹配字面上的「一」。[\u4e00-\u9fff]+: 這是 Unicode 範圍表示法,匹配一個或多個(+)中文字符(從 Unicode 的U+4E00到U+9FFF)。這部分用來匹配 X。-: 匹配字面上的連字號。[\u4e00-\u9fff]+: 再次匹配一個或多個中文字符,用來匹配 Y。
進一步考量(避免過度蔓生)
題目要求避免「過度蔓生」,並舉例「一天一餐」、「一張一塊錢」、「一天又一天」是偽構式。
這些偽構式與我們想要匹配的「一心一意」、「一來一往」的區別在於:
- 「一心一意」、「一來一往」:結構是「一 + 詞 + - + 詞」。這裡的「詞」通常是單音節或雙音節的,且有相對固定的搭配語義。
- 「一天一餐」、「一張一塊錢」:結構是「一 + 時間單位 + 一 + 單位」。或者「一 + 單位 + 一 + 單位」。它們的語義結構是「每隔一段時間/空間就發生一次」的感覺,不是「同樣的狀態/行為反覆」的感覺。
- 「一天又一天」:結構是「一 + 時間單位 + 又 + 一 + 時間單位」。這表示時間的持續推進,也不同於「一心一意」的重複。
如何避免過度蔓生?
-
更嚴格的詞語定義/詞性限制:
- 如果我們有詞典或詞性標記,可以限制 X 和 Y 必須是特定類型的詞(例如名詞、動詞),或者必須是已知的固定搭配中的詞。
- 例如,
一(心|來|步)-((心|意)|(來|往)|(腳|印))這樣的 regex 只能匹配特定幾個詞。但這就失去了靈活性。
-
利用上下文信息:
- 最有效的方法是結合外部知識,例如詞典、語法規則,或者通過機器學習模型來判斷。
- 對於 regex 本身,可以嘗試加入一些「負向預測」(negative lookarounds),但對於中文構式的區分,這會非常複雜。
第 2. 題50 分
- (50%) 機器的注意力
小明最近在研究機器學習,他發現有一個系統有五個小模組(甲乙丙丁戊)。只要輸入句子(標點符號不予考慮),系統的五個模組就會分別給出字詞之間的連結訊息。表一則是他從語料庫中找出的8個句子,分別輸入系統得到的有字詞索引的輸出句,以及表格二的連結訊息。但是要注意:(1).每個模組輸出的連結訊息可以只有一個,兩個,或沒有。(2).表格二其中有一格的連結訊息是錯誤的。
舉例來說,輸入「我想讀語言學。」,會得到「我1想2讀3 語言學4。」,以及
3>1, 3>4, none, 3>2, none
你的任務是
- 把句子 1-8 和 A-H 對應起來。
- 填入表格二中空白的連結訊息(a-i),並指出哪個訊息是錯的。
表一
| 句子編號 | 輸入句與輸出句 |
|---|---|
| 1 | 老師1會在3放假4前5送6幾位7用功8的9好10學生11一些12禮物13。 |
| 2 | 晚餐1他2已經3吃4完了5,現在6只7想8再9點10飲料11而已14。 |
| 3 | 林莉1的2同事們3都4非常5友善6,她們7總是8願意9給10她11很多12建議13。 |
| 4 | 我1上週2拜訪3王董4的5時候6,看到7了8他9的10作品11。 |
| 5 | 下1個2週末3是4父親節5,你6和7你8的9家人們10打算11怎麼12過13? |
| 6 | 這1件2事3我4以前5沒6考慮7過8,但9之後10會11再12仔細13地14思考15。 |
| 7 | 他1每2晚3十一點4前5都6會7把8自己9的10每件11衣物12洗好13。 |
| 8 | 王晴1很2用心3地4照顧5她6的7父母8,他們9應該10恢復11得12很好14。 |
表二
| 甲 | 乙 | 丙 | 丁 | 戊 | |
|---|---|---|---|---|---|
| sentence A | 1>6 | 6>11 | none | 6>2 | (a) |
| sentence B | 6>3; 10>7 | 10>11 | 3>1 | 10>9 | 7>3; 11>1 |
| sentence C | 4>2; 11>2 | (b) | none | 11>9 | none |
| sentence D | 13>6; 13>10 | 13>5 | 10>8 | 13>11 | none |
| sentence E | (c) | 13>12 | 12>9 | (d) | 9>1 |
| sentence F | 7>4; 15>4 | (e) | none | 15>11 | none |
| sentence G | 3>1; 7>1 | 3>4;7>12 | (f) | none | 10>4 |
| sentence H | (g) | 5>8 | 8>6 | (h) | (i) |
登入後即可作答並保存紀錄。
核心觀念
本題資料不足,無法唯一求出句子與 A–H 的對應,也無法確定空格 – 或錯誤訊息。
題目只說甲、乙、丙、丁、戊是五個「小模組」,但沒有定義各模組所代表的語言關係。例如:
- 甲是否表示主詞關係?
- 乙是否表示受詞關係?
- 的方向代表「 支配 」或「 支配 」?
- 模組是否依照詞性、句法依存、語意角色或詞序產生連結?
上述規則均未提供。
題目所給的例子:
只說明某句輸入會產生五個模組的輸出,卻沒有說明五個模組各自的判斷標準。因此,例子不能用來建立唯一的推理規則。
解題方法
若將五個模組視為未定義的黑箱,則對任意一個句子排列,都可以設計出相應的模組規則,使表二的非空連結成立;同樣地,空白欄位也可以填入任意合法索引連結。
例如,句子 2 與句子 4 都包含表 A、C 中出現的大部分索引,因此僅憑索引形式無法判斷:
或