張濤,賈真,李天瑞,黃雁勇
(西南交通大學 信息科學與技術學院,四川 成都 611756)
信息檢索是目前互聯網時代的一個熱門研究方向。搜索引擎則是一種常見的信息檢索手段,它根據用戶輸入的查詢語句進行關鍵字匹配,并對結果進行排序,返回包含關鍵字的頁面鏈接,并不會直接給出問題的答案,需要用戶自己瀏覽網頁才能得到想要的答案。但是問答系統卻能夠克服這個缺點,用戶輸入問句后問答系統會給出一個準確簡潔的答案。
本文提出了一種基于知識庫的開放領域自動問答系統。首先,對問句進行實體識別,即需要明確問句問的是關于哪個實體的,實體識別是問答系統中非常重要的一個部分,本文提出了自定義詞典分詞與CRF模型相結合的命名實體識別方法來完成該系統中的命名實體識別;其次,對實體進行鏈接,即用問句中識別出的實體查詢知識庫,返回實體名稱相同或相近的實體信息,本文采用模糊匹配中后模糊匹配的方法來進行實體鏈接;然后,對謂詞進行識別,即需要明確問句所問內容與實體的哪個屬性相關,謂詞識別同樣也是該系統中一個非常重要的部分,本文采用了直接謂詞匹配、詞匯字面相似度和語義相似度及規則映射表3種方法來完成對問句中謂詞的識別;最后,進行實體消歧、獲取答案,由于知識庫中存在很多同名實體,而且大多數同名實體的屬性也相同或者相似,這就會導致答案會有多條,所以需要對包含答案的實體進行消歧,獲取唯一的答案。
問答系統(question answering system, QA)目前已經成為人工智能和自然語言處理領域中一個備受關注并具有廣泛發展前景的研究方向[1]。現有的問答系統可以分為:1)基于搜索引擎的問答系統;2)基于社區的問答系統;3)基于知識庫的問答系統;4)基于文本的問答系統。基于搜索引擎的問答系統首先需要解析問句,獲得問句主體及類型,然后在搜索引擎返回的檢索結果中按照問句類型抽取答案[2]。基于社區的問答主要是問句與互聯網上的社區中用戶提出的問句經過相似度計算返回結果[3]。而基于知識庫的問答系統最主要的工作是進行問句理解[4-10],提取出問句中的主體和謂詞。比如Poon[11]、Yahya[12]和Berant[13-15]分別提出了基于語義分析的問答系統構建方法,其主要思路是先抽取問句中的主體和謂詞,然后轉化為SPARQL結構化查詢語言,之后再與知識庫交互得到答案。基于自由文本的問答系統則是從非結構化文本中抽取問句所問的答案。例如,Zheng[16]提出了一種從網頁文本中抽取問句答案的方法。
1)對subject中的英文大小寫進行統一
因為知識庫中的subject和問句中的subject存在英文大小寫不統一的問題,所以將知識庫subject中的英文都轉化為小寫。
2)去除subject中的一些特殊的字符
在知識庫subject中存在很多特殊字符比如“-”、“+”、“.”等。這些字符會影響分詞和實體鏈接的結果,所以將subject中的這些特殊字符去掉。
本文的實體識別采用的是自定義詞典分詞和CRF模型相結合的方法。實體識別的詳細流程如圖1所示。

圖 1 實體識別流程圖Fig. 1 Procedure of entity recognition
2.2.1 自定義詞典分詞識別實體
本文采用西南交通大學分詞系統,它允許加載自定義分詞詞典進行分詞。自定義詞典分詞過程中,首先是根據詞典中的詞進行組塊分詞,若在自定義詞典中不存在再使用原分詞算法進行分詞和詞性標注。由此本文將知識庫中的subject提取出來構建自定義詞典用于分詞,以識別問句中的subject。但是若將知識庫中的所有subject都作為詞典,可能問句中的普通詞也被識別為實體。所以需要對subject進行篩選后再加入詞典。本文將知識庫中的subject進行分詞,若subject分詞之后詞的數目大于2,則將該subject加入詞典。通過此方法構建的詞典中包含2 761 745個實體詞,其中部分詞典如表1所示。

