線巖團,張志菊,王紅斌 ,文永華
(1.昆明理工大學信息工程與自動化學院,云南 昆明 650500;2.昆明理工大學云南省人工智能重點實驗室,云南 昆明 650500)
泰文很少使用標點符號,句子間沒有明顯的分隔符,為泰文詞法分析、句法分析和機器翻譯等自然語言處理任務帶來了額外的困難。
泰文也有標點符號,Unicode甚至提供了特殊的零寬度空格符ZWSP(Zero-Width SPace)用于分隔泰語詞。然而,與英語不同的是,在實際應用中泰文很少使用標點符號,詞語間通常也不用分隔符,而是用空格符分隔句子、短語和特殊詞語,如稱謂和姓名之間、標號和內容之間、括號和內容之間等[1]。所以,泰文句子切分不能依靠標點符號,而必須充分考慮段落的上下文信息。
目前,針對泰文句子切分的研究工作比較少,相關工作主要有基于規則的方法和基于統計機器學習的方法。早期基于規則的方法,利用上下文中出現的動詞和連接詞定義切分規則完成句子切分,但效果并不理想[2]?;诮y計機器學習的方法,通過從句子中抽取的特征構建分類器實現句子切分。Mittrapiyanuruk等人[3]以詞性的三元組作為特征,利用viterbi算法實現泰語句子切分。詞性三元組方法的主要缺點是只考慮了上下文中的詞性特征,沒考慮詞組搭配特征?;赪innow算法的方法,利用上下文窗口中左右2個詞及其詞性作為句子切分特征,獲得了更好的切分效果[4]。Slayden等人[5]以上下文中的詞和詞性作為特征,構建最大熵分類器,通過擴展訓練語料取得了更高的空格符精確率space-correct。Tangsirirat等人[6]結合泰語語法規則進行了泰語句子邊界識別研究,但僅使用了簡單的范疇文法特征。
以上這些方法大多以空格前后的詞語、詞性和句法等作為特征,構建二分類器實現句子切分。這類方法存在明顯不足。首先,分類特征設計需要依賴于語言專家,而且面臨特征選擇與組合的問題。其次,詞性標注和句法分析等預處理的錯誤可能影響句子切分的效果。最后,人工設計的特征難以表征空格前后的上下文語義信息。
近年來,神經網絡方法在圖像處理和自然語言處理方面都取得了很好的效果。在自然語言處理方面,神經網絡方法在自動分詞[7]、詞性標注[8]、情感分析[9]和機器翻譯[10]等多種自然語言處理任務中取得了很好的效果。神經網絡方法將詞語表示為低維稠密的向量,能有效表示詞語和句子的隱含語義特征。
泰文句子切分依賴于上下文語義,本文通過神經網絡學習泰語詞語和句子的隱含語義用于泰文句子切分。泰文句子切分需要考慮段落中空格符前后詞序列的特征和語義。為了使神經網絡模型學習到的前后詞序列具有可比較性,并減少模型參數的數量,本文提出了以Siamese神經網絡結構為基礎的泰文句子切分方法。該方法利用共享權重的循環神經網絡分別學習空格前后詞序列的向量表示,然后通過綜合前后詞序列的向量表示構建分類器來實現泰文斷句。
Siamese網絡最初是一種相似性度量方法,通過相同的2個子分支網絡學習圖像或文本的特征表示,接著利用學習到的特征向量距離度量計算輸入樣本的相似度。Siamese網絡在簽字認證識別[11]、人臉識別[12]、圖像特征降維[13]和句對建模[14]中獲得了很好的應用。
與以往的泰文句子切分方法相比,本文提出的泰文句子切分方法以詞序列作為輸入,無需依賴詞性標注、句法分析等復雜自然語言處理工具。此外,通過詞嵌入和循環神經網絡學習詞序的特征表示,避免了人工設計特征的問題,也有助于捕獲句子中的隱含語義,從而提升句子切分性能。
本文提出的基于Siamese神經網絡的泰文句子切分模型可以看作是一種Siamese神經網絡的變種。該模型通過共享的神經網絡分支模型,分別學習候選句子切分空格前后的詞語序列編碼向量表示,然后通過綜合該空格前后的詞語序列的編碼向量構建分類器來實現句子切分。
本文提出的句子切分模型包含5層,分別為:輸入層、詞嵌入層、循環網絡層、隱含層和輸出層,網絡結構如圖1所示。

