張云翔 饒竹一
摘 要:依存句法分析是分析句子各個成分之間相互支配與被支配關(guān)系,反映的是句子各成分的語義修飾關(guān)系。本文通過對句子中干擾成分過濾和專有名詞進(jìn)行替換技術(shù)來提升依存句法分析的準(zhǔn)確率,然后對依存句法結(jié)構(gòu)進(jìn)行抽取與調(diào)整,并引入基本語義判別模型抽取句子的基本語義結(jié)構(gòu),通過基本語義結(jié)構(gòu)的各個修飾成分進(jìn)行調(diào)整得到句子的首層語義結(jié)構(gòu),然后利用首層語義結(jié)構(gòu)中的每個詞的修飾成分遞歸對句子所有成分進(jìn)行調(diào)整,從而得到整個句子的語義層次結(jié)構(gòu)。得到了句子的首層語義結(jié)構(gòu)與嵌套語義結(jié)構(gòu),便可以從各個層次分析句子蘊(yùn)含的語義,為準(zhǔn)確的把握用戶表達(dá)的需求,理解用戶的真實意圖打下扎實的基礎(chǔ)。
關(guān)鍵詞:語義分析;依存分析;專有名詞替換;首層語義;嵌套語義;語義層次;
引言
語義指語句包含的概念和意義,語義不僅表述事物的本質(zhì),還表述事物之間的因果、施事和邏輯關(guān)系。語義層次指的是語句中語義的嵌套關(guān)系和修飾關(guān)系。句子語義層次識別是發(fā)現(xiàn)句子的基本含義和嵌套語義的過程。通過句子語義層次識別能夠讓機(jī)器清楚的知道用戶各層次的語義關(guān)系,從而準(zhǔn)確的把握用戶的需求,更加透徹的理解用戶的真實需求。
目前國內(nèi)外針對語義分析的研究方法大致可以分為:基于詞語語義知識規(guī)則(如語義詞典、語言知識庫、本體庫等)的語義分析、基于統(tǒng)計的語義分析和基于機(jī)器學(xué)習(xí)的語義分析以及多種方法結(jié)合的分析方法。文獻(xiàn)[1]和文獻(xiàn)[2]是基于統(tǒng)計的思路分析文本表達(dá)的語義信息。此外董振東構(gòu)建的知網(wǎng)知識庫[ ],是一個以漢語和英語的詞語所代表的概念為描述對象,以揭示概念與概念之間以及概念所具有的屬性之間的關(guān)系為基本內(nèi)容的常識知識庫。國外經(jīng)典的框架語義學(xué) [9]是美國菲爾墨提出的一種經(jīng)驗主義語義學(xué),它提供了描寫詞語意義和語法結(jié)構(gòu)意義的一種途徑。
雖然目前語義分析技術(shù)較多,但是幾乎都是針對句子的語法成分或句法結(jié)構(gòu) [6]進(jìn)行分析,對于嵌套句或復(fù)雜語句結(jié)構(gòu)的理解存在一定的缺陷。因此準(zhǔn)確的獲取句子的語義層次具有重要的研究意義。本文一方面利用干擾詞過濾和專有名詞替換方法來處理句子中的特殊符號從而提升依存分析的準(zhǔn)確率,另一方面基于依存分析得到的依存句法結(jié)構(gòu),對其進(jìn)行抽取與調(diào)整,得到句子的語義層次結(jié)構(gòu)。語義層次結(jié)構(gòu)反映了句子各個層次的語義成分組成方式,能夠準(zhǔn)確的把握句子的各層次語義和真實意圖。
1.語義層次識別系統(tǒng)介紹
語義層次識別整體流程如圖1所示,在進(jìn)行依存分析前,首先對句子進(jìn)行干擾成分過濾和專有名詞替換的預(yù)處理操作,排除進(jìn)行依存分析時受到句子中特殊字符和數(shù)字的干擾導(dǎo)致依存句法結(jié)構(gòu)錯誤,從而提升依存分析的準(zhǔn)確率。在得到句子依存句法結(jié)構(gòu)后結(jié)合訓(xùn)練得到的基本語義判別模型提取句子的首層語義結(jié)構(gòu),再對首層語義中每個節(jié)點的修飾成分進(jìn)行抽取與調(diào)整,得到節(jié)點與修飾關(guān)系之間的語義層次關(guān)系,再對每個子節(jié)點抽取其修飾成分并遞歸進(jìn)行調(diào)整,直到句子中所有節(jié)點都處理完畢為止,這樣便得到句子的語義層次結(jié)構(gòu),也得到句子的首層語義結(jié)構(gòu)和嵌套語義結(jié)構(gòu)。
1.1術(shù)語定義
① 基本語義:指不包括嵌套成分和修飾成分的簡單句。
② 專有名詞:指具有典型規(guī)則的英文符號或數(shù)字組成的實體名詞,如身份證號、網(wǎng)址、郵箱、IP地址等。
③ 核心節(jié)點:指依存關(guān)系中的核心關(guān)系所代表的詞語。
④ 關(guān)鍵節(jié)點:指當(dāng)前語義層次中基本語義結(jié)構(gòu)中包含的節(jié)點,不包括通過依存關(guān)系調(diào)整層次后上移的節(jié)點。
⑤ 父節(jié)點:指當(dāng)前詞語的依存關(guān)系指向的詞語。
⑥ 子節(jié)點:指依存關(guān)系中所有指向當(dāng)前詞語的詞語。
1.2 預(yù)處理模塊
本文提出一種對句子干擾成分過濾和句子專有名詞進(jìn)行替換的預(yù)處理技術(shù)來提升依存分析的準(zhǔn)確率,首先利用專有名詞規(guī)則庫(專有名詞規(guī)則庫是事先整理好的關(guān)于各種類型專有名詞的匹配規(guī)則)對句子進(jìn)行掃描,提取出句子中包含的各類型專有名詞成分,然后對句子中的干擾符號(通過干擾符號庫識別)進(jìn)行過濾。具體步驟如下:
a.掃描句子中每個字符判斷是否是干擾成分(干擾成分通常指表情符號,無意義的符號,通過干擾符號表來進(jìn)行匹配識別);
b.將句子中掃描出的干擾成分進(jìn)行刪除;
c.利用專有名詞識別規(guī)則對句子中的專有名詞進(jìn)行識別;
d.將句子中的專有名詞替換為專有名詞類型名;
e.通過專有名詞在句子中的前后詞判斷替換后的句子結(jié)構(gòu)是否存在歧義;
f.若替換后的句子存在歧義,則還原成刪除干擾成分后的結(jié)構(gòu);
1.3 基本語義判別模型
本文采用SVM分類器來對句子中每個詞是否屬于基本語義進(jìn)行判斷,以詞的詞性以及依存關(guān)系和子節(jié)點依存關(guān)系構(gòu)成輸入向量,通過訓(xùn)練用例對句子基本語義結(jié)構(gòu)進(jìn)行學(xué)習(xí),得到基本語義判別模型,主要流程如圖2所示。具體步驟如下:
a.對訓(xùn)練用例進(jìn)行依存分析得到依存句法結(jié)構(gòu);
b.將訓(xùn)練用例中每個詞的詞性和依存關(guān)系以及子節(jié)點依存關(guān)系構(gòu)成輸入向量
c.利用SVM分類器(也就是本發(fā)明中基本語義判別模型所使用的分類器)對輸入向量進(jìn)行訓(xùn)練學(xué)習(xí);
d.對得到的判別模型進(jìn)行測試、調(diào)優(yōu);
e.得到判斷句子中每個詞是否是基本語義的判別模型。
1.4 首層語義抽取模塊
首層語義是句子的主要含義表現(xiàn),因此即要準(zhǔn)確的獲取關(guān)鍵詞語又要保留特定的表達(dá)方式才能準(zhǔn)確的反映句子的含義。本文首層語義抽取流程如圖3所示,通過依存句法結(jié)構(gòu)和基本語義判別模型抽取句子的基本語義結(jié)構(gòu),再對基本語義結(jié)構(gòu)中的詞提取其子節(jié)點,并根據(jù)子節(jié)點詞性和節(jié)點間的依存關(guān)系對句子語義結(jié)構(gòu)進(jìn)行調(diào)整,進(jìn)而得到句子的首層語義結(jié)構(gòu)。具體步驟如下:
a.遍歷整個句子的依存句法結(jié)構(gòu),抽取首層語義中每個節(jié)點的子節(jié)點。
b.若首層語義中的節(jié)點有子節(jié)點則繼續(xù)下面的步驟,若沒有子節(jié)點,則設(shè)為葉子節(jié)點。
c.對子節(jié)點詞性進(jìn)行判斷,若為疑問詞則節(jié)點上移一層,若為介詞,且介詞的介賓結(jié)構(gòu)不做狀語,則該節(jié)點上移一層,并保持原句子順序不變
d.對子節(jié)點依存關(guān)系進(jìn)行判斷,若為定中關(guān)系且兩個節(jié)點在原句中連續(xù)(即定語詞和定語修飾的詞中間不包含其它詞),則進(jìn)行合并,若不連續(xù),則需根據(jù)不連續(xù)的原因判斷是否合并,若由于多個定中子節(jié)點導(dǎo)致不連續(xù)或者定中嵌套狀中導(dǎo)致不連續(xù)則合并,反之不合并。若為右附加關(guān)系,則節(jié)點上移。
1.5 遞歸調(diào)整模塊
遞歸調(diào)整模塊是在首層語義的基礎(chǔ)上對首層語義的各個修飾成分進(jìn)行分析和調(diào)整,從而得到整個句子的語義層次的過程,遞歸調(diào)整模塊流程如圖4所示。首先對首層語義中的非關(guān)鍵節(jié)點的子節(jié)點的修飾成分直接按從右到左的順序?qū)哟握归_,而對關(guān)鍵節(jié)點的子節(jié)點結(jié)構(gòu)進(jìn)行子句判斷,若子節(jié)點構(gòu)成嵌套子句,則以該子句為基本語義進(jìn)行上述第3步操作,若不構(gòu)成子句,若有子節(jié)點,則對子節(jié)點結(jié)構(gòu)進(jìn)行調(diào)整,若沒有子節(jié)點,則設(shè)為葉子節(jié)點。對所有的子節(jié)點遞歸進(jìn)行同樣的處理,直到句子所有成分都處理完成為止。
2.實驗結(jié)果與分析
本文用500句不同數(shù)據(jù)源的測試語句進(jìn)行測試,其中聊天語句200句、新聞中的語句200句、經(jīng)典文獻(xiàn)中的語句100句。對測試語句進(jìn)行基于依存分析的語義層次識別方法后得到句子的語義層次,然后由人工審核測試效果。測試結(jié)果如表1-3所示
從上面三個表格可以看出新聞和文獻(xiàn)的準(zhǔn)確率要比聊天語句的準(zhǔn)確率明顯要高,通過分析得到,這是由于新聞和文獻(xiàn)的表達(dá)較規(guī)范,進(jìn)行依存分析得到的依存句法結(jié)構(gòu)準(zhǔn)確率明顯要高。此外通過排除依存分析錯誤干擾的情況下,準(zhǔn)確率都達(dá)到了96%以上,說明大部分的錯誤都是來自于依存分析出錯的影響,因此只要提升依存分析的準(zhǔn)確率就可以明顯提升語義層次識別的準(zhǔn)確率。
3.結(jié)論
本文采用干擾符號過濾和專有名詞替換的方法來改進(jìn)依存分析對特殊符號效果不好的影響,并在依存分析的基礎(chǔ)通過對依存句法結(jié)構(gòu)進(jìn)行首次語義抽取和遞歸調(diào)整策略得到句子的語義層次結(jié)構(gòu)。實驗證明,在不同數(shù)據(jù)源的測試語句進(jìn)行測試均取得較好的效果。
由于時間以及實驗環(huán)境的限制,本文提出的語義層次識別方法還有改進(jìn)的地方,大規(guī)模測試數(shù)據(jù)的驗證還需要一個過程。因此本文的后續(xù)工作還包括:尋找更準(zhǔn)確的依存分析算法作為技術(shù)支持或?qū)ふ倚碌木浞ǚ治霾呗裕瑑?yōu)化遞歸調(diào)整策略,構(gòu)建自動校驗的機(jī)制并收集整理大規(guī)模的樣本數(shù)據(jù)。
參考文獻(xiàn):
[1] 李世齊.面向文景轉(zhuǎn)換的中文淺層語義分析方法研究[D].哈爾濱:哈爾濱工業(yè)大學(xué),2011.
[3] 李軍輝.中文句法語義分析及其聯(lián)合學(xué)習(xí)機(jī)制研究[D].蘇州:蘇州大學(xué),2010.
[4] NirenburgS,Raskin V. Ontological semantics [M].Cambridge: MIT Press,2004.
[5] 董振東.語義關(guān)系的表達(dá)和知識系統(tǒng)的構(gòu)造 [J].語言文字應(yīng)用,1998 (3):76-82.
[6] 李正華.依存句法分析統(tǒng)計模型及樹庫轉(zhuǎn)化研究 [D].碩士學(xué)位論文.哈爾濱工業(yè)大學(xué).2008.
[9] Fillmore C J. Frames and semantics of understanding [J]. Quaderni di Semantica, 1985,6(2):222-254.
[10] 付國宏. 漢語句法歧義消解的統(tǒng)計方法研究. 哈爾濱工業(yè)大學(xué)博士論文,2001.
[11] 趙軍,黃昌寧. 漢語基本名詞短語結(jié)構(gòu)分析模型. 計算機(jī)學(xué)報,1999;22(2):136-141.
[12] 周強(qiáng),黃昌寧. 基于局部優(yōu)化的漢語句法分析方法.軟件學(xué)報,1999;10(1):4-6.
[13] 徐艷華. 現(xiàn)代漢語實詞語法功能考察及詞類體系重構(gòu) [D]. 南京:南京師范大學(xué),2006.