王鐵鑫,劉文靜,楊志斌,曹靜雯
1(南京航空航天大學 計算機科學與技術學院,南京 210016) 2(高安全系統的軟件開發與驗證技術-工信部重點實驗室,南京 210016)
句子相似度計算是自然語言處理研究中的一個基本問題[1].許多基于自然語言處理技術的應用,使用句子相似度計算,如語義檢索[2],文本摘要[3],自動問答系統[4],抄襲檢測等.以論文抄襲檢測為例,其被廣泛應用于科研論文投稿、畢業論文查重等審核階段.自動化、高效率的句子相似度分析檢測方法,能夠有效替代繁重且易錯的人工判斷過程.
句子的相似性可以從兩個維度加以解釋:語法與語義.語法相似性關注句子中使用的詞匯及句子結構,如使用相同或相似的詞匯與結構組織句子.語義相似性關注句子本身的語義,如不同的詞匯在不同語法結構組織下,表達相同或相近的意思.
目前,使用較多且效果相對較好的句子相似度計算方法主要利用語義分析技術;根據采用分析技術的不同,可以進一步將計算方法劃分為3類[5]:1)基于語料庫的相似度計算方法;2)基于知識庫的相似度計算方法;3)基于句子結構信息的相似度計算方法.然而,以上3種方法都有各自的不足.
基于語料庫的相似度計算方法,依賴于人工智能技術,如機器學習與深度學習算法.語料庫的選取、前期對語料庫的人工標記、語料特征的選擇與抽取等,都直接影響著相似度計算的準確性.與其他應用人工智能算法的方法類似,該類方法同樣缺乏對計算結果的可解釋性.基于知識庫的相似度計算方法,依賴于對句子關鍵詞的提取、分析與對比,缺乏對句子整體語義的把握與理解;同時,該類方法也受限于所選取知識庫(目前多為WordNet)的內容與結構.針對基于句子結構信息的相似度計算方法,當前的研究工作較少,尚未成熟.
針對以上問題,本文提出一種基于擴展語義框架的英文句子相似度計算方法“Extended Frame Semantics based Sentences Similarity Computing(EFS3C)”.EFS3C將句子作為一個整體;系統分析計算句子中所有關鍵詞的相似度,并考慮關鍵詞在句子中的上下文語境.
EFS3C建立在框架語義網“FrameNet”基礎上,并結合使用兩種成熟工具“Semafor”與“NER”.首先,利用Semafor與NER實現對句子中所有關鍵詞的識別;然后,通過結合使用Semafor與FrameNet實現對關鍵詞激起框架的定位與分析;最后,通過量化分析被激起框架間的語義關系,實現句子間相似度的計算.
本文的主要貢獻如下:
1)將框架語義引入英文句子相似度計算方法,這在目前的英文句子相似性計算方法中是從未有過的;面向框架語義網FrameNet構建可視化環境,實現框架間語義關系量化計算過程的可視化,提高計算結果的可解釋性;
2)針對部分關鍵詞無法激起語義框架的問題,定義3種新的語義框架:COUNTRY,STATE_OR_PROVINCE,LOCATION以擴充FrameNet,并定義相關相似性計算規則;
3)結合使用Semafor和NER工具,增強EFS3C方法的自動化與智能化;定義可配置的計算過程,提高效率的同時實現領域定制化.
本文結構如下:第2節介紹基于知識庫的句子相似度計算的相關研究工作;第3節對EFS3C方法中使用的主要理論、技術和工具加以說明;第4節描述EFS3C方法的原理及計算過程;第5節通過實驗,驗證EFS3C方法的準確性與有效性;第6節是本文的總結與展望.
WordNet[6]作為大型語義庫,常被用作句子相似度計算方法中的知識庫;它提供句子中關鍵詞的語義對比基礎.WordNet中包含3類主要元素:單詞(及短語)、詞義、同義詞集.一個單詞擁有一到多個詞義,每個同義詞集包含若干個語義相近的詞義.同義詞集間設定層次結構,并建有語義關系.
早期工作,如文獻[7,8],單獨使用WordNet作為計算關鍵詞間語義關系的基礎;但使用WordNet中數據的方法、定義的計算公式不盡相同.近年來,為了提高計算結果的準確度,研究工作常結合使用WordNet、語料庫統計技術、句子結構分析技術,深度學習,本體等,如文獻[9-14].
除利用WordNet進行句子相似性計算之外,程傳鵬等人在分析已有研究工作的基礎上,利用HowNet提出了一種改進的句子相似度計算方法[15].
以上研究工作都是針對關鍵詞的語義分析與計算展開的,缺乏對句子整體語義及關鍵詞上下文語境的考慮.針對特定測試集,通過調整計算方法中的可變參數及判斷閾值,能夠取得較好的測試效果.然而,這類計算方法的通用性及適用性都有很大的局限性.
文獻[16]提出了基于框架語義分析的漢語句子相似度計算方法.該方法建立在漢語框架網(Chinese FrameNet:CFN)基礎上,整合了ICTCLAS分詞工具、LTP依存句法分析器等成熟工具.該方法的主要創新點在于對關鍵詞激起框架作了重要度度量(依據框架元素),并在此基礎上,實現了多框架語義分析及計算.
實驗結果表明,與其他傳統方法相比,該方法在計算準確率上有優勢.然而,該方法也存在弱點,如句子中關鍵詞激起框架需要人工參與完成,算法執行前的預處理工作需要大量人工參與等.另外,該方法實驗用的測試集是定制的(對比句子均抽取自CFN),并基于該測試集與其他計算方法的輸出結果做對比.這種實驗與對比方法的有效性值得商榷.
文獻[16]證明了CFN用于中文句子相似性計算是可行的,間接證明了基于框架語義理論計算英文句子相似性的可行性,進而證明了我們提出的EFS3C方法的合理性.
本文提出的EFS3C方法擴展FrameNet:使用框架語義克服只針對關鍵詞計算相似度的缺點,通過增加新的語義框架,更好的對應句子中的關鍵詞,從而提高計算的準確度.
EFS3C整合使用Semafor與NER工具,在算法應用過程中,降低人工參與度,提高算法的執行效率.實驗階段使用通用的測試集,實驗結果與對比分析具有更好的說服力.
FrameNet[17](1)http://framenet.icsi.berkeley.edu/是一個基于框架語義學(Frame Semantics)的語義知識庫.框架語義理論[18]通過引入概念顯像與框架這一組關系,從根本上改變了人們對概念的認識與分類方法.
在FrameNet中,框架(Frame)被用來描述一個事件或一個場景.框架包含的各種參與者或者其他的概念性角色,被稱為框架元素(Frame Elements),它是框架的基本單元.能夠激起框架的被稱為詞元(Lexical Unit).
圖1以框架“Intentionally_act”和“Intentionally_affect”為例展示了3種元素之間的關系.框架“Intentionally_act”和“Intentionally_affect”之間存在繼承關系“inheritance”.兩個框架分別由詞元“act.v”,“do.v”激起,且包含對應的框架元素如“Agent”,“Act”等.框架包含的框架元素之間也存在映射關系,如框架“Intentionally_act”的框架元素“Agent”和框架“Intentionally_affect”的框架元素“Agent”.