表 1 自定義分詞詞典Table 1 The dictionary of custom segment
若問句中沒有包含詞典中的詞,則利用分詞系統進行實體識別。例如,若問句中出現詞性為nr、nh、nt等的詞,則將其標注為實體。具體標記的詞性和詞性說明如表2所示。問句中沒有包含這些詞性,則采用圖1的算法進行實體識別。

表 2 詞性和詞性說明表Table 2 The part of speech and its instruction
2.2.2 基于CRF的實體識別
1) CRF模型介紹
條件隨機場算法(conditional random field algorithm, CRF)被認為是一種基于圖模型的算法,由于該圖是一種無向圖,因此也是一種無向圖模型[17]。在圖模型中,其中的結點表示算法的輸入序列和輸出序列,主要用來計算輸出序列的概率問題。條件隨機場算法最主要的功能就是讓無向圖中的各個結點呈現出線性結構。線性的條件隨機場算法同時也是一個有限的狀態機,該狀態機可以進行線性數據的序列標注工作。當有限狀態機接收到輸入的序列后,線性的條件隨機場算法可以計算出輸出序列,并且能夠返回該輸出序列的條件概率。在條件隨機場算法中,訓練模型的主要功能就是得到條件概率最大的模型[18]。
2) CRF實體識別
由于建立詞典和標記特殊詞性的實體識別方法不能完全識別出所有問句中的實體,所以本文采用了CRF算法來做進一步的實體識別。CRF是一種常見的命名實體識別方法,并取得了比較好的實驗結果。用CRF做命名實體識別的步驟如下:
1)人工標注一些問句中的實體作為訓練數據;
2)用標注好實體的訓練數據訓練CRF模型;
3)用CRF模型來對未標注實體的問句進行實體標注。
本文利用已知實體回標的方式自動獲取訓練數據。即通過3.2.1中的方法得到實體所在的問句作為實體識別的訓練數據。但是這些訓練數據中存在少量錯誤,需要人工再對訓練數據做出修正。我們一共標注了約13 000條訓練數據。
命名實體鏈接是指將文本中已經識別出的命名實體鏈接到知識庫中的一個具體真實實體的過程。實體鏈接是目前自然語言處理領域的一種常用技術。本文采用的是模糊匹配中后模糊匹配的方法進行實體鏈接。具體方法步驟如下:
1)將問句中識別出的實體去除其中含括號的消歧項,只保留實體原名稱,如:“武漢大學學報(醫學版)/entity”,去除括號內消歧項,只保留“武漢大學學報”。
2)用去除消歧項的實體名稱到知識庫中進行后模糊匹配查找,后模糊匹配即忽略知識庫中實體名稱后面的所有詞,只關注知識庫中subject的前n個字是否與所要查找的實體名稱是否一致,n為待查找實體名稱的長度。如“武漢大學學報”,只關注知識庫subject的前6個字是否與“武漢大學學報”完全匹配。
3)由于后模糊匹配有可能找出一些實體名稱根本不可能是一個實體的subject,如在知識庫中用后模糊匹配查找“李明”,這會返回一下幾個實體:“李明 (蘇州大學教授)”、“李明慧 (大連輕工業學院副教授)”、“李明(中醫藥研究教授)”等。其中“李明慧(大連輕工業學院副教授)”就與“李明”不可能是同一個實體,這是后模糊匹配忽略了“李明”之后的所有詞才導致了這個結果,對于這種情況本文首先對查找出來的實體去除括號里面的消歧項,然后與原查找名稱進行比較,若不相等則刪掉該實體。
謂詞匹配的作用是確定問句問的是實體的哪個屬性(謂詞)。本文采用了多種謂詞匹配方法,其中包括直接謂詞匹配法、詞匯字面相似度和語義相似度相結合的方法、規則映射法以及同義詞表映射法。
2.4.1 直接謂詞匹配法
在自然語言問句中有經常會出現很多問句中直接包含謂詞的情況,可以通過直接謂詞匹配的方法進行查找答案。具體方法如下:提取所有鏈接實體的謂詞作為候選謂詞,然后進行直接匹配。若問句中除去實體之外的詞中包含謂詞,則將該謂詞所對應的三元組加入三元組列表中。
2.4.2 詞匯字面相似度和語義相似度相結合的方法
由于語言表達的多樣性,問句中的很多謂詞并不能通過直接匹配法找到。針對那些謂詞不是直接包含在問句中或謂詞以同義詞的形式出現在問句中的情況,本文采用了字面相似度和語義相似度相結合的方法來識別謂詞。字面相似度計算公式為