Figure 1 Architecture of Siamese model for Thai sentence segmentation圖1 Siamese 循環神經網絡泰文句子切分模型
輸入層以空格前后的詞序列作為輸入,其中的每個詞xi由一個Nw維的one-hot向量表示,Nw為詞匯表的大小。
詞嵌入層將one-hot向量表示的每個詞表示為一個d維向量wi∈Rd,相應的詞嵌入矩陣為Ew∈Rd×Nw。
wi=Ewxi
(1)
本文采用循環網絡層對候選斷句空格前后的詞向量進行編碼,學習句子切分特征。為了充分學習序列的語義特征,本文采用門控循環單元GRU(Gated Recurrent Unit)來實現循環網絡層。同時,為了減少模型參數,并使前后詞語序列的編碼向量具有一致性,前后詞序列共享相同的循環神經網絡。
GRU采用門控機制跟蹤序列的狀態,而不使用單獨的存儲單元。在GRU中有重置門和更新門,這2個門共同控制信息如何更新序列的狀態。GRU通過式(2)生成新的狀態:
(2)


zt=σ(Wzxt+Uzht-1+bz)
(3)

(4)
其中,Wh和Uh是權重矩陣,bh是偏置向量,rt是重置門向量,它控制過去狀態對候選狀態的貢獻。如果rt為零,則它將忘記過去的狀態。重置門通過式(5)更新:
rt=σ(Wrxt+Urht-1+br)
(5)
其中,Wr和Ur是重置門的權重矩陣,br是偏置向量。
在獲得空格前后的詞序列的編碼向量后,模型通過隱含層綜合學習到的編碼向量作為句子切分的特征。
h=relu(W11x1+W12x2+b1)
(6)
其中,W11和W12分別為編碼向量x1和x2的權重矩陣,b1是相應的偏置。relu是修正線性單元ReLU(Rectified Linear Unit)激活函數。
本文采用Logistic輸出層實現二分類,y是模型的輸出結果:
y=sigmoid(W2h+b2)
(7)
其中,W2是該層的權重,b2是偏置。
由于句子切分是一個二分類問題,本文采用對數損失函數作為模型的損失函數。
L(θ)=∑-log(P(y|Xl,Xr))/M
(8)
其中,θ是模型的參數,包括詞嵌入權重矩陣Ew,GRU循環網絡層權重{Wz,Uzbz,Wh,Uh,bh,Wr,Ur,br},隱含層權重 {W11,W12,b1},以及輸出層權重{W2,b2}。Xl和Xr是模型的輸入,分別表示空格前后的詞序列,M是訓練樣本的數量。
本文采用Adam(Adaptive moment estimation)算法[15]訓練句子切分模型。Adam算法是一種自適應學習速率梯度下降優化算法,它根據損失函數對每個模型參數梯度的一階矩估計和二階矩估計來動態調整算法學習速率,與其他自適應學習率梯度下降算法相比,其收斂速度更快。
為了和已有的方法進行比較,本文采用Charoenporn 構建的ORCHID泰語語料庫作為訓練和測試數據[16],并采用十折交叉驗證的平均值作為最終結果。
評價指標與對比方法一致,采用文獻[17]提出的斷句符召回率(sb-recall)、空格符精確率(space-correct)和斷句符錯分率(false-break)作為評價模型斷句效果的指標,其計算方法如式(9)~式(11)所示:
sb-recall=CB/RB
(9)
space-correct=CS/RS
(10)
false-break=FB/RS
(11)
其中,CB是測試集中斷句符正確預測的數量,FB是測試集中斷句符錯誤預測的數量,CS是測試集中斷句符和非斷句符正確預測的數量,RB是測試集中斷句符的總數量,RS是測試集中斷句符和非斷句符的總數量。
本文提出的泰語句子切分模型,稱為SiameseGRU模型,包含了序列長度、詞向量維度和GRU的隱狀態維度等多個超參數,需要人工設定。
從語料中過濾掉出現頻次小于2的詞語后,詞匯表規模為8 077個詞。通過對語料的統計發現,ORCHID語料庫中大部分的泰語句子長度為6~20個詞,而且大部分的句子長度接近于15個詞,所以本文選擇15作為本文模型的詞序列窗口大小。詞向量維度、GRU的隱狀態維度根據經驗設為100。在本文后續實驗中對比了不同維度對模型性能的影響。為了緩解訓練過程中的過擬合問題,在GRU層和隱含層中引入了Dropout。本文模型中各層神經網絡的參數如表1所示。