圖1 FrameNet的示意性描述
EFS3C的基本工作原理可描述為:首先,將句子中的關鍵詞映射匹配到FrameNet中的詞元;接著,追溯得到對應詞元所激起的框架;然后,量化分析所激起框架間的語義關系;最后,通過執行預定義計算公式,從而得到不同句子間的相似度.
為了更好地使用FrameNet,我們開發了一個可視化工具“Graphical Interpretation for FrameNet:GIFN”.GIFN基于圖形化數據庫Neo4j實現,在4.2節對其進行詳細介紹.
Semafor[19](2)http://www.cs.cmu.edu/~ark/SEMAFOR/是一個開源的FrameNet解析工具.它能自動地依據FrameNet結構解析句子,以獲得句子內容所激起的框架,框架元素以及框架元素所指代的具體內容等.
以句子S1:“A tropical storm rapidly developed in the Gulf of Mexico Sunday and was expected to hit somewhere along the Texas or Louisiana coasts by Monday night.”為例,以下為Semafor自動分析獲得的部分結果.
…
以框架“Weather”為例,S1中“storm”激起了該框架,該框架的框架元素“Place”在S1中的指代內容是“tropical”.
EFS3C方法整合使用Semafor,以自動提取對比句子中的相關語義框架信息.Semafor在EFS3C中的詳細使用方法在本文的4.1小節中給出.
由于FrameNet和Semafor本身的局限性,即無法對句子中所有關鍵詞進行識別并關聯語義框架,我們將命名實體識別技術與EFS3C進行整合.作為技術實現工具,我們選用斯坦福大學的自然語言處理工具CoreNLP[20]中的“the named entity recognizer:NER”,作為EFS3C的組成部分.
目前,EFS3C能夠識別句子中的:人名、地名、機構名、錢、數字、百分比等實體.
表1展示了對例句S1的命名實體識別結果.第1列是句子S1中包含的單詞,第2列是對應的實體類型,如單詞“night”對應的實體類型是“TIME”.

表1 NER對S1的實體識別結果
EFS3C中自定義3個擴展語義框架:COUNTRY,STATE_OR_PROVINCE,LOCATION;通過擴充FrameNet和Semafor的覆蓋范圍,以更好的匹配句子關鍵詞,進而提高EFS3C方法計算結果的準確性.擴展框架的使用在4.3小節中有詳細闡述.
如圖2所示,EFS3C以兩個獨立的英文句子作為輸入,輸出是兩個句子間的相似度計算結果(取值范圍在0-1之間).該計算結果的值越高意味著兩個句子的相似性越強.