式中:N為鏈接實體中的某個謂詞長度,遍歷謂詞的每個字w,若w在問句中出現,則n=n+1(n的初始值為零)。
本文使用的語義相似度計算是基于《知網》的相似度算法,該方法是由夏天在《漢語詞語語義相似度計算研究》[19]一文中所提出的。《知網》是一個以漢語和英語的詞語所代表的概念為描述對象,以揭示概念與概念之間以及概念所具有的屬性之間的關系為基本內容的常識知識庫。在《知網》中,詞匯對應于若干概念,而概念是以義原為基礎通過知識庫描述語言進行定義的,即概念的義項表達式,義原又通過多種關系進行描述,如上下位關系等,目前大多數學者基于《知網》的詞匯語義相似度計算,其思想是整體相似度可由部分相似度加權平均進行計算。
本文字面相似度和語義相似度結合匹配謂詞的步驟如下:
1)計算謂詞和問句的字面相似度,若字面相似度等于1,則表示謂詞直接出現在問句中,并將該謂詞所對應的三元組加入三元組列表中;
2)計算謂詞與問句中去除實體后的每個詞的語義相似度,若存在與謂詞語義相似度等于1的詞,則表示謂詞出現在問句中,并將該謂詞所對應的三元組加入三元組列表中;
3)若步驟1)、2)后,問句中都沒有謂詞,則取步驟1)中的字面相似度sim在0.5~1的謂詞,計算這些謂詞與問句中去除實體后的每個詞的語義相似度,取其中之最大的謂詞所對應的三元組加入三元組列表中。
2.4.3 規則映射法
由于2.4.1和2.4.2都是以詞為單位進行謂詞查找的,但是有些屬性是多個詞共同表達的,如問句“·· · ···什么時候去世”,謂詞“去世地點”和“去世時間”都包含“去世”,但“什么時候”表達了時間。我們制定了規則解決這一類問句的謂詞識別問題。例如,對于“什么時候”后接一個動詞的,可將其映射為動詞+(時間|日期)。如“什么時候去世”,“去世”是動詞,什么時候表示時間,就可以映射為“去世時間”或“去世日期”。表3列出了規則示例。

表 3 規則映射表Table 3 Examples of rule set
若經過步驟2.4.1和2.4.2后,仍然還未找到謂詞,則驗證問句中是否包含表3中的規則,若包含則用規則映射后的詞語去匹配鏈接實體在知識庫中的每個謂詞,匹配謂詞的方法為步驟2)中的詞匯字面相似度和語義相似度相結合的方法,若找到相同或相似的謂詞則將該謂詞所對應的三元組加入三元組列表中。
2.4.4 同義詞表映射法
在常見問句中還有一些問句中的謂詞是以同義詞的形式存在,或者每個問句格式可以對應一些特定的謂詞。如問句中存在“有多高”這種疑問詞,則可以將謂詞映射為“高度”。對于這些問句本文采用建立同義詞表的方法來做謂詞映射。如“什么意思”其同義詞表可為“含義|意義|解釋”。本文建立了同義詞映射表,部分同義詞表如表4所示。

