周艷平 李金鵬 蔡 素
(青島科技大學(xué)信息科學(xué)技術(shù)學(xué)院 山東 青島 266061)
隨著智能時(shí)代的來臨,問答系統(tǒng)引起了國內(nèi)外研究和教育機(jī)構(gòu)的廣泛關(guān)注。問答系統(tǒng)按問題集來源可分為三類[1]:基于常問問題的問答系統(tǒng)、基于Internet日志的開放域問答系統(tǒng)和基于百科全書知識庫的知識問答系統(tǒng)。
在中文問答系統(tǒng)中,問句信息匹配最大的難點(diǎn)就是一詞多義問題,如何準(zhǔn)確地計(jì)算中心詞之間同義項(xiàng)的相似程度是當(dāng)前研究的重要課題[2]?,F(xiàn)有的計(jì)算句子相似度的方法可以分為四類:文字匹配方法、概率方法、詞頻-逆向文檔頻率向量方法和語義依存方法。文字匹配方法基于兩個(gè)句子中包含的相同詞或同義詞的數(shù)量來計(jì)算句子相似度,如基于overlap的改進(jìn)方法[3]、余弦相似度算法。概率方法通過借助語言模型框架,利用概率方法計(jì)算兩個(gè)句子的相似度[4]。詞頻-逆向文檔頻率向量方法需要計(jì)算句子中心詞的詞頻和權(quán)重,然后生成頻率向量組,使用余弦相似度計(jì)算方法得出句子之間相似程度[5]。上述三種方法只通過句子中心詞的表意來比較相似度,無法對整個(gè)句子語法結(jié)構(gòu)進(jìn)行分析判斷。語義依存方法借助本體或字典,對詞進(jìn)行語義分析[6-7]以解決句法問題。但傳統(tǒng)的語義依存法不能從詞義的角度上考慮句子相似度信息,因此會出現(xiàn)句法一致,句子相似度低的情況。
本文提出了一種基于同義詞詞林的句子語義相似度方法,采用同義詞詞林的編排及其語義特征,完成多義詞的信息匹配,通過加權(quán)詞形、詞序和語義的相似性來獲得最終句子相似程度。然后將本文提出的方法應(yīng)用于常問問題的問答系統(tǒng)中,用來提高問句匹配的準(zhǔn)確率。
在語言學(xué)中,句子由中心部分(如主語、謂語和賓語等)和修飾語部分(如定語、狀語和補(bǔ)語等)組成。中心部分在句子中起主導(dǎo)作用,本文只考慮句子中心部分的相似性。一般來說,句子中的主語和賓語通常是名詞或代詞,謂詞通常是動(dòng)詞或形容詞。在計(jì)算句子相似度時(shí),重點(diǎn)考慮這些中心部分的詞[8]。
本文利用哈爾濱工業(yè)大學(xué)信息檢索研究中心開發(fā)的在線語言技術(shù)平臺(Language Technology Platform,LTP)[9]獲得句子之間的依存句法關(guān)系。該平臺將整個(gè)句子轉(zhuǎn)換為結(jié)構(gòu)化語義依存樹,依賴弧反映了句子中詞與詞之間的依賴關(guān)系。該平臺可以用于分詞、詞性標(biāo)注、命名實(shí)體、詞義消歧、句法分析和語義分析。例如句子“今年我弟弟考上了青島科技大學(xué)”可表示成樹狀結(jié)構(gòu),并能得到句子的中心詞和詞性標(biāo)注,如圖1所示。
圖1 使用LTP抽取句子的中心詞和詞性標(biāo)注
詞形相似度需要考慮到同義詞識別判斷的情況,本節(jié)借助同義詞詞林的編排及語義特點(diǎn)完成一詞多義的信息匹配。
同義詞詞林利用樹狀結(jié)構(gòu)表示詞語義項(xiàng)間的關(guān)系[10],共有5層分支編碼,第1、4層為大寫英文字母、第2層為小寫英文字母、第3、5層為兩位十進(jìn)制數(shù)。借助同義詞詞林計(jì)算詞語相似度步驟如下:
(1) 判斷兩個(gè)詞語的同義詞詞林編號在第幾層不同。兩個(gè)詞語編號不同的層需要乘以該層的系數(shù)d。如:Ae05A02與Ae05A03是第5層不同,則乘以第5層系數(shù)d;Ae05A02與Ae05B03是第4層不同,則乘以第4層系數(shù)d。為了將結(jié)果控制在[0,1]范圍內(nèi),需要乘以調(diào)節(jié)參數(shù)cos(lπ/180),l為該層分支元素個(gè)數(shù)。
(2) 詞語所在的分支上的元素會影響到詞語義項(xiàng)的相似度,為了將分支元素與義項(xiàng)相似度對應(yīng)起來,需要乘以控制參數(shù)(l-k+1)/n,l為分支元素個(gè)數(shù),k為兩個(gè)分支的距離。相似度計(jì)算如下:
通過實(shí)驗(yàn)分析,本文將不同層數(shù)對應(yīng)的參數(shù)d設(shè)置為:第1層d=0.1,第2層d=0.65,第3層d=0.8,第4層d=0.9,第5層d=0.96。
實(shí)驗(yàn)發(fā)現(xiàn),中心詞W、W′之間相似度SIM(W,W′)≥0.8時(shí),才能將W、W′作為同義詞或相同詞使用。但該方法只是針對同義詞詞林中存在的詞語進(jìn)行對比,如詞林中并無該詞語,就會默認(rèn)不是相同詞或同義詞。為避免這種情況發(fā)生,本文根據(jù)詞林中有無某個(gè)詞語進(jìn)行判斷,步驟如下:
(1) 判斷同義詞詞林中有無W、W′,若有,則用上述方法直接計(jì)算詞語相似度;若沒有,則需要對W擴(kuò)展近義詞,并將擴(kuò)展的近義詞按順序加入數(shù)組中。
(2) 判斷W近義詞組中是否包含W′。在近義詞組中,序數(shù)越小的近義詞與原詞W的相似度越高,因此W、W′的詞語相似度SIM(W,W′)計(jì)算如下式所示:
式中:arrayW是W的近義詞組,orderW(W′)是W′在W近義詞組中的序數(shù),countW是W近義詞組的元素個(gè)數(shù)。
在語言學(xué)中,一個(gè)詞在不增加任何詞綴的情況下轉(zhuǎn)化為另一詞性的現(xiàn)象在構(gòu)詞法中稱作詞性轉(zhuǎn)化[11]。例如句子A=“怎么做好協(xié)調(diào)工作”中的“協(xié)調(diào)”是動(dòng)詞,而句子B=“和老板的關(guān)系一直不是那么協(xié)調(diào)”中的“協(xié)調(diào)”是形容詞。研究證明,同義詞或相同詞在不同詞性下含義不同。針對詞性轉(zhuǎn)化問題,本文提出詞性匹配加權(quán)方法,對同義詞或相同詞的不同詞性所得出來的相似度進(jìn)行加權(quán)處理,從而使計(jì)算得出的中心詞相似度更加準(zhǔn)確。本文只對詞語相似度SIM(W,W′)≥0.8并且詞性不同的中心詞進(jìn)行加權(quán)處理,權(quán)值γ=0.85,處理之后的中心詞W與W′詞形相似度SIMnew(W,W′)按下式計(jì)算:
SIMnew(W,W′)=γ×SIM(W,W′)
(3)
(4)
本文計(jì)算句子之間的詞形相似度的步驟:
(3) 按式(4)計(jì)算句子S、S′的詞形相似度Sword(S,S′)。
詞序相似性反映的是相同詞或同義詞在兩個(gè)句子中的位置相似性,在某些情況下詞序會直接影響到句子所要表達(dá)的意思[12]。例如句子S=“我今天買了從青島到北京的車票”,句子S′=“我今天買了從北京到青島的車票”。經(jīng)過詞形匹配發(fā)現(xiàn)這兩句話相似度是100%,但實(shí)際意義有差別。通常用逆序數(shù)法計(jì)算詞序相似度,但其時(shí)間復(fù)雜度要高。為了降低時(shí)間復(fù)雜度,本文采用基于向量的詞序相似度算法進(jìn)一步提高詞序相似度的計(jì)算效率。
下面舉例說明計(jì)算句子S與句子S′之間的詞序相似度的方法。
句子S的中心詞={“我”,“今天”,“買”,“青島”,“北京”,“車票”};
句子S′的中心詞={“我”,“今天”,“買”,“北京”,“青島”,“車票”};
句子S、S′的公共詞語:CSS′={“我”,“今天”,“買”,“青島”,“北京”,“車票”}。
對應(yīng)的標(biāo)準(zhǔn)排列向量u=(1,2,3,4,5,6)。
將句子S′中的公共詞語映射為位置向量u′=(1,2,3,5,4,6)。則u′到u的向量距離可用下式表示:
(5)
從而得出distance(u,u′)=2,基于向量的詞序相似度算法定義為:
式中:maxDistance為distance(u,u′)的最大值:maxDistance=n2/2,c是兩個(gè)句子中相同中心詞的個(gè)數(shù)。最終得出句子S與S′的詞序相似度Sord(S,S′)=0.89。
詞形相似度算法通過句子中心詞的表意來比較相似度,不能分析和判斷整個(gè)句子的句法結(jié)構(gòu)。本文引入了語義依存樹來彌補(bǔ)詞形相似度算法的不足。因句子中心部分占主導(dǎo)作用,所以在使用依存句法進(jìn)行相似度計(jì)算時(shí),只需計(jì)算兩個(gè)句子中心部分的詞語組成的關(guān)鍵配置對的相似程度。關(guān)鍵配置對是指句子中的核心詞以及由中心詞組成的配置對[9]。這里中心詞定義為名詞、代詞、動(dòng)詞和形容詞,它是通過在線語言技術(shù)平臺分詞后的詞性標(biāo)注決定的。相似度St(S,S′)的計(jì)算公式為:
(7)
式中:Qi為句子S和句子S′關(guān)鍵配置對的權(quán)重,TC1為句子S的關(guān)鍵配置對數(shù),TC2為句子S′的關(guān)鍵配置對數(shù)。對于任意兩個(gè)配置對:(1)W1-W2;(2)W1′-W2′。若W1=W1′并且W2=W2′,則配置對(1)和配置對(2)的權(quán)重為1;若W1≠W1′但W2=W2′,或W1=W1′但W2≠W2′,則配置對(1)和配置對(2)的權(quán)重為0.5;否則為0。需要指出的是,這里的W=W′表示這兩個(gè)詞是相同詞或同義詞,可通過1.2節(jié)的方法判斷兩個(gè)詞是否為相同詞或同義詞。
問句相似度反映了兩個(gè)問句之間的相似程度,通常用[0,1]之間的數(shù)值表示。數(shù)值越大,兩個(gè)問句的相似度越高。若S為問句,S′為問題集中的任意一個(gè)問句,則問句相似度為:
SIM(S,S′)=k1×Sword(S,S′)+k2×Sord(S,S′)+
k3×St(S,S′)
(8)
式中:Sword(S,S′)為詞形相似度;Sord(S,S′)為詞序相似度;St(S,S′)為語義相似度;k1、k2、k3為相似度系數(shù),且滿足k1+k2+k3=1。
根據(jù)本文上述方法對問句S和問題集M中的任意問句S′進(jìn)行FAQ問句相似度計(jì)算,如圖2所示,具體步驟如下:
(1) 將問句分詞并抽取中心詞。
(2) 使用本文提出的詞形相似度計(jì)算方法計(jì)算問句的詞形相似度Sword(S,S′)。
(3) 使用基于向量的詞序相似度算法計(jì)算關(guān)鍵詞之間的詞序相似度Sord(S,S′)。
(4) 借助語義依存方法計(jì)算句子之間的語義相似度St(S,S′)。
(5) 使用式(8)對上述相似度加權(quán)求和,最終得到S、S′問句的相似度SIM(S,S′)。
對給定相似度閾值σ,選擇SIM(S,S′)中相似度的最大值MAX,若該最大值大于σ則返回相應(yīng)的答案,若該最大值小于σ則默認(rèn)問題集沒有該問題的答案。
圖2 FAQ問句相似度計(jì)算流程圖
將本文所提出的基于同義詞林的句子語義相似度算法應(yīng)用于FAQ機(jī)器問答系統(tǒng)中。本文使用同義詞詞林?jǐn)U展版,并通過在線詞典來對同義詞詞林沒有的詞進(jìn)行擴(kuò)展,本文只將擴(kuò)展后的前5個(gè)近義詞作為計(jì)算元素加入近義詞組中。本文開發(fā)環(huán)境為Window7 X64,開發(fā)工具為PyCharm4.5.4,開發(fā)語言為python3.6.1。
隨機(jī)從哈爾濱工業(yè)大學(xué)信息檢索研究室(HIT-IRLab)提供的問答集合中選取500條問句作為初始數(shù)據(jù)集S。隨機(jī)選出100條問句作為初始標(biāo)準(zhǔn)集M,剩余400條作為初始噪聲集N,依次選取S中的問句作為百度知道的查詢條件,利用BeautifulSoup解析庫[13]對查詢返回的網(wǎng)頁H進(jìn)行標(biāo)簽處理,提取出H中的前3個(gè)標(biāo)題。為了提高標(biāo)題與問句的相似度,需要人工進(jìn)一步篩選。M中每個(gè)問句都會有1~3個(gè)相似句子,文本最后得到擴(kuò)充標(biāo)準(zhǔn)集MT的元素個(gè)數(shù)為253。將M與MT混合起來作為標(biāo)準(zhǔn)測試集MMT的元素個(gè)數(shù)為353。同樣將N進(jìn)行擴(kuò)充得到噪聲測試集NNT的元素個(gè)數(shù)為1 200。最后我們把MMT與NNT混雜起來作為測試集。
實(shí)驗(yàn)流程:按順序從標(biāo)準(zhǔn)測試集MMT的353個(gè)句子中抽出1個(gè)問句X,然后計(jì)算這個(gè)問句與測試集中的問句之間的相似度,并按照相似度值對測試集中問句進(jìn)行倒序排序,輸出前三個(gè)問句,如果所得到的這三個(gè)問句包含了擴(kuò)展標(biāo)準(zhǔn)集MT中的問句X對應(yīng)的所有問句(1~3個(gè)),則說明這個(gè)問句的相似度計(jì)算是成功的。
句子成分是由一個(gè)個(gè)詞組成的,即使在句子不通順的情況下,也可以根據(jù)詞來判斷整個(gè)句子要表達(dá)的意思。因此句子相似度應(yīng)以詞形相似度為主,以語義結(jié)構(gòu)相似度為輔,同時(shí)考慮詞序相似度,并進(jìn)行綜合計(jì)算得出句子相似度。本文相似度系數(shù)的取值原則:當(dāng)k1過小時(shí),詞形相似度比例過低,會導(dǎo)致詞義不同但句法相同的兩個(gè)句子相似度變高。當(dāng)k1過大時(shí),詞形相似度比例過高,會導(dǎo)致詞義相同但句法和順序不同的兩個(gè)句子相似度變高。因此相似度系數(shù)應(yīng)符合k1≥k2+k3且k3>k2(k1,k2,k3不為0)。根據(jù)人工測試經(jīng)驗(yàn),當(dāng)k1=0.5、k2=0.2、k3=0.3時(shí)較為合適。為了防止遺漏正確答案并且剔除冗余數(shù)據(jù),本文取相似度閾值σ=0.7。
采用信息檢索技術(shù)中的準(zhǔn)確率(P)計(jì)算:
式中:CorrectCount表示實(shí)驗(yàn)中正確的句子總數(shù),AllCount表示實(shí)驗(yàn)的句子總數(shù)。
分別用詞頻-逆向文檔頻率向量方法和文獻(xiàn)[7]方法與本文提出的方法做測試試驗(yàn),實(shí)驗(yàn)結(jié)果如表1所示。從表1可以看出,使用本文所提出的方法,問句相似度準(zhǔn)確率可以達(dá)到92.63%,明顯優(yōu)于使用詞頻-逆向文檔頻率向量方法和文獻(xiàn)[7]方法。
表1 實(shí)驗(yàn)結(jié)果
本文提出了一種基于同義詞詞林的句子語義相似度方法,并將該方法應(yīng)用與問答系統(tǒng)的問句匹配。相
比傳統(tǒng)句子相似度方法,該方法能有效提高問句相似度準(zhǔn)確率。本文所提出的方法可以適用于所有句子語法情況,后續(xù)研究中,將進(jìn)一步簡化該方法的計(jì)算復(fù)雜度和提高FAQ回答效率。