圖2 EFS3C計算流程示意圖
Semafor和NER并行處理兩個待比較的英文句子.EFS3C從Semafor分析的結果得到兩個句子所激起的框架,分別用集合frame_s和frame_s′記錄;進一步比較、抽取兩個集合的相同元素,形成集合frame_same.
EFS3C從NER得到兩個句子中的命名實體,判斷是否是本文自定義框架并判斷其對應內容是否相同.若相同則將其加入集合frame_same.同時記錄所激起的自定義框架個數.得到去除了相同框架的集合frame_s和frame_s′之后,利用GIFN,通過執行預定義計算公式,計算獲得句子間的相似度值.
FrameNet可視化環境(GIFN)將FrameNet中所有的框架,框架元素和詞元當作結點,將框架之間的關系,以及詞元與框架之間的關系當做邊存儲在Neo4j中.
目前,GIFN中存有1019個框架結點,11829個詞元結點,8995個框架元素結點,框架之間的關系有1507個.
圖3展示了框架“Intentionally_act”、其包含的框架元素,可激起該框架的詞元,及框架“Intentionally_affect”之間的關系.圖中的面積最大的結點(圓圈)代表框架;兩個框架結點之間存在繼承關系.圖中面積最小的結點是能夠激起框架“Intentionally_act”的詞元結點.其余結點代表了框架“Intentionally_act”所包含的框架元素.

圖3 GIFN中結點與邊的說明示意圖
在EFS3C中,框架之間的語義關系被用來衡量兩個句子之間的相似性.為了實現對語義關系的量化分析,我們對不同的框架關系賦值.為框架關系賦值的想法來源于文獻[21].對應的賦值越大,意味著兩個框架結點語義關聯越密切.
為框架之間的語義關系賦值過程如下.首先,我們邀請5位語義學相關學者分別為框架語義關系賦值;接著,通過圓桌討論,由所有學者共同擬定一組賦值,如表2中第2列所示;然后,隨機從數據集“Microsoft Research Paraphrase Corpus:MSRP”中挑選出60對句子(其中15對是不相似的,另外45對相似)來測試初始賦值的可靠性.