表 4 同義詞映射表Table 4 Examples of synonym list
同樣,問句如果經過2.4.1、2.4.2和2.4.3這3個步驟后還沒有找到相應的答案,則驗證問句中是否包含表4中的詞匯,若包含則用同義詞表中的詞語去匹配實體的每個謂詞,若找到相同或相似的謂詞則將該謂詞所對應的三元組加入三元組列表中。
在完成謂詞匹配后就能夠得到謂詞所對應的三元組列表,三元組列表中每個對應object都是問題的答案。三元組列表包含一個或多個答案。這是因為知識庫中存在很多同名實體,而且同名實體其謂詞基本上是相同或相似的,導致有些問句就會出現一個或多個答案。需要從答案列表中選擇一個作為最終的答案,即答案篩選。本文采用的方法是對所有答案對應的實體名稱進行實體消歧,消歧后得到三元組中的object作為該問題的答案。
本文實體消歧的方法如下:
1)取分詞后問句中所有名詞(實體詞除外);
2)對三元組列表中的subject進行分詞并去除其中的標點符號;
3)將所有subject分詞后的所有詞與步驟1)中的所有名詞計算詞匯語義相似度,取其中語義相似度最大的subject所對應的object作為問句的答案。
如“西游記屬于什么類型的書呢”,完成實體識別和分詞后的句子為“西游記/entity屬于/v 什么/ry 類型/n 的/ude1 書/n 呢/y”。該問句中,“西游記”被識別為實體詞,即主體subject。經過上述步驟 1),取問句中的名詞 “類型/n 書/n”,其他詞過濾掉。而經過謂詞識別后得到知識庫三元組如表5所示。其中“西游記(吳承恩等著作小說)”,經過步驟2)的結果為“西游記/nz 吳承恩/nr 等/v著/uzhe 作/v 小說/n”。然后將步驟1)和2)進行交叉計算語義相似度,取其中最大的語義相似度作為該實體與問句的相似度。由于“小說”和“書”的語義相似度為1,所以該實體與問句的語義相似度為1。由于其他subject與問句的語義相似沒有比1大的,所以該問句的答案為subject為“《西游記》(吳承恩等著作小說)”所對應的object,即“古典神魔小說”。

表 5 “西游記”實體鏈接和謂詞匹配后的三元組列表Table 5 Triple list of “Journey to the West” after entity link and predicate matching
1)知識庫
本文中使用的知識庫是NLPCC2016測評中發布的知識庫[19]。知識庫是以三元組的形式給出的,三元組格式為 總共有43 063 796條三元組,其示例數據如表6所示。
2)數據集
①訓練數據集:本文采用的訓練數據集是NLPCC2016測評提供的數據[19],其中包含14 609測試問句。
②測試數據集,本文采用的測試數據集也是NLPCC2016測評提供的數據[19-20],其中包括9 870條測試問句。

表 6 知識庫三元組Table 6 Triples in knowledge base
此次評測使用了F-Measure值來衡量開放領域問答系統的性能。其相應的計算公式為


本文根據謂詞識別方法的不同做了幾組實驗,分別為直接匹配、直接匹配+組合謂詞、直接匹配+詞語相似度、以及所有方法組合即本文最終采用的方法,其中詞語相似度包含詞語字面相似度以及詞語語義相似度。實驗結果如表7所示,可見本文最終采用的方法的F值比其他幾種方法的F值都要好。

表 7 評測結果Table 7 Evaluation results in the task
針對NLPCC2016開放領域問答測評提供的問句,本文提出了一種基于知識庫的開放領域問題的問答系統構建方法,該方法首先對問句進行實體識別,即提取出問句中的實體,在識別出問句實體之后則進行謂詞匹配,將謂詞匹配度高的object作為問句的答案返回。為了提高問答系統的準確率,本文還對知識庫進行了適當清理。實驗表明基于本文所提出的方法的平均F值為0.695 6,充分證明了本文所提出方法的可行性。