李思彤 冀美琪 夏欣雨 殷復(fù)蓮
摘 ?要: 針對(duì)文學(xué)作品人物關(guān)系復(fù)雜,無(wú)法進(jìn)行快速準(zhǔn)確查詢的問(wèn)題,本文提出基于文學(xué)作品的人物關(guān)系問(wèn)答系統(tǒng)設(shè)計(jì)方案并進(jìn)行實(shí)例驗(yàn)證。本文采用文本表示、實(shí)體識(shí)別等自然語(yǔ)言處理技術(shù),研究文學(xué)作品中人物關(guān)系的自動(dòng)抽取方法,實(shí)現(xiàn)了根據(jù)用戶輸入的人物名稱快速返回其人物關(guān)系的功能。典型案例驗(yàn)證了系統(tǒng)的有效性。
關(guān)鍵詞:?人物關(guān)系抽取;自動(dòng)問(wèn)答系統(tǒng);文學(xué)作品;人物關(guān)系三元組
中圖分類號(hào): TP391????文獻(xiàn)標(biāo)識(shí)碼:?A????DOI:10.3969/j.issn.1003-6970.2019.09.032
本文著錄格式:李思彤,冀美琪,夏欣雨,等. 基于文學(xué)作品的人物關(guān)系問(wèn)答系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 軟件,2019,40(9):139-143
Design and Implementation of Question and Answer System for Personal Relations Based on Literary Works
LI Si-tong,?JI Mei-qi, XIA Xin-yu, YIN Fu-lian
(Communication University of China, College of Information and Communication Engineering,?Beijing 100024, China)
【Abstract】: Aiming at the problem that the relationship between characters in literary works is complex and can not???be queried quickly and accurately, this paper proposes a design scheme of a question-and-answer system based on the relationship between characters in literary works and verifies it with examples. In this paper, we use natural language processing technology such as text representation and entity recognition to study the automatic extraction method of the relationship between characters in literary works, and realize the function of returning the relationship between characters quickly according to the user's input names. Typical cases verify the effectiveness of the system.
【Key words】: Character relation extraction; Automatic question and answer system; Literature works; Character relation triple
近年來(lái)網(wǎng)絡(luò)文學(xué)蓬勃發(fā)展,文學(xué)作品的數(shù)量和題材層出不窮。一部文學(xué)作品的字?jǐn)?shù)通常是超過(guò)百萬(wàn)的,這就使得用戶僅僅通過(guò)自己閱讀是很難準(zhǔn)確地捕捉到作品中具體的人物關(guān)系。如果使用傳統(tǒng)的搜索引擎對(duì)文學(xué)作品中的人物關(guān)系進(jìn)行查詢,得到的結(jié)果往往都是相對(duì)應(yīng)的大量文字片段的網(wǎng)頁(yè)鏈接,無(wú)法得到簡(jiǎn)潔準(zhǔn)確的答案[1]。由此,能夠彌補(bǔ)上述缺陷的自動(dòng)問(wèn)答系統(tǒng)逐漸受到廣泛關(guān)注,它不僅允許用戶以自然語(yǔ)言的方式進(jìn)行提問(wèn),還能夠?qū)崿F(xiàn)針對(duì)用戶提問(wèn)返回相應(yīng)簡(jiǎn)潔準(zhǔn)確答案句的功???能[2],在一定程度上提高了用戶的查詢效率。
自動(dòng)問(wèn)答系統(tǒng)作為人工智能的一個(gè)分支,已有了漫長(zhǎng)的發(fā)展歷史。20世紀(jì)60年代發(fā)展的問(wèn)答系統(tǒng),允許用戶以自然語(yǔ)言的方式查詢數(shù)據(jù)庫(kù)中存儲(chǔ)的信息。該時(shí)期最成功受到人們關(guān)注的兩個(gè)問(wèn)答系統(tǒng)是BASEBALL[3]和LUNAR[4]。到了20世紀(jì)90年代,該時(shí)期的問(wèn)答系統(tǒng)已經(jīng)可以彌補(bǔ)傳統(tǒng)搜索引擎針對(duì)用戶提問(wèn)返回一系列相關(guān)網(wǎng)頁(yè)鏈接的缺陷,最為著名的問(wèn)答系統(tǒng)是Start系統(tǒng),該系統(tǒng)根據(jù)用戶所查詢的信息是否存在于已有數(shù)據(jù)庫(kù)中設(shè)定了兩種處理模式,即當(dāng)用戶查詢的內(nèi)容已經(jīng)存在于知識(shí)庫(kù)中的情況下,系統(tǒng)可以直接將對(duì)應(yīng)的答案返回給用戶;如果知識(shí)庫(kù)中沒(méi)有存儲(chǔ)對(duì)應(yīng)的信息,則通過(guò)搜索引擎檢索并處理后反饋給用戶[5]。近年來(lái),隨著神經(jīng)網(wǎng)絡(luò)技術(shù)、深度學(xué)習(xí)技術(shù)等的發(fā)展進(jìn)步,自動(dòng)問(wèn)答系統(tǒng)進(jìn)入了以知識(shí)和知識(shí)自動(dòng)化為中心的新階段。21世紀(jì)初期誕生的Watson[6]問(wèn)答系統(tǒng),由美國(guó)IBM公司研發(fā),通過(guò)存儲(chǔ)有關(guān)影視、新聞等多個(gè)領(lǐng)域的海量資料,實(shí)現(xiàn)在較短時(shí)間內(nèi)針對(duì)用戶提問(wèn)返回相應(yīng)答案,并由此在知識(shí)競(jìng)賽中打敗人腦一舉成名,現(xiàn)已在多個(gè)領(lǐng)域廣泛使用。
與國(guó)際上自動(dòng)問(wèn)答系統(tǒng)的發(fā)展相比較,我國(guó)對(duì)其的研究起步較晚。近年來(lái)隨著科學(xué)技術(shù)的飛速發(fā)展,我國(guó)各大高校和研究所也開始對(duì)其展開了深入的研究,如復(fù)旦大學(xué)[7]和中科院都參加了QA Track的競(jìng)賽、上海交通大學(xué)開發(fā)的智能答疑系統(tǒng)[8]以及中科院計(jì)算所研究的知識(shí)問(wèn)答系統(tǒng)[9]等。2005年百度公司推出百度知道,這是一個(gè)交互式的問(wèn)答系統(tǒng),具體實(shí)現(xiàn)時(shí)主要是將用戶查詢的問(wèn)題與數(shù)據(jù)庫(kù)中已存在的問(wèn)題進(jìn)行比較,若相同則立即返回答案,若不同則根據(jù)相似度計(jì)算返回與之相似的若干問(wèn)題及答案供用戶參考[10]。整體來(lái)看,中文的語(yǔ)法以及語(yǔ)義復(fù)雜性等多因素給研究帶來(lái)了不少挑戰(zhàn),因此針對(duì)中文的語(yǔ)句相似度研究、文本理解等知識(shí)自動(dòng)問(wèn)答系統(tǒng)逐漸成為研究的熱點(diǎn),且有很大的發(fā)展空間。
本文提出基于文學(xué)作品的人物關(guān)系問(wèn)答系統(tǒng)研究方案,基于共現(xiàn)法進(jìn)行人物對(duì)及親密度分析,定義并提取人物關(guān)系對(duì)規(guī)則,實(shí)現(xiàn)用戶以自然語(yǔ)言方式輸入,系統(tǒng)實(shí)現(xiàn)人物關(guān)系自動(dòng)問(wèn)答的功能。
本文提出的基于文學(xué)作品的人物關(guān)系問(wèn)答系統(tǒng)研究方案圖如圖1所示。主要包括數(shù)據(jù)采集如網(wǎng)絡(luò)文學(xué)小說(shuō)的采集、近義詞詞條及反義詞詞條的收集,數(shù)據(jù)預(yù)處理如對(duì)文本數(shù)據(jù)進(jìn)行去除停用詞等操作,使用文本表示方法將文本數(shù)據(jù)表示成計(jì)算機(jī)能夠識(shí)別的向量模式,再通過(guò)實(shí)體識(shí)別、關(guān)鍵詞提取等自然語(yǔ)言處理技術(shù)對(duì)文學(xué)作品的內(nèi)容進(jìn)行分析處理,實(shí)現(xiàn)當(dāng)用戶針對(duì)相關(guān)文本的人物關(guān)系進(jìn)行提問(wèn)時(shí),能夠自動(dòng)對(duì)問(wèn)題答案進(jìn)行檢索,進(jìn)而將整理好的答案返回給用戶,以滿足用戶快速搜索的需求。
在實(shí)現(xiàn)問(wèn)答系統(tǒng)的人物關(guān)系查詢功能時(shí),進(jìn)行了人物關(guān)系對(duì)及親密度的提取,將提取到的人物對(duì)及人物關(guān)系存儲(chǔ)成人物關(guān)系三元組和對(duì)應(yīng)的答案句,通過(guò)定義簡(jiǎn)單和復(fù)雜兩種查詢答案句的模式,實(shí)現(xiàn)了基于文學(xué)作品的人物關(guān)系問(wèn)答。
2??人物關(guān)系對(duì)及親密度的提取研究
本文在進(jìn)行人物關(guān)系對(duì)及親密度的提取研究中,使用的研究方法流程圖如2所示。針對(duì)一部文學(xué)作品,首先進(jìn)行基于共現(xiàn)法的人物對(duì)及親密度的提取,然后使用自定義規(guī)則進(jìn)行人物關(guān)系的抽取,接著根據(jù)提取好的人物關(guān)系三元組定義答案句模式,從而實(shí)現(xiàn)當(dāng)用戶針對(duì)文學(xué)作品中的相關(guān)人物進(jìn)行提問(wèn)時(shí),系統(tǒng)能夠返回給用戶人物關(guān)系答案句的功能。
2.1基于共現(xiàn)法的人物對(duì)及親密度提取
“共現(xiàn)”是指文獻(xiàn)中特征項(xiàng)描述的信息共同出現(xiàn)的現(xiàn)象[11]。常見的共現(xiàn)類型包括文獻(xiàn)耦合、共詞、共鏈等多種形式,本文主要使用的是于1986年被首次提出的“共詞”分析方法。“共詞”表示多個(gè)詞匯在同一篇文獻(xiàn)中同時(shí)出現(xiàn)。共詞分析的原理是通過(guò)文獻(xiàn)集中某幾個(gè)詞匯共同出現(xiàn)的情況,來(lái)反映這些詞之間的關(guān)聯(lián)強(qiáng)度,從而確定它們所代表的學(xué)科或研究領(lǐng)域的熱點(diǎn)及各主題之間的關(guān)系[12]。一般認(rèn)為兩個(gè)詞匯在一篇文獻(xiàn)中同時(shí)出現(xiàn)的次數(shù)越多,那么這兩個(gè)詞匯所代表的主題之間的關(guān)系越密切。將共現(xiàn)法應(yīng)用到分析小說(shuō)中各個(gè)角色之間的人物關(guān)系時(shí),則可以認(rèn)為在一個(gè)章節(jié)或一篇文章中的同一段共同出現(xiàn)的兩個(gè)人物之間,具有某種關(guān)聯(lián)。本文設(shè)計(jì)與實(shí)現(xiàn)針對(duì)文學(xué)作品的人物關(guān)系進(jìn)行自動(dòng)問(wèn)答查詢功能,因此選用共現(xiàn)法進(jìn)行人物對(duì)及親密度的提取。
本文具體使用python工具實(shí)現(xiàn)人物對(duì)及親密度的提取,主要設(shè)計(jì)思路為建立姓名字典和親密度字典。進(jìn)行人物對(duì)及親密度的提取是分章節(jié)進(jìn)行的,以便為后續(xù)的人物關(guān)系抽取奠定基礎(chǔ)。在每一章節(jié)中,首先借助jieba工具對(duì)文本數(shù)據(jù)進(jìn)行分詞和詞性標(biāo)注,接下來(lái)使用實(shí)體識(shí)別技術(shù)識(shí)別出該章節(jié)文本中所有的人物名字,將它們存儲(chǔ)在姓名字典中。然后進(jìn)行每一段落中兩個(gè)共同出現(xiàn)的人物名字的統(tǒng)計(jì),同時(shí)記錄人物對(duì)共同出現(xiàn)的次數(shù),將次數(shù)記錄在對(duì)應(yīng)的親密度字典中。接下來(lái)將每一章節(jié)得到的人物對(duì)和親密度進(jìn)行匯總整理,從而得到整部文學(xué)作品中人物對(duì)和親密度的數(shù)據(jù)。如果存在同一人物有多個(gè)名字的情況,則采取建立列表的方式,將該人物所有的名字都存儲(chǔ)在一個(gè)列表中,而該列表最終的值選定為該人物的正式名字,由此實(shí)現(xiàn)對(duì)包含該人物的人物對(duì)合并及對(duì)應(yīng)的親密度加和,通過(guò)上述操作最終實(shí)現(xiàn)基于共現(xiàn)法的人物對(duì)及親密度提取。
2.2人物關(guān)系對(duì)的定義及提取規(guī)則
人物關(guān)系對(duì),顧名思義,即對(duì)兩個(gè)人物名稱及他們之間關(guān)系的統(tǒng)稱。其中,關(guān)于人物對(duì)的提取已在上一小節(jié)中闡述了具體實(shí)現(xiàn)方法,接下來(lái)需要說(shuō)明的就是如何進(jìn)行人物關(guān)系的抽取。人物關(guān)系抽取可以看作是實(shí)體關(guān)系抽取的一個(gè)重要分支,主要是將抽取中的命名實(shí)體限定為人名。實(shí)體關(guān)系的存儲(chǔ)形式一般為關(guān)系三元組,類比到人物關(guān)系抽取中,則可以定義人物關(guān)系對(duì)的存儲(chǔ)形式為人物關(guān)系三元組
本文是設(shè)計(jì)實(shí)現(xiàn)針對(duì)文學(xué)作品中人物關(guān)系的自動(dòng)問(wèn)答,因此人物關(guān)系對(duì)選擇通過(guò)人物關(guān)系三元組進(jìn)行存儲(chǔ),其中實(shí)體1和實(shí)體2代表文學(xué)作品中的兩個(gè)不同人物名稱,關(guān)系詞則是對(duì)兩個(gè)人物之間關(guān)系的具體描述詞。
本文定義的人物關(guān)系提取規(guī)則流程如圖3所示。
首先需要對(duì)描述人物關(guān)系的詞語(yǔ)進(jìn)行收集,將文學(xué)作品中經(jīng)常出現(xiàn)的如“母親”“父親”“兄長(zhǎng)”“叔父”等詞語(yǔ)存入用戶自定義詞典中,單獨(dú)標(biāo)注一種詞性。然后對(duì)需要分析的文本數(shù)據(jù)進(jìn)行分詞和詞性標(biāo)注,識(shí)別能夠表示人物關(guān)系的詞語(yǔ),在每一個(gè)描述人物關(guān)系詞語(yǔ)的前后找到距離最近的兩個(gè)人物名稱,將這兩個(gè)人物名稱以及描述關(guān)系的詞語(yǔ)存成一個(gè)人物關(guān)系三元組。
按照上述做法提取出來(lái)的人物關(guān)系三元組與直接利用共現(xiàn)法提取的人物對(duì)相比較,在大多情況下數(shù)量較少,也就是說(shuō)極有可能存在沒(méi)有提取到確切關(guān)系詞的人物對(duì),針對(duì)這種情況,本文選取分析該章情感傾向的方法實(shí)現(xiàn)對(duì)人物關(guān)系提取規(guī)則的補(bǔ)充完善。如果該章計(jì)算得到的情感傾向?yàn)檎?,則將人物對(duì)關(guān)系定義為“朋友”;如果該章計(jì)算得到的情感傾向?yàn)樨?fù)向,則將人物對(duì)關(guān)系定義為“敵人”。
需要說(shuō)明的是,這里存在有一個(gè)特殊情況:如果存在一個(gè)人物對(duì),他們的關(guān)系實(shí)際上是戀人關(guān)系,具體體現(xiàn)為兩人之間的親密度極高且章節(jié)情感傾向?yàn)檎?,但是在文章中兩人的互?dòng)都是直接使用名字,此時(shí)無(wú)法提取到能夠描述兩人確切關(guān)系的詞語(yǔ),使用上述定義的規(guī)則就會(huì)將兩人的關(guān)系錯(cuò)誤地歸結(jié)為“朋友”。對(duì)于這種現(xiàn)象,本文采用結(jié)合人物對(duì)親密度數(shù)值的方法,規(guī)定了一個(gè)親密度閾值等于50(一般文學(xué)作品的章節(jié)數(shù)目都超過(guò)50章),當(dāng)親密度大于50時(shí),可以認(rèn)為人物對(duì)之間有很親密的關(guān)系。對(duì)于親密度大于50且關(guān)系被定義為“朋友”的人物對(duì),人工檢查此關(guān)系是否需要修改為“戀人”關(guān)系。
2.3答案句模式設(shè)定
本文設(shè)計(jì)構(gòu)建的人物關(guān)系查詢模塊,旨在返回給用戶簡(jiǎn)潔準(zhǔn)確的答案句。由此,根據(jù)已有的人物關(guān)系三元組,規(guī)定一種答案句子的模式[13],將三元組中的數(shù)據(jù)轉(zhuǎn)為答案句進(jìn)行存儲(chǔ),當(dāng)用戶進(jìn)行提問(wèn)時(shí),可以根據(jù)識(shí)別出來(lái)的人物名稱直接與答案句內(nèi)包含的人物名稱進(jìn)行匹配,匹配成功后直接返回完整的答案句,由此為該模塊的問(wèn)答功能提供便利,也在一定程度上提高了問(wèn)答系統(tǒng)的處理效率。由于人物關(guān)系三元組 根據(jù)存有的人物關(guān)系三元組及對(duì)應(yīng)的答案句,本文設(shè)計(jì)實(shí)現(xiàn)的基于文學(xué)作品的人物關(guān)系查詢,擬通過(guò)簡(jiǎn)單和復(fù)雜兩種處理方式進(jìn)行體現(xiàn)。簡(jiǎn)單的查詢處理模式,即用戶所查詢的人物關(guān)系對(duì)存在于已有的數(shù)據(jù)庫(kù)中,系統(tǒng)就可以直接返回給用戶相應(yīng)的答案句,可以實(shí)現(xiàn)對(duì)用戶提問(wèn)簡(jiǎn)潔高效的回答。復(fù)雜查詢處理模式采用基于中間人物的方法,即用戶所查詢的人物關(guān)系對(duì)沒(méi)有存在于已有的數(shù)據(jù)庫(kù)中,這時(shí)系統(tǒng)無(wú)法直接提取到對(duì)應(yīng)的答案句,需要通過(guò)尋找中間人物進(jìn)行答案句組合,繼而返回給用戶組合答案句。當(dāng)存在多個(gè)中間人物符合條件時(shí),通過(guò)引入親密度數(shù)值這一指標(biāo),選擇親密度數(shù)值最大的人物對(duì)進(jìn)行最終的關(guān)系說(shuō)明。3??典型案例分析
本文選擇網(wǎng)絡(luò)小說(shuō)《香蜜沉沉燼如霜》作為典型案例進(jìn)行分析。在問(wèn)答系統(tǒng)的人物關(guān)系查詢模塊中,首先利用共現(xiàn)法統(tǒng)計(jì)了每一章節(jié)中共同出現(xiàn)的人物對(duì)以及他們之間的親密度,然后將整部文學(xué)作品的所有章節(jié)人物對(duì)進(jìn)行合并整理,對(duì)具有不同人物名稱的同一人物進(jìn)行自定義規(guī)則的特殊處理,由此得到了小說(shuō)中包含的全部人物對(duì)及他們的親密度數(shù)值。
以《香蜜沉沉燼如霜》中的男主人公旭鳳為例,他一個(gè)人就擁有很多個(gè)不同的名字,比如女主人公錦覓對(duì)他特有的稱呼“鳳凰”、天帝天后對(duì)他的稱呼“旭鳳”、月下仙人對(duì)他特有的稱呼“鳳娃”、其他天兵天將或者仙侍對(duì)他的尊稱“二殿下”、“火神”,這么多人物名稱其實(shí)只代表“旭鳳”一個(gè)人,那么包含這些不同人物名稱的人物對(duì)也需要進(jìn)行相應(yīng)的識(shí)別和合并,表1為旭鳳的所有名字與錦覓共同出現(xiàn)的次數(shù)統(tǒng)計(jì)。
由表1中四組數(shù)據(jù)可以得到,我們最終使用的旭鳳和錦覓的親密度,應(yīng)該是四組數(shù)據(jù)中的親密度加和。按照此方法對(duì)所有的人物對(duì)及親密度進(jìn)行整理,從而得到準(zhǔn)確的人物對(duì)及其親密度數(shù)值。
接下來(lái)利用人物關(guān)系抽取的自定義規(guī)則提取了作品中的人物關(guān)系對(duì),對(duì)于能夠直接提取到人物關(guān)系的人物對(duì),將人物關(guān)系和兩個(gè)人物直接進(jìn)行人物關(guān)系三元組的存儲(chǔ);對(duì)于沒(méi)有提取到確切人物關(guān)系的人物對(duì),則對(duì)該章進(jìn)行基于情感詞典的情感傾向分析[14],根據(jù)得到的“正向”或“負(fù)向”的情感,規(guī)定人物關(guān)系為“朋友”或“敵人”。最終將所有的人物關(guān)系三元組,按照特定模式得到的答案句以及相應(yīng)的親密度均存儲(chǔ)于數(shù)據(jù)庫(kù)中,從而實(shí)現(xiàn)針對(duì)人物關(guān)系的自動(dòng)問(wèn)答。最終設(shè)計(jì)了可視化頁(yè)面對(duì)該問(wèn)答系統(tǒng)的人物關(guān)系查詢功能進(jìn)行展示。在問(wèn)答系統(tǒng)的人物關(guān)系查詢模塊頁(yè)面中,用戶只需要在輸入框內(nèi)輸入想要查詢?nèi)宋镪P(guān)系的兩個(gè)人物名字,點(diǎn)擊查詢按鈕,就能在輸入框下方得到相應(yīng)的答案句。
圖4和圖5即為使用該問(wèn)答系統(tǒng)進(jìn)行人物關(guān)系查詢的具體示例。
圖4即為簡(jiǎn)單查詢功能展示,當(dāng)用戶輸入想要查詢?nèi)宋镪P(guān)系的兩個(gè)名字為“旭鳳,錦覓”時(shí),系統(tǒng)根據(jù)數(shù)據(jù)庫(kù)中已有的數(shù)據(jù)進(jìn)行匹配,通過(guò)點(diǎn)擊查詢按鈕實(shí)現(xiàn)返回答案句“旭鳳是錦覓的戀人,錦覓是旭鳳的戀人?!?/p>
圖5即為通過(guò)中間人物實(shí)現(xiàn)復(fù)雜查詢功能的展示,當(dāng)用戶輸入想要查詢?nèi)宋镪P(guān)系的兩個(gè)名字為“旭鳳,先花神”時(shí),系統(tǒng)在數(shù)據(jù)庫(kù)中沒(méi)有找到相匹配的數(shù)據(jù),所以選擇查找中間人物的方式進(jìn)行答案句組合,通過(guò)比較最終選取“錦覓”作為兩者之間的中間人物進(jìn)行關(guān)系說(shuō)明,最終點(diǎn)擊查詢按鈕實(shí)現(xiàn)返回組合答案句“先花神是錦覓的母親,旭鳳是錦覓的戀人?!?h4>4 ?結(jié)論
本文立足于自然語(yǔ)言處理技術(shù),設(shè)計(jì)與實(shí)現(xiàn)了基于文學(xué)作品的人物關(guān)系查詢自動(dòng)問(wèn)答系統(tǒng),使用了共現(xiàn)法進(jìn)行文學(xué)作品中人物對(duì)及親密度的提取,使用自定義規(guī)則進(jìn)行了人物關(guān)系抽取,并通過(guò)存儲(chǔ)人物關(guān)系三元組,設(shè)定適當(dāng)?shù)拇鸢妇淠J?,最終實(shí)現(xiàn)了當(dāng)用戶針對(duì)文學(xué)作品中人物關(guān)系進(jìn)行查詢時(shí),該系統(tǒng)能夠通過(guò)文本分析等相關(guān)技術(shù),快速返回給用戶簡(jiǎn)潔的答案句。
參考文獻(xiàn)
[1]?Wei Z, Xuan Z, Junjie C. Design and implementation of influenza Question Answering System based on multi-?strategies[C]. IEEE International Conference on Computer Science & Automation Engineering. IEEE, 2012.