表2 FrameNet框架之間的語義關系賦值
根據測試結果的F1值(在5.1小節有說明),設定語義關系初始賦值的判定閾值 “0.595”(高于此閾值,認為句子相似,否則不相似).此閾值對應的F1值是“0.7957”.
5位專家根據EFS3C在特定測試集上的測試結果(與已知結果做對比),進一步調整對語義關系的賦值.
最終的賦值結果如表2中第3列所示.針對這組最終語義關系賦值,我們設定判定閾值為“0.505”.
實驗結果顯示,由于FrameNet的不完善和Semafor工具本身的缺陷,導致Semafor對句子的分析結果漏掉了句子中的重要地點成分信息.
例如,Semafor對句子S1的處理結果中并沒有關于“Mexcical”的信息,而對于“Texas” “Louisiana”等地點信息,Semafor也并沒有分析出與其相關聯的框架.所以EFS3C使用命名實體識別工具來彌補這一缺陷.
NER可以將句子S1中的“Mexico”,“Texas”和 “Louisiana”信息分別識別為:COUNTRY,STATE_OR_PROVINCE和STATE_OR_PROVINCE.從而,S1所激起的框架就會增加兩個,COUNTRY和STATE_OR_PROVINCE,對應的詞元分別為:“Mexico”,“Texas”和 “Louisiana”.
EFS3C使用Semafor分析句子內容所激起的所有框架,使用NER分析的結果進而獲得自定義框架.在給出具體的方法之前,我們先給出預定義計算算法中使用變量的定義.
定義1.frame_s={framei|i∈[1,|frame_s|]}
定義2.frame_s′={framej|j∈[1,|frame_s′|]}
定義3.frame_same=frame_s∩frame_s′
定義4.frame_rel={
frame_s,frame_s′,frame_same和frame_rel是框架或者框架對的集合.frame_s和frame_s′是包含了兩個待比較的句子所激起的框架的集合.frame_same是集合frame_s和frame_s′的交集;frame_rel包含了frame_s和frame_s′中除去相同框架之后在GIFN中有最短路徑的框架對.
基于以上變量,我們定義如下計算公式.
(1)
公式(1)中,Frame_score代表了兩個句子之間的相似度.它由3部分所決定,相同框架的個數(即|frame_same|),兩個句子所能激起的最大框架數(即Maximum(|frame_s|,|frame_s′|))和Path_score.公式(2)是Path_score的計算方式.
(2)
Path_score是指Path_value的累加和.Path_value是指兩個框架在GIFN中的路徑權重的累加和與路徑長度之比,公式(3)是其具體計算方法,公式中的CountPath是指GIFN中兩個框架結點的最短路徑長度.
(3)
以如下句子S2和S3為例,闡述比較算法的執行過程.
S2:“Moseley and a senior aide delivered their summary assessments to about 300 American and allied military officers on Thursday.”
S3:“GeNERal Moseley and a senior aide presented their assessments at an internal briefing for American and allied military officers at Nellis Air Force Base in Nevada on Thursday.”
表3列舉了句子S2(第1列)和S3(第2列)所激起的框架.

表3 S2和S3所激起的框架
由表3知,frame_same包含6個元素:Subordinates_and_superiors,Delivery,Assessing,Origin,Military,Leadership,Calendric_unit.
從GIFN中我們可以得到與frame_s中的元素Delivery有最短路徑的是frame_s′中的元素Presence.所以frame_rel只包含了一個元素,
EFS3C假定最短路徑在10步以內的兩個結點才屬于集合frame_rel.根據表2和公式(2),我們可以得到Path_score的結果是0.45625.
NER的分析結果顯示,句子S2中沒有激起自定義擴展框架,S3激起LOCATION和STATE_OR_PROVINCE兩個框架,對應的內容分別是“Nellis Air Force Base”和“Nevada”.所以公式(1)中的Maximum(|frame_s|,|frame_s′|)是11.因句子S2和S3沒有相同的擴展框架,所以二者的相同框架個數是6.根據公式(1)可以得到Frame_score的結果是0.5869.參考4.2小節中設定的0.505的閾值,可以認定句子S2和S3是相似的,而這個結果也符合數據集MSRP人工標注結果.
使用F1和accuracy兩個指標來評估EFS3C方法.F1在自然語言處理領域中常被用來衡量方法的優劣[22].F1和accuracy的計算公式如下所示.
(4)
(5)
F1是統計學中用來衡量二分類模型精度的一種指標,同時兼顧了分類模型的準確性precision和召回率recall.F1可以看作是模型precision和recall的一種加權平均,它的取值范圍是0-1.precision和recall的定義如下.
(6)
(7)
公式(5)-公式(7)中的TP,TN,FP和FN分別定義如下.
1)TP(True Positive):預測為正例,實際也為正例;
2)TN(True Negative):預測為負例,實際也為負例;
3)FP(False Positive):預測為正例,實際為負例;
4)FN(False Negative):預測為負例,實際為正例.
MSRP是一個被廣泛用來測試句子相似性技術的數據集.本文用MSRP來測試EFS3C方法的有效性.
MSRP數據集包含有約5700對句子,并且每一對句子都被人工標注為0(不相似)或者1(相似).其中,有67%的句子被人工判定為相似,其余的被判定為不相似.所有的句子對被劃分成為了兩個集合:一是訓練集(包含4076對句子),另一個測試集(包含1725對句子).
我們使用MSRP的測試集驗證EFS3C的有效性.在這個測試集的1725對句子中,有1147對句子是相似的,其余的578對句子不相似.
圖4展示了EFS3C,Mihalcea[23]的5種其他基于WordNet的句子相似性計算方法和Mamdouth[12]提出的方法在accuracy和F1的對比結果.

圖4 EFS3C和其他方法的accuracy和F1對比
表4列出了這6種方法和EFS3C的accuracy,precision,recall和F1值.觀察表4可以得到,EFS3C的F1值雖然位于第2位,但是它的accuracy和precision要遠高于Mihalcea文獻中所列舉的5種方法.而Mamdouth的accuracy和precision雖然很高,但是其recall是非常低的,且F1值也不高.

表4 EFS3C和其他計算方法的綜合對比
實驗表明,EFS3C基于FrameNet的相似性計算方法優于基于WordNet的句子相似性計算方法.這也說明,EFS3C為句子相似性計算提供了一個新的可行方向.
本文提出了一種新的基于框架語義理論的句子相似性計算方法,文獻[16]間接證明了我們的方法的合理性.首先,本文通過利用Semafor對句子進行語義分析來刻畫句子的語義;其次通過命名實體識別對句子進行地點實體提取,以補充Semafor的分析結果;最后以框架為基本單元,結合框架之間的語義關系來計算句子之間的相似度.本文方法側重于將句子看作一個整體而非單詞的組合.實驗表明,本文方法相比于其他基于WordNet的方法中能夠在相似度測試中獲得更好的結果.但由于目前的方法依賴于Semafor的分析結果,使得本文方法的性能受限于Semafor的性能.
下一步將利用句子的其他特征,如框架元素等,以進一步提高方法的性能.此外,也將擴大方法應用方向,并逐漸向缺陷分析等實際應用拓展.