Table 1 Hyper parameters of our model表1 本文模型超參數
在實驗中,本文提出的模型訓練4輪,每批數據的 batch 大小為 128。
由于ORCHID語料中用于句子切分的空格數量遠少于其它用途空格的數量,其中正樣本的數量為13 377,負樣本數量為 63 604,負樣本的數量大約是正樣本數量的5倍。正負樣本的數量極不平衡,會影響模型的效果。
為了緩解樣本不平衡帶來的問題,文獻[4]通過收集更多文本擴充正樣本數量,并將無段落信息的獨立句子的句首和句尾拼接,人工構造斷句上下文,并從中抽取句子切分特征。該方法的缺點是,構建的偽樣本不是完整的句子,不利于模型學習隱含的切分特征。與該方法不同,本文從現有的ORCHID語料段落中,通過拼接不連續的句子構造偽樣本。比如,假設段落中有3個句子〈s1,s2,s3〉,從中除了能獲得〈s1,s2〉和〈s2,s3〉2個正樣本外,本文將第2個句子移除獲得偽樣本〈s1,s3〉。通過這種方法獲得了和原有正樣本數量相當的偽樣本。相比文獻[5]中的方法,本文獲得的偽樣本句子完整,由于偽樣本的句子來自同一段落語境一致,更接近真實語料。為了保證實驗的準確性,偽樣本只加入到訓練樣本中。
表2中的實驗結果對比了本文模型在原始樣本和加入偽樣本后的性能指標,SiameseGRU+表示加入偽樣本的模型。從表2的結果可以看出,加入偽樣本后斷句符的召回率有了很大的提升,幅度達13%,而空格符精確率和斷句符錯分率的效果也有一定的改進。實驗結果表明,本文構造的偽樣本有效緩解了訓練樣本類別不平衡帶來的影響。

Table 2 Influence of pseudo samples表2 偽樣本對本文模型性能的影響
考慮到序列長度和詞嵌入的維度對模型性能的影響,本文嘗試了不同的模型參數。根據ORCHID語料庫句子長度的統計,本文分別對比了不同序列長度和詞嵌入維度對句子切分性能的影響。
從表3可以看出,在序列長度為5時,本文模型性能總體略低于其它序列長度的性能;而當序列長度足以涵蓋大多數樣本時,序列長度對句子切分性能影響不明顯。

Table 3 Influence of sequence length on our model表3 不同序列長度對本文模型性能的影響
根據上述實驗結果,本文將后續實驗模型的序列長度固定為15,并在此基礎上,對比不同詞嵌入維度大小對模型性能影響。對比實驗結果參見表4,從中可以發現,較高的詞嵌入維度可以提升句子切分的性能,但同時也會增加模型的參數。

Table 4 Performances of our model with different sequence lengths on ORCHID表4 不同詞嵌入維度對本文模型性能的影響
本文選擇3種泰文句子切分方法進行對比,分別是以詞及其詞性為特征的Winnow切分方法[4]、基于最大熵分類器的方法[5]和利用范疇語法作為主要特征的方法[18]。各方法采用的訓練數據統計和實驗結果參見表5。

Table 5 Performances of different models on ORCHID表5 泰文句子切分方法對比
從表5的對比實驗結果可以看出,本文提出的泰文句子切分方法SiameseGRU在斷句符召回率(sb-recall)、空格符精確率(space-correct)和斷句符錯分率(false-break)上都優于其它3種方法,表明本文提出的方法能有效學習泰文的句子切分特征。
本文提出了一種基于雙路循環神經網絡的泰語句子切分方法。該方法不需要人工設計特征,也不依賴詞性標注和句法信息。和已有方法相比,本文所提出的方法更加簡單,句子切分效果也有了提升。由于實驗語料限制,本文僅針對泰文進行了句子切分實驗,但是該方法也可以應用于緬甸語、柬埔寨語等與泰語相似的語言,具有較好的通用性。另外,為了和已有方法對比,本文選擇的ORCHID語料庫規模較小,領域也比較單一。在下一步的研究工作中,將構建更廣泛領域的句子切分語料庫,以進一步驗證本文方法的適應性;同時將該方法應用于緬甸語、柬埔寨語等更多語種的句子切分問題中。