3-1 系統架構
在本論文中我們將提出以非名詞關鍵詞與查詢詞轉換擴充的線上中文問答系統,此 系統共分為兩個部份,第一個部份是線上中文問答系統,架構圖如圖 2,第二部分是學 習非名詞關鍵詞與查詢詞轉換擴充的訓練系統,架構圖如圖 3。
系統以網路為基礎,使用語言學與統計學的理論去分析處裡問句,並且根據問句和 答案與問句類別處裡後自動擷取出問句樣式再擷取出含有答案與關鍵詞的答案段落,利 用這些答案段落使系統能夠自動去學習,分析這些答案段落與關鍵詞、查詢詞之間的關 係,有效的將非名詞關鍵詞與查詢詞做擴充,增加系統至搜尋引擎搜尋答案的精確度。
圖 2:線上中文問答系統架構圖
當線上中文系統取得問句的搜尋結果後可以把問句轉換到學習資料中,訓練系統會 把這一個新的問句進行處理。
圖 3:資料訓練系統流程圖
系統主要處裡的問句類型分為五類:人、時間、地點、數量、事與物。針對答案單 一與絕對的問題做處理。
我們將系統分為四個階段,在 3-2 中我們將描述如何將問句做斷詞並將關鍵詞送至 搜尋引擎擷取出答案段落。3-3 中我們將描述如何分析問句依據我們所制定的規則萃取 出問句樣式。3-4 中我們將分析問句的答案段落,並且有效的擷取出查詢詞與關鍵詞的 擴充詞。最後在 3-5 中我們將擷取的結果處裡後組合成搜尋引擎所能處裡的方程式。
3-2 問句斷詞與擷取答案段落
搜集大量的問句與答案作為系統的學習資料。利用中文斷詞系統做標記,所給的詞 類標記是根據中研院平衡語料庫詞類標記集之簡化詞類與線上斷詞服務採用之精簡詞 類。當有時中文斷詞系統所斷的詞會有錯誤,所以在這一個階段中,系統會出現一個建 立新詞的服務,可以修正錯誤的斷詞,只要做過一次修正後下次遇到相同的詞句就會自 動做修正。當系統回收的資料量越多時同時系統在問句斷詞的精確度也會升高。當問句 中含有特殊的名詞時使用者可以使用”[“符號,將特殊名詞前後括起,系統就不會將這一 個特殊的名詞做斷詞。
接下來系統會先找出問句的關鍵詞,至 Google 搜尋取得答案段落,步驟如下:
1. 從問句與答案對中找出關鍵詞(k1,k2,….kn, A),並且將停詞移除。
2. 將(k1,k2,….kn, A)組合至搜尋引擎中處理。
3. 擷取搜尋引擎前面 30 個結果,保留文字部分,把標點符號與英文字母移除。
4. 將處理過後的結果取出一段含有答案與任一關鍵詞的答案段落。
範例如表 1:
表 1:問句與答案,輸入與輸出範例
(Q, A) AP
這就是TOYOTA創始人豐田喜一郎在全力以赴開發日 本第一輛國產汽車時的思想 …
豐田汽車的創始人是誰?
Answer:(喜一郎)
(k
1, k
2, …, k
n, A)
利三郎同意豐田喜一郎於 1937 年 8 月 27 日另立門戶成 立“豐田 汽車工業株式會社” …
豐田汽車, 創始人, 喜一郎 …豐田創始人:豐田喜一郎豐田汽車公司是世界 …
3-3 問句分析
在這一個章節中,我們主要是針對問句的問句類型與問句樣式做分析。
3-3-1 疑問詞分類
當建立一個新的問句時系統會分析問句,自動找出最合適的疑問詞並且依據這一個 疑問詞的類別來決定問句真正的問句類型,疑問詞分類如表 2。
表 2:疑問詞分類
查詢詞定義:
動詞 + 名詞 下面的步驟過濾成有用的資料,並且使用 Competitive Linking Algorithm (Melamed, 1997) 做(問句, 答案段落)選對。
a
1,a
2,a
3,…,a
m來表示。4. 使用 Competitive Linking Algorithm(CLA)處理所得到的關鍵詞與組合詞。
1.將所有(問句, 答案)的組合中,所有的非名詞關鍵詞、查詢詞與組合詞,計算出LLR(
k
i,a
j ),使用統計學中Logarithmic Likelihood Ratio(LLR)計算出k
i 與a
j反應出來的相互關 係。Log-likelihood ratio:LLR(x,y)
k1 = number of pairs that contain x and y simultaneously。
k2 = number of pairs that contain x but do not contain y。
n1 = number of pairs that contain y
n2 = number of pairs that does not contain y p1 = k1/n1 p2 = k2/n2 p = (k1+k2)/(n1+n2) LLR(x;y) = -2log2
2.當(k, a)的 LLR 值小於 7.88 時系統就會丟棄 3.其餘的(k, a)繼續做下面的流程 4 至流程 7。
4.完成LLR的計算後將(問句;答案)的(
k
i,a
j)對做排序列表。5.如果與先前選擇不衝突時可以選擇未計算的(k, a)及將計算好的(k, a)列表是由上到下 遞減的。
6.停止執行當(k, a)對計算完畢。
7.產出所有的問句與答案段落的 aligned pairs 列表。
8.紀錄每一個 aligning 組合(k, a)的總數。
9.選取每一個k擇前n名的組合詞,
t
1,t
2,t
3 … ,t
n,k為問句樣式或非名詞關鍵詞。LLR 統計方式是一個廣泛有效被利用來確認兩個詞的相關性,如果兩個詞在統一個 問句發生的頻率高,它們的 Alignment counterparts 的頻率也會高。範例結果如表 4。
表 4:候選擴充詞與關鍵詞的配對等級範例
疑問詞與關鍵詞 擴充 統計
K 生長 生長 27
K 生長 長在 13
K 生長 生長在 12
K 生長 的生 8
K 生長 生長於 8
… … …
Q 發明 發明 103
Q 發明 明的 23
Q 發明 電話 20
Q 發明 的發 20
… … …
Q 出生 斯坦 22
Q 出生 出生於 10
Q 出生 生在 10
Q 出生 出生在 10
Q 出生 生於 10
K=關鍵詞, Q=問句樣式
3-4-2 鄰近等級
鄰近等級是計算每一對(問句, 答案段落),答案段落中在答案附近出現的組合詞數 目(Proximity Count),並且把這些做排序如表 5,由這一個方式可以得知那些詞在答案的 附近是最容易出現的,通常這些詞的出現頻率跟答案的相關性也成正比。
表 5:問句答案類型是”什麼地方 生長”的鄰近詞加總
組合詞 出現次數 鄰近等級
生長 16 1
長在 10 2
生長在 9 3
長於 7 4
生長於 7 4
間帶 5 5
海岸 5 5
沼澤 5 5
潮間 5 5
潮間帶 5 5
3-4-3 結合鄰近等級與配對等級
把所求出的結果鄰近等級與配對等級結合並求出最後等級,並把結果依大小排列如表 6。
擴充詞等級 = ( X * 配對等級+ Y * 鄰近等級 ) / Z 系統中 X 與 Y 我們是設定 X = 4 Y = 6 Z = X + Y
表 6:將表 4 與 5 結合取得加權平均值的最後等級
組合詞 配對等級 鄰近等級 平均 最後等級
生長 1 1 1 1
長在 2 2 2 2
生長在 3 3 3 3
長於 4 6 4.8 5
生長於 4 4 4 4
間帶 5 7 5.8 7
海岸 5 7 5.8 7
沼澤 5 7 5.8 7
系統會自動將所擷取的詞做整合,整合的方式有下列幾項:
1. 把最後等級中含有關鍵詞與問句樣式的組合詞移除。
2. 相同最後等級的擴充詞如果有相似保留主要的詞,其餘移除。
相同最後等級的擴充詞(間帶、潮間、潮間帶)只會取[潮間帶]
3. 如果配對等級是空值,當鄰近等級是前兩名一樣並入計算,計算方式如下:
Topn = 名次 -> Top1 = 1
擴充詞等級=( Y * 鄰近等級+ 30 + ( Topn * 10 ) ) / Z
如此當配對等級是空值時,系統會自動加上 30 + (Topn * 10)去作加權平均
4. 兩個停詞的組合可能會轉變成有效詞,所以系統在停詞或組合詞是使用加權平均的 方式來計算,只會使等級下降,增加積分是由系統管理者根據實驗結果判斷並給積 分。
例如:”的”是一個停詞,他出現在兩個字的組合詞與三個字的組合詞可以有不一樣 的設定。
如:你的、我的…等”的”出現在兩個字組合詞的後面,百分之九十是無效詞,我們 就可以設定積分等於 45 分。但是如果出現在三個字組合詞時又有不一樣結果,只有 當”的”出現在三個字組合詞的中間時百分之三十是無效詞,所以就可以設定積分為 15 分。計算方式如下:
無效詞積分
(無效百分比 / 10) * 5 = SW
當出現無效詞時產生積分後的平均等級計算方式:
擴充詞等級=( X * 配對等級 + Y * 鄰近等級) + (SW ) / Z 無效詞積分是可以累加的SWall = SW1 + SW2 +….+ SWn
擴充詞等級=( X *配對等級 + Y * 鄰近等級) + (SWall ) / Z
我們使用這一個方法可以把一些無效或無用詞的 Rankavg積分增加使最後等級下降,
讓系統能夠真正擷取到有用的詞,增加系統的精確度。
3-5 產生查詢句
我們先將問句分析擷取出問句樣式與關鍵詞,並且將問句樣式與非名詞的關鍵詞做 擴充,擴充出 2 個擴充詞,使用布林邏輯與 Google 的可以判讀的格式轉換成查詢句。
範例如表 7:
表 7:非名詞關鍵詞與查詢詞轉換擴充
問句 人類在什麼出現後進入歷史時代?
類型 詞 擴充詞(一) 擴充詞(二)
問句樣式 什麼 出現 發明 紀錄
名詞關鍵詞 人類 名詞關鍵詞 歷史時代
非名詞關鍵詞 進入 記載 紀錄
布林邏輯 (出現 OR 發明 OR 紀錄)AND”人類”AND”歷史時代”AND(進入 OR 發明 OR 紀錄)
Google (出現||發明||紀錄) ”人類” ”歷史時代” (進入||發明||紀錄)
有些問句並沒有適當可擴充的關鍵詞,所以在非名詞關鍵詞與查詢詞全擴充的查詢句 中,只有查詢詞的擴充。在做完上面的步驟後最後系統就會將這些結果送至搜尋引擎。
為了使搜尋結果減少誤差,系統還有一個相關答案的功能,因為有些答案是翻譯 字,而因為翻譯的不同會有不同的答案,如:
“凱薩大帝” 與 “凱撒大帝” , “阿爾卑斯山”與 “ㄚ爾卑斯山”
但是這些答案也並非是錯誤或不正確,為了使系統不會遺漏掉這些答案,系統管理者可 以將相關的答案新增至資料庫中,搜尋答案時系統就會自動進行比對。