汪平仄,曹存根,王 石
(1. 中國科學院 計算技術(shù)研究所,北京 100190)(2. 中國科學院大學,北京 100049)
任何概念詞都有一定的語義,其直接表達語義的能力非常弱,因此我們必須借助其他類型的知識來進一步表達或者刻畫它所蘊涵的語義。概念的屬性就是一種此類的知識。
一般認為,屬性是一種概念內(nèi)涵的載體。一個屬性描述了概念的一個特征或性質(zhì)。屬性具備描述概念和鑒別概念的功能,通過屬性,我們可以區(qū)分不同的概念,發(fā)現(xiàn)它們之間的差異。屬性在文本中表現(xiàn)為不同的屬性名稱。屬性名稱是表示屬性的專有名詞,大多數(shù)屬性名稱都能起到見名知義的作用。
在本文中,屬性名稱也稱屬性詞;在不致混淆的情況下,我們可能會直接使用屬性或?qū)傩栽~來簡稱屬性名稱。
中文屬性名稱主要包括數(shù)量型、定性型、角色型三種類型[1]。目前的屬性名稱獲取依據(jù)語料數(shù)據(jù)的來源,主要包括基于結(jié)構(gòu)化數(shù)據(jù)源的提取,如Web查詢?nèi)罩綶2];基于半結(jié)構(gòu)化的Web網(wǎng)頁的提取,如從網(wǎng)頁表格或表單中提取[3],從Wikipedia Articles中提取[4];以及基于多數(shù)據(jù)源的提取[5-6]。基于結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)源的方法因其語料結(jié)構(gòu)規(guī)整簡短,具有一定的規(guī)律性,針對性強,主要采用弱文法和統(tǒng)計的方式進行提取,具有較高的準確率,但由于數(shù)據(jù)源的規(guī)模有限,因此召回率普遍不高。基于多數(shù)據(jù)源的方法主要是將結(jié)構(gòu)化與非結(jié)構(gòu)數(shù)據(jù)交叉迭代起來獲取,首先從結(jié)構(gòu)化數(shù)據(jù)中獲取準確率較高的結(jié)果作為種子屬性,然后使用種子屬性從非結(jié)構(gòu)化文本中迭代獲取更多的屬性。這種方法相比單一語料來源,綜合考慮了準確率和召回率,但獲取方法相對更加復雜,且結(jié)果屬性的好壞和屬性類型過多依賴于種子。
我們提出了一種基于前后綴迭代的屬性名稱獲取方法,語料來源于非結(jié)構(gòu)化數(shù)據(jù)源。本方法的每一步迭代分為兩個步驟。
第一個步驟是: 從現(xiàn)有屬性集合中選擇合適的前后綴,構(gòu)造詞匯—句法模式,從Web網(wǎng)頁中提取候選屬性;
第二個步驟是: 采用基于相似性的驗證模型對候選屬性進行驗證以擴充現(xiàn)有屬性集合。
與現(xiàn)有的屬性名稱獲取方法相比,本方法的特點在于:
(1) 基于非結(jié)構(gòu)化的數(shù)據(jù)源,但引入了種子屬性,兼顧了準確率和召回率,具有多數(shù)據(jù)源的優(yōu)點,但獲取方法更簡單;
(2) 強化了結(jié)果的驗證,提出了一組基于相似性的屬性驗證模型,提高了候選結(jié)果的準確率;
(3) 提出了一種滾雪球似的屬性迭代獲取方法,極大地提高了召回率、準確率和屬性類型覆蓋率。
本文的組織如下: 第2節(jié)介紹候選屬性名稱的獲取方法;第3節(jié)介紹候選屬性名稱的驗證方法;第4節(jié)給出實驗結(jié)果與實驗分析;第5節(jié)給出與相關(guān)工作的比較;第6節(jié)總結(jié)全文,并且討論進一步的工作。
為了方便陳述,我們先引入一些概念,并通過例子加以解釋。
在一個屬性詞中,我們稱其中具有語義的最小單元為屬性元(attribute element)。例如,在屬性“IT產(chǎn)業(yè)增速”中,“IT”、“產(chǎn)業(yè)”、“增速”均為屬性元。
屬性詞中的各屬性元的地位并不是平等的,有一個是處于核心地位的,也有依存在其他屬性元上以修飾它們的[7-9]。 有一類屬性元,它們經(jīng)常出現(xiàn)在屬性詞的結(jié)尾而被其他屬性元所修飾,我們稱它為屬性后綴(簡稱后綴)。表1中給出了一些常見的屬性后綴。
表1 一些常見的屬性后綴
出現(xiàn)在屬性開頭的屬性元稱為屬性前綴(簡稱前綴),它們充當屬性的修飾性成分。表2中給出了一些常見的屬性前綴。
表2 一些常見的屬性前綴
前綴和后綴是屬性名稱中重要的元素。我們對手工獲取的屬性名稱進行統(tǒng)計,結(jié)果表明約53%的屬性包含前綴,97%的屬性包含后綴。因此,基于這種觀察,我們提出了一種基于前后綴的屬性名稱獲取方法。
概念C和其屬性A的搭配常常滿足一定的句法結(jié)構(gòu),例如,A[的]C[是|為|包括],其中方括號[]中間的內(nèi)容表示可省。如對“中國”這一概念,我們常常會說: “中國的國土面積”、“中國總?cè)丝跀?shù)為”、“中國的GDP”,等等。
我們把概念C的所有屬性名稱構(gòu)成的集合稱為C的屬性空間,記為RC。
一般而言,給定屬性空間RC中常見的后綴集合SUF={SUF1…SUFi…SUFk},我們就可以構(gòu)造一批簡單的查詢模式,從Web網(wǎng)頁中提取語料,如“C的**SUFi”和“C的*SUFi(是|為|包括)”。在Google支持的查詢模式中,一個通配符“*”匹配一個詞。得到語料后,可以將通配符匹配到的序列和SUFi一起提取出來作為候選屬性名稱。
同樣,如果有一組前綴詞集合PRE={PRE1…PREi…PREk},也可以構(gòu)造類似的查詢模式,如“C的PREi**(是|為|包括)”。得到語料后,可以將PREi(包括PREi)以及通配符匹配到的序列提取出來作為候選屬性名稱。
這種基于屬性前后綴的獲取方法提取簡單,且結(jié)果具有一定的準確率。但人工給定的前后綴詞典畢竟數(shù)量有限,而且對不同類型的概念,其前綴后綴的差異也較大。如果對每個概念,將前后綴詞典中所有的元素均嘗試一次,則不僅耗時,還會得到許多錯誤的結(jié)果,影響結(jié)果的準確率。因此,我們對每類概念,給出一批人工驗證過的正確屬性(這些屬性可能是手工整理的,也可能是自動獲取后經(jīng)過人工校驗的)作為種子集合Seeds,依據(jù)屬性前后綴詞典,從Seeds中提取前后綴,使用這些前后綴進行獲取。同時,為了打破前后綴詞典和Seeds的限制,我們提出了一種前后綴擴充的迭代獲取方法。
本方法的基本思路是: 首先從種子屬性中提取新的前后綴,然后使用新的前后綴從Web中獲取新的候選屬性,并驗證得到正確屬性;然后從驗證過的正確屬性中提取新的前后綴,并使用新的前后綴繼續(xù)從Web中獲取新的候選屬性,如此反復迭代。具體的算法見圖1。
屬性迭代獲取算法(AIAAlgorithm)Step1:SUFnewproduceNewSuffix(Seeds);PREnewproduceNewPrefix(Seeds);Step2:While(SUFnew!=null||PREnew!=null){ As'getcandidateattributesbysuffix(SUFnew); AsvalidateAs'; putAsintoRC; putproduceNewPrefix(As)intoPREnew; As'getcandidateattributesbyprefix(PREnew); AsvalidateAs'; putAsintoRC; clearPREnew; SUFnewproduceNewSuffix(As);}圖1 屬性迭代獲取算法AIA
在算法AIA中,
(1) 算法在同一概念C的屬性空間RC中執(zhí)行;
(2) SUFnew表示新產(chǎn)生的后綴詞,PREnew表示新產(chǎn)生的前綴詞;
(3) 函數(shù)produceNewSuffix(Para)是從屬性集合Para中生成新的后綴詞;函數(shù)produceNewPrefix(Para)是從屬性集合Para中生成新的前綴詞。
對于produceNewSuffix(Para),我們給出了一種比較簡單的訓練方式: 根據(jù)Suffixes Dictionary(屬性后綴詞典),從Para中得到未曾使用過的后綴詞,加入到返回結(jié)果中;同時,對于Para中不出現(xiàn)在Suffixes Dictionary(屬性后綴詞典)中的結(jié)尾詞,如果其在Para中的頻率大于等于頻繁閾值s,也將它們作為潛力后綴詞加入到返回結(jié)果中。produceNewPrefix (Para)的訓練方式類似,只不過是依據(jù)Prefixes Dictionary(前綴詞典),從Para中屬性的開頭詞中提取。
每一次對概念C的屬性空間RC擴充時,需要對新的候選屬性集合As′進行驗證。As′中有幾種常見的錯誤,以下列出3個主要錯誤,并分析產(chǎn)生錯誤的原因,同時給出預(yù)處理策略。
1. 需要剝離。例如,從源句子“中國的很多工業(yè)產(chǎn)品產(chǎn)量已經(jīng)躍居在世界的第一位”,我們獲得了候選屬性為“很多工業(yè)產(chǎn)品產(chǎn)量”。為消除此類錯誤,我們將候選屬性開頭的程度副詞“很多”剝離掉。
2. 是句子片段。例如,從源句子“根源是中國的傳統(tǒng)文化輕視技術(shù)”,我們獲得了候選屬性“傳統(tǒng)文化輕視技術(shù)”。由于屬性名稱均是名詞短語,因此對每個候選屬性,我們采用基于句法模式的概念識別方法[10-11],如果該候選屬性無法通過名詞短語識別,則直接丟棄。
3. 不完整。例如,從源句子“中國的進口價格指數(shù)出現(xiàn)了比較大的上升”,我們獲得了候選屬性“進口價格”。通過觀察源句子,知道正確的屬性應(yīng)該是“進口價格指數(shù)”。作為預(yù)處理,如果發(fā)現(xiàn)“價格”后面還有新的后綴詞“指數(shù)”,則將“進口價格”和“進口價格指數(shù)”一起作為候選屬性進行驗證。
經(jīng)過以上的預(yù)處理,我們由As′得到候選屬性集As″。下一步將對As″進行驗證。
在驗證中,本文引入了以下兩條啟發(fā)式規(guī)則,并通過例子來說明。
啟發(fā)式規(guī)則1(示例):
已知“自行車保有量”是“中國”的屬性,那么“機動車保有量”也可能是“中國”的屬性。
其理由是“自行車”和“機動車”有某種程度的相似性。
啟發(fā)式規(guī)則2(示例):
已知兩個屬性“IT產(chǎn)業(yè)增速”、“GDP年均增速”是“中國”的屬性,那么“信息產(chǎn)業(yè)年均增速”也可能是“中國”的屬性。
其理由是“IT”和“信息”有某種程度的相似性;而通過“GDP年均增速”可以認為在“中國”的屬性空間中“年均”可以搭配“增速”以修飾它。同樣如果已知“鋼鐵行業(yè)發(fā)展狀況”,“經(jīng)濟發(fā)展前景”是“中國”的屬性,那么“鋼鐵行業(yè)發(fā)展前景”也可能是“中國”的屬性。
基于以上的啟發(fā)式規(guī)則,我們提出了一種基于相似性的屬性驗證模型。
在啟發(fā)式規(guī)則示例中,我們知道屬性元之間存在某些相似性。
在漢語構(gòu)詞和構(gòu)字中,包含了豐富的語義信息。比如“自行車”、“機動車”均以“車”結(jié)尾,預(yù)意著它們都是一種“車”。同樣,能確定上下位關(guān)系等受限語境的詞,借鑒文獻[12],我們也能定義它們之間的語義相似性。但是對于絕大多數(shù)屬性元,很難得到這樣的語義信息。所以,我們提出了一種更一般的屬性元相似度定義方式。
前面的例子表明,我們更關(guān)心的是結(jié)構(gòu)相似,即屬性元依存關(guān)系之間的相似性。
我們不易直接把握“需求量”和“總產(chǎn)值”之間的語義相似度,但是如果我們得到了以下候選屬性: “煤炭需求量”、“煤炭總產(chǎn)值”,“鋼鐵需求量”、“鋼鐵總產(chǎn)值”,我們會認為“需求量”和“總產(chǎn)值”之間的相似度較高,因為它們被相同的屬性元修飾。據(jù)此,我們得到以下假設(shè)。
假設(shè)在一個概念的屬性空間中,如果兩個屬性元AE1和AE2頻繁被相同的屬性元修飾(即被相同的屬性元所依存),那么AE1,AE2之間的相似度較高;反之,則相似度越低。
考慮到依存關(guān)系,我們定義函數(shù)D(x,用它來表示依存在x上的屬性元集合。例如,D(“需求量”)={“煤炭”,“鋼鐵”…}。
基于這個假設(shè),借鑒文獻[13]的方法,我們提出一種建立在依存關(guān)系上的屬性元相似度,如式(1)所示。
(1)
其中,I(S=-∑f∈SlogP(f,
P(f)為屬性元f在訓練語料中的概率,-logP(f)表示f的信息量;
與以上假設(shè)同理,如果兩個屬性元AE1和AE2頻繁修飾相同的屬性元(即依存在相同的屬性元上),那么AE1和AE2之間的相似度較高;反之越低。例如,我們有以下候選屬性: “煤炭消費量”、“煤炭需求量”、“煤炭進口量”、“石油消費量”、“石油需求量”、“石油進口量”,我們會認為“煤炭”和“石油”之間的相似度較高,因為它們修飾著相同的屬性元: “消費量”、“需求量”等。我們定義函數(shù)BD(x,用它來表示x所依存的屬性元集合。例如,BD(“石油”={“需求量”,“進口量”,“消費量”…}。則: 概念C上兩個屬性元在被依存關(guān)系上的相似度定義為式(2)。
(2)
綜合以上考慮,我們定義概念C上AE1和AE2的相似度如式(3)所示。
Sim(AE1,AE2|C
=λ·SimD(AE1,AE2|C+
(1-λ·SimBD(AE1,AE2|C
(3)
其中,λ[0,1]為加權(quán)系數(shù),根據(jù)具體應(yīng)用或試驗確定。
為了簡化陳述,下文定義的所有公式均是指在概念C上的。
在屬性元相似度基礎(chǔ)上,我們引入依存對(P,P′的相似度如式(4)所示。
(4)
例如, 對依存對“(IT,產(chǎn)業(yè))”和“(信息,產(chǎn)業(yè))”之間的相似度,表示為Sim(IT,信息)×Sim(產(chǎn)業(yè),產(chǎn)業(yè))
對有相似關(guān)系的屬性名稱A和A′,若A中的依存對P能在A′中找到相似的依存對P′,則構(gòu)造從P到P′的映射,稱這個過程為對齊。
在屬性名稱對齊時,需要依存對的兩個屬性元都相似才能將其對齊。
設(shè)A1=“IT產(chǎn)業(yè)增速”,依存結(jié)構(gòu)見圖2;A2=“GDP年均增速”,依存結(jié)構(gòu)見圖3;A3=“信息產(chǎn)業(yè)年均增速”,依存結(jié)構(gòu)見圖4。圖5中給出了A1和A3對齊后的結(jié)構(gòu)圖。
圖2 A1的依存結(jié)構(gòu)圖3 A2的依存結(jié)構(gòu)
圖4 A3的依存結(jié)構(gòu)
圖5 A1和A3對齊后的結(jié)構(gòu)
在依存對相似度的基礎(chǔ)上,我們引入馬爾科夫假設(shè),認為屬性的各個依存對之間彼此獨立,于是我們定義屬性A和A′之間的相似度如式(5)所示。
(5)
其中,
(1) Pi(A),Pi(A′)表示為A和A′的第i個對齊的依存對;
(2) Max_Pair(A,A′為A,A′依存對數(shù)量的較大值。
根據(jù)圖5中A1和A3的對齊結(jié)果,計算A1和A3之間的相似度,如果“IT”與“信息”的相似度為0.8,則如式(6)所示。
Sim(A1,A3)=(0.8×1+1×1)/3=0.6(6)
引入定量指標屬性置信度D (D∈[0,1]) 來描述屬性的正確性。
如果已知候選屬性A′的置信度D(A′;A和A′的相似度為Sim(A,A′);A的置信度未知,我們定義:
定義1由A′推導出A的屬性置信度如式(7)所示。
真實的屬性空間中,和A相似的屬性數(shù)量常常會大于1,令其相似屬性集合Sim(A)={A1,A2,…An}。我們可以在Sim(A)上定義A的置信度。如,我們可以在Sim(A)中,找到一個與它最相似的屬性Ai,用D(Ai→A)作為A的置信度,如式(8)所示。
屬性置信度1
其中i=argmaxiSim(Ai,A)
同樣,也可以在Sim(A)中,將得到的推導置信度的最大值作為其置信度,如式(9)所示。
屬性置信度2
類似于屬性置信度,我們也可以得到依存對P的兩種置信度定義方式,用來描述依存關(guān)系的穩(wěn)定程度,分別為式(10)、式(11)所示。
依存對置信度1
其中i=argmaxiSim(P(Ai),P)
依存對置信度2
定義依存對置信度的意義將在3.7節(jié)中說明。
在上述例子的A1,A2,A3中,只有當A1和A2都為正確屬性時,即關(guān)系(IT,產(chǎn)業(yè))、(產(chǎn)業(yè),增速)、(年均,增速)都合理時,才有可能認為A3也是正確屬性。盡管A1和A3可能最相似,但A3的真實置信度和A1,A2都相關(guān),而不僅僅取決于其中的某一個。因此,如果對A3中的依存關(guān)系做劃分。(信息,產(chǎn)業(yè))、(產(chǎn)業(yè),增速)由A1決定,而(年均,增速)由A2決定,則可以由A1,A2得到的A3的置信度。于是,我們得到式(12)。
屬性置信度3
其中
(1) t為劃分個數(shù);
(3) 選擇t最小化原則進行劃分;若t最小時存在多個劃分,選擇D3(A)最大化進行劃分。
在屬性置信度的基礎(chǔ)上,我們提出了一個屬性驗證算法。算法的基本思想是: 對種子屬性和待驗證的候選屬性做屬性元分解和依存關(guān)系解析,然后根據(jù)屬性元之間的相似關(guān)系,構(gòu)建屬性空間圖,圖中的節(jié)點為屬性,邊表示相似關(guān)系。然后從種子屬性開始,采用廣度優(yōu)先搜索計算相鄰節(jié)點的置信度。詳細的驗證算法(AV Algorithm)如圖6所示。