• 沒有找到結果。

第五章 產生標記語料

5.3 解歧標記方法

5.3.2 列舉式標記法

在 5.3.1 節時,歧義發生時會因為優先權的關係選擇高優先權的名詞類別標記,只能保 證大部分的標記是對的,只是相對好的標記選擇,所以本研究提出另一種方法,詴圖在 標記過程中,產生所有可能的標記從中挑選最佳的標記,用來解決歧義問題。

由於本研究的輸入可以是一個句子,也可以是為一卷的內容,因此有可能是數萬字 的連續字串,若是直接將所有歧義的標記組合列舉出來,數量是非常多的,會嚴重影響 到初步標記時的效率,所以先將會被標記的區段擷取出來成為較短的子字串作為待標記 句子,之後再去對句子產生所有標記組合,透過篩選方式產生子字串對應的最佳標記,

最後再結合所有子字串的標記結果去產生整體最佳的標記結果,整體流程如圖 5.5 所 示。

圖5.5 列舉式標記法流程

24

圖5.6 擷取待標記句子範例

首先初次標記時,不管歧義的問題,紀錄文本中的字是否可以被標記,透過擷取標 記結果中兩個未被標記的字中間的部分設為待標記的區間,當作所謂的待標記句子,如 同圖 5.6 的範例所示,對此範例句尌可以抽出四個子字串作為待標記句子,到下一個步 驟再給予適當的標記,而未被標記的文字,在此處尌直接給予無標記的標籤 O。

下一步,對每一個待標記句子產生所有可能的標記組合,步驟如圖 5.7 所示,開始 的時候,會先產生一個動態陣列去存放所有可能標記組合,將初始無標記的標記序列放 入陣列中,接著去檢查詞表中的詞彙是否出現在待標記語句中,詞彙出現時,則將陣列 中的標記序列全部提出,並詴著標記詞彙,產生新的標記序列放入陣列中,若原本的標 記序列中此詞彙已被部分或完全標記,則刪除過去的標記,補上新的標記後,產生新的 標記序列放回陣列中,直到迭代完所有名詞表,便可以產生所有可能的標記狀況,如圖 5.8 的範例所示。

得到了所有可能的標記序列後,再透過圖 5.9 的方法去篩選最佳的標記序列,因為 本研究希望得到盡量多的標記資訊,所以第一步會保留句子中文字被標記數量最大的標 記序列,例如待標記句子有 10 個字,標記序列 A 標記 8 個字,標記序列 B 標記 9 個字,

如此狀況會保留標記序列 B 的狀況。第二步根據 5.2.5 節中的標記規則,只要符合當中 的架構便會給予此標記序列加分,保留其符合數目最多的標記序列。第三步會保留長詞

25

例句:劉士達奉化 初始 Output:

劉/O 士/O 達/O 奉/O 化/O 結果 Output:(檢查完所有名詞表) 劉/O 士/O 達/O 奉/O 化/O 劉/NB 士/NI 達/NE 奉/O 化/O 劉/O 士/O 達/O 奉/AB 化/AE 劉/NB 士/NI 達/NE 奉/AB 化/AE

圖5.8 產生所有標記組合範例

數量最多的,例如待標記句子中有「觀察推官」,而此詞彙可以被標記成一個職官名,「觀 察」、「推官」也可以分別被標記成職官名,如此情況會保留標記「觀察推官」這一個職 官名的標記序列。最後在沒有其他判斷依據的情況下,便會選擇前詞優先,例如待標記 句子為「長寧州」,「長寧」與「寧州」皆可為地名,無其他可幫助判斷的資訊時,便會 選擇長寧為地名的標記序列。最後產生個別待標記句子的最佳標記序列後,整合所有子 序列產生整體最佳的標記作為輸出的標記序列,圖 5.10 根據各種篩選方式分別舉例。

圖5.7 產生所有標記組合步驟

26

圖5.9 標記組合篩選方法步驟

保留 Input 中被標記字數最多的標記序列:(選擇粗體字部分) 0 字:劉/O 士/O 達/O 奉/O 化/O

3 字:劉/NB 士/NI 達/NE 奉/O 化/O 2 字:劉/O 士/O 達/O 奉/AB 化/AE 5 字:劉/NB 士/NI 達/NE 奉/AB 化/AE

保留 Input 中符合最多標記規則的標記序列:(選擇粗體字部分)

符合數 2:訓/EB 導/EE 方/NB 杲/NE 湖/AB 廣/AE 咸/AB 寧/AE 人/O 符合數 0:訓/EB 導/EE 方/NB 杲/NE 湖/AB 廣/AE 咸/O 寧/AB 人/AE 符合數 0:訓/EB 導/EE 方/NB 杲/NE 湖/AB 廣/AE 咸/NIB 寧/NIE 人/O 長詞優先:(選擇粗體字部分)

觀/OB 察/OE 推/OB 官/OE 觀/OB 察/OI 推/OI 官/OE 前詞優先:(選擇粗體字部分) 長/AB 寧/AE 州/O

長/O 寧/AB 州/AE

圖5.10 標記組合篩選範例

27