第六章 包含關係關聯句挑選
6.1 擷取句型樣式
為了學習關聯句的句型樣式,我們對於同時包含兩個查詢詞彙的句子,會經 過第四章 4.3.1 所提到的詞性標記方法處理後取出句子中一般化的句型樣式。其 中包含兩個步驟:第一,依照所訂定的規則取代特殊字詞;第二,取出子序列。
<1>取代特殊字詞
為了避免過多不同的詞性符號導致不容易找出關聯句的句型,我們會進行特 殊字詞取代。我們參考 Cui et al. [18]所提出的取代原則,並加以修改,所採用之 原則如表 6.1 所示。
我們將輸入的兩個查詢詞彙取代為<target>;不同型態的 be 動詞被取代為
BE$;複數型態的名詞(NNS)替換成 NN;對於形容詞、副詞以及標點符號不列 入考慮;其他字詞則以本身的詞性標記符號取代。
以―quicksort‖和―sort algorithm‖為例,圖 6.1 表示句子經過詞性標記的結果;
圖 6.2 表示經過我們所採用的取代規則之後的結果,所擷取出的句型樣式 P 為兩 個<target>之間的詞性標記符號,如,<BE$, vbn, in, dt, nn, cc, vb, nn, dt>。
31
表 6. 1 本研究採用的取代原則
Token Replacement Example
Query term <target> data structure <target>
is, am, are, was, were BE$ is BE$
All nouns and noun phrases
Corresponding part-of-speech tags
classifiers NN
Adjective and adverbial modifiers(JJ/RB)
Ignore
Punctuations Ignore All other words Replaced by
part-of-speech tag
running vbg, time nn
quicksort/nnp ,/, is/vbz based/vbn on/in the/dt divide/nn and/cc conquer/vb paradigm/nn ,/, a/dt sort/nn algorithm/nn with/in worst/jjs case/nn running/vbg time/nn o/nnp -lrb-/-lrb- n/fw ^/fw 2/cd -rrb-/-rrb- on/in an/dt input/nn array/nn of/in n/jj numbers/nns ./.
<target> is/BE$ based/vbn on/in the/dt divide/nn and/cc conquer/vb paradigm/nn a/dt <target> with/in case/nn running/vbg time/nn o/nnp 2/cd on/in an/dt input/nn array/nn of/in numbers/nn
圖 6. 1 句子詞性標記結果
圖 6. 2 取代之後結果
32
<2>取出子序列
本系統對於取出的句型樣式列出兩個詞性標記符號形成的子序列,目的是為 了避免<target>間字數不相同時,句型樣式被判定為不同。我們考慮詞性標記符 號的前後順序,並且訂一個最大差距(gap),不一定要是連續出現,限制取出子 序列時兩個詞相隔不能超過 n 個字詞,我們將其設為 3。以句型樣式 P 為例,取 出子序列的範例如表 6.2 所示。
表 6. 2 取出子序列之結果
BE$ vbn in dt nn cc vb nn dt BE$_* BE$_vbn BE$_in
vbn_* vbn_in vbn_dt
in _* in_dt in_nn
dt_* dt_nn dt_cc
nn_* nn_cc nn_vb
cc_* cc_vb cc_nn
vb_* vb_nn vb_dt
nn_* nn_dt
dt_*
表 6.2 顯示句型樣式 P 所有取出之子序列。表中每一行詞性標記符號,每一 列表示以詞性標記符號為開頭之子序列,如第一列所示,是以 BE$為開頭的子序 列,和 BE$相距不超過 3 個字詞的詞性標記符號是 vbn 和 in,形成之子序列為 BE$_vbn 和 BE$_in。一個句子𝑠利用上述方法取出的所有子序列,稱為𝑠的子序 列集,以𝑠𝑒𝑛_𝑆𝑢𝑏𝑠𝑒𝑞(𝑠)表示。
33