本發(fā)明涉及漢語自然語言處理、漢語語法結構自動識別領域,特別是涉及一種漢語兼語結構自動識別系統(tǒng)和方法。
背景技術:
漢語兼語句是一類特殊的語言現(xiàn)象。例如,給出以下三條語句(采用空格,并且標注了詞性,這樣便于突出句子中的兼語語境):
S1:“組委會/n 邀請/v 他們/r 參加/v 會議/n”
S2:“學校/n 支持/v 畢業(yè)生/n 創(chuàng)業(yè)/v”
S3:“哪位/r 讓/v 這/r 只/q 瓶子/n 掉/v 地上/s 了/u ?/w”
在S1中,“他們”是動詞“邀請”的賓語,同時也是動詞“參加”的主語,因此在S1中,“他們”是兼語。在S2中,“畢業(yè)生”是動詞“支持”的賓語,同時也是動詞“創(chuàng)業(yè)”的主語,因此在S2中,“畢業(yè)生”是兼語。同樣,在S3中,“這只瓶子”是“讓”的賓語,同時也是動詞“掉”的主語,因此在S3中,“這只瓶子”是兼語。
從這三個典型的例子可以看出,漢語兼語句是一種常見的語言現(xiàn)象。30多年來,朱德熙、丁樹聲、黃伯榮、呂冀平、吳啟生等國內知名學者從語法或語義角度對漢語兼語句進行了系統(tǒng)的研究,對人們認識漢語兼語句發(fā)揮了重要的作用。
除了理論研究價值、漢語教學和培訓外,隨著互聯(lián)網應用的全面發(fā)展,兼語結構研究還具有許多重要的用途。
例如,漢語兼語結構可以用作語音識別中的語言模型的一部分,對自動創(chuàng)建這種語言模型具有重要的輔助作用。
又如,未登錄詞識別問題一直是一個重要的問題:給定一個詞典,不在此詞典出現(xiàn)的詞稱為未登錄詞。因為任何一部詞典在開始時收詞有限,需要在實際應用中不斷地補充。未登錄詞識別或詞典補充中的一個技術困難就是如何精確地確定未登錄詞的左右邊界。
而如何通過對大語料處理和分析,從中有效地獲取兼語結構,形成兼語結構庫?如何驗證哪些動詞、在什么條件下與什么名詞結合才能形成兼語結構?這些問題一直沒有得到充分的關注和研究。
技術實現(xiàn)要素:
針對如何通過對大語料處理和分析,從中有效地獲取兼語結構,形成兼語結構庫;如何 驗證哪些動詞、在什么條件下與什么名詞結合才能形成兼語結構的問題本發(fā)明提供了一種漢語兼語結構獲取系統(tǒng)和方法。
為了解決以上問題本發(fā)明采用了如下技術方案:一種漢語兼語結構獲取系統(tǒng),其特征在于:包括對原始訓練語料庫Corpus進行分詞,形成分詞語料庫TCorpus的模塊A;識別分詞語料庫TCorpus中的每條語句Si中動詞的模塊B;應用兼語模式對TCorpus中的語句進行分析,對滿足兼語模式的語句形成候選兼語結構,并且置入待驗證的兼語結構庫SOBase中的模塊C;驗證候選兼語結構庫SOBase,并輸出最終結果SOBaseResult的模塊D;
上面所述模塊中,模塊A采用一個開源的ICTCLAS系統(tǒng)對RCorpus中的每篇輸入文本進行分詞,并且將每篇文本按照句子的自然分割進行分拆,形成不含有句子標點符號的簡單句;因此,TCorpus每個句子的形式為Si=“W1/pos1 W2/pos2…Wi/posi…Wn/posn”,其中每個Wi是一個漢語詞、漢字、標點符號、阿拉伯數(shù)字、英文單詞或字母,posi是其對應的詞性;模塊A產生分詞后的結果將傳給模塊B,模塊B識別分詞語料庫TCorpus中的每條語句Si中的動詞或動詞詞組;模塊B對TCorpus中的每條語句Si進行動詞合并處理,即出現(xiàn)“W1/v W2/v”時,則按照“W1W2/v”進行合并處理,即將兩個或兩個以上的動詞,合并為一個動詞,稱此過程為動詞合并處理;在上述處理后,對修飾動詞的副詞進行消除處理,即將動詞前的所有修飾副詞全部刪除;模塊B完成動詞識別、副詞處理后,將結果傳給模塊C;模塊C應用兼語模式對TCorpus中的語句進行分析,對滿足兼語模式的語句形成候選兼語結構,并且置入待驗證的兼語結構庫SOBase中;模塊C完成兼語模式分析后,將結果傳給模塊D以便驗證兼語結構的正確性;模塊D對候選兼語結構庫SOBase中的每條記錄<“Vi,1…Vi,2”,“Ni,1 Vi,1 Ni,2 Vi,2 Ni,3”>進行兼語搭配常見性驗證、兼語搭配多樣性驗證。
一種漢語兼語結構獲取方法,其特征在于:包括以下步驟:
第一步:對原始訓練語料庫Corpus進行分詞,形成分詞語料庫TCorpus;
采用一個開源的ICTCLAS系統(tǒng)對Corpus中的每篇輸入文本D進行分詞,并且將每篇文本按照句子的自然分割進行分拆,形成不含有句子標點符號的簡單句;因此,TCorpus每個句子的形式為Si=“W1/pos1 W2/pos2…Wi/posi…Wn/posn”,其中每個Wi是一個漢語詞、漢字、標點符號、阿拉伯數(shù)字、英文單詞或字母,posi是其對應的詞性;
在分詞算法中,詞性的標記已經在計算機界通行;通常的詞性有a表示形容詞、b表示區(qū)別詞、c表示連詞、d表示副詞、h表示前綴詞、j表示簡稱詞、k表示后綴詞、m表示數(shù)詞、n表示名詞、p表示介詞、q表示量詞、r表示代詞、u表示助詞、z表示狀態(tài)詞;
第二步:識別分詞語料庫TCorpus中的每條語句Si中的動詞或動詞詞組;
當出現(xiàn)“W1/v W2/v”,則按照“W1W2/v”進行合并處理,即將兩個或兩個以上的動詞,合并為一個動詞,稱此過程為動詞合并處理;在上述處理后,對修飾動詞的副詞進行消除處理,即將動詞前的所有修飾副詞全部刪除;將處理后的語句仍放入TCorpus中;
第三步:應用兼語模式對TCorpus中的語句進行分析,對滿足兼語模式的語句形成候選兼語結構,并且置入待驗證的兼語結構庫SOBase中;
所述應用兼語模式對TCorpus中的語句進行分析,是指采用5種兼語模式,將TCorpus中的符合兼語模式之一的語句挑選出來,置入待驗證的兼語結構庫SOBase中;
具體而言,對TCorpus中任一語句SOi,當它含有超過2的動詞,或者僅含有1個動詞,則放棄該句;否則,設SOi的形式為“Ni,1 Vi,1 Ni,2 Vi,2 Ni,3”,這里,下標i代表第i個語句意思;下面的主要任務是檢查Ni,2是否滿足5種兼語模式之一;如果滿足5種兼語模式之一,則將二元對<“Vi,1…Vi,2”,“Ni,1 Vi,1 Ni,2 Vi,2 Ni,3”>放入SOBase中;否則,放棄SOi;
所述的5種兼語模式:設兼語句的一般形式為“N1 V1 N2 V2 N3”,其中N2即為兼語;在獲取兼語結構時,僅考慮兼語N2滿足以下模式的兼語語句,也就是,當語料庫足夠大時,兼語是其它形式的兼語句的兼語結構也能從兼語滿足以下5種模式的兼語句中獲得:
模式1:數(shù)詞+名詞;
模式2:數(shù)詞+量詞+名詞;
模式3:{這,這場,這次,這個,這位,這種,這些,那,那場,那次,那個,那位,那種,那些,它,它們},該集合中的元素為常見代詞,通常用于指代非生命的物體或者動物,其中的任何一個元素本身都是一個模式;
模式4:{這,這場,這次,這個,這位,這種,這些,那,那場,那次,那個,那位,那種,那些}+名詞,這是一個由代詞與名稱構成的兼語模式;
模式5:{他,他們,我,我們,她,她們},該集合中的元素為常見代詞,通常用于指代人物,其中的任何一個元素本身都是一個模式;
第四步:驗證候選兼語結構庫SOBase,并輸出最終結果SOBaseResult;
對候選兼語結構庫SOBase中的每條記錄<“Vi,1…Vi,2”,“Ni,1 Vi,1 Ni,2 Vi,2 Ni,3”>,采用兩種驗證技術:兼語搭配常見性驗證、兼語搭配多樣性,它們都是確保兼語結構正確的必要條件;
所述兼語搭配常見性驗證,是指當SOi=“Ni,1 Vi,1 Ni,2 Vi,2 Ni,3”是一個正確的兼語句,則兼語結構“Vi,1…Vi,2”在TCorpus中的其他語句中出現(xiàn),而不是僅僅出現(xiàn)在兼語句SOi中;
所述兼語搭配多樣性驗證,是指如果SOi=“Ni,1 Vi,1 Ni,2 Vi,2 Ni,3”是一個正確的兼語句,那么形如SO′i=“N′i,1 Vi,1 N′i,2 Vi,2 N′i,3”、SO″i=“N″i,1 Vi,1 N″i,2 Vi,2 N″i,3”的兼語句在TCorpus也應該多次出現(xiàn);
所述第四步的具體實施步驟為:
首先引入兩個非負的閾值a和b,其中a∈(0,1],b∈(0,1]
步驟D1:設置SOBaseResult為空,用以保存驗證過的、正確的兼語結構的結果;
步驟D2:如果SOBase空,則轉步驟D6;
步驟D3:對SOBase中的任一一個記錄<“Vi,1…Vi,2”,“Ni,1 Vi,1 Ni,2 Vi,2 Ni,3”>,將<“Vi,1…Vi,2”,“Ni,1 Vi,1 Ni,2 Vi,2 Ni,3”>從SOBase中取出;
步驟D4:如果cof(“Vi,1…Vi,2”)>a,那么將“Vi,1…Vi,2”放入集合SOBaseResult中,轉步驟D2;
所述cof(“Vi,1…Vi,2”)反映了兼語結構“Vi,1…Vi,2”的常見性,它的計算如下:cof(“Vi,1…Vi,2”)=TCorpus含有“Vi,1…Vi,2”結構語句條數(shù)/TCorpus中的語句數(shù);當cof(Vi,1…Vi,2)>a時,將“Vi,1…Vi,2”視為一個正確的兼語結構;
步驟D5:如果muf(“Vi,1…Vi,2”)>b,那么將“Vi,1…Vi,2”放入集合SOBaseResult中;
所述muf(“Vi,1…Vi,2”)是一個刻畫兼語搭配多樣性的數(shù)學方法,它的計算子步驟如下:開始時,設置V*,1和V*,2為空集合;
步驟D51:在SOBase中,如果存在<“Vx…Vi,2”,“Ni,1 Vx Ni,2 Vi,2 Ni,3”>,那么將Vx放入集合V*,1中;
步驟D52:在SOBase中,如果存在<“Vi,1…Vy”,“Ni,1 Vi,1 Ni,2 Vy Ni,3”>,那么將Vy放入集合V*,2中;
步驟D53:計算muf(“Vi,1…Vi,2”):計算公式如下:
步驟D6:輸出最終兼語結構結果SOBaseResult。
有益效果:
本發(fā)明借助語言學和計算機技術,提出了一種漢語兼語結構獲取系統(tǒng)和方法。針對兼語形式的繁雜性、多樣性,本發(fā)明引入了兼語模式,可在不降低獲取效果的前提下極大地控制兼語形式的復雜性。針對漢語構詞和語句的復雜性,為確保兼語結構的準確性,本發(fā)明從“兼 語結構搭配多樣性”、“兼語結構搭配常見性”雙重角度,對獲得的兼語結構進行嚴格的驗證。
在經過1TB語料的測試驗證后,本發(fā)明的系統(tǒng)獲得了13.96萬對兼語結構,經過分析,準確性達到98.2%。因此,本發(fā)明取得了較好的識別性能,已經達到了實際應用的目的。
附圖說明
圖1是一種漢語兼語結構獲取系統(tǒng)工作流程圖。
具體實施方式
為了能夠更清楚的說明本發(fā)明,以下定義并解釋如下的術語:
(1)漢語詞性:漢語中的詞性是漢語詞的一種屬性。常見的有:名詞(如孩子、畢業(yè)生等,用n表示)、動詞(如邀請、加入等,用v表示)、副詞(如很、經常等,用d表示)、形容詞(如漂亮、美好、簡單等,用a表示)、代詞(如這些、這個、它、他們等,用r表示)、數(shù)詞(如一、十二、12等,用m表示)、量詞(如個、根、只、條等,用q表示)。
(2)5種兼語模式:為控制兼語結構的獲取復雜性,同時還確保能夠獲得更多的兼語結構,本發(fā)明引入5種兼語模式。為便于陳述,下文假設兼語句的一般形式為“N1 V1 N2 V2 N3”,其中N2即為兼語。本發(fā)明在獲取兼語結構時,僅考慮兼語N2滿足以下模式的兼語語句(也就是,我們假設,當語料庫足夠大時,兼語是其它形式的兼語句的兼語結構也能從兼語滿足以下5模式的兼語句中獲得):
●模式1:數(shù)詞+名詞。例如:“三/m 人/n”、“3/n項目/n”就是具體的兩個例子。
●模式2:數(shù)詞+量詞+名詞。例如:“三/m 個/q 人/n”、“3/m棵/q植株/n”就是具體的兩個例子。
●模式3:{這,這場,這次,這個,這位,這種,這些,那,那場,那次,那個,那位,那種,那些,它,它們}。該集合中的元素為常見代詞,通常用于指代非生命的物體或者動物,其中的任何一個元素本身都是一個模式。
●模式4:{這,這場,這次,這個,這位,這種,這些,那,那場,那次,那個,那位,那種,那些}+名詞。這是一個由代詞與名稱構成的兼語模式?!斑@場/r 比賽/n”、“這些/r 原料/n”就是具體的兩個例子。
●模式5:{他,他們,我,我們,她,她們}。該集合中的元素為常見代詞,通常用于指代人物,其中的任何一個元素本身都是一個模式。
(3)ICTCLAS系統(tǒng):一個免費的、開源的分詞系統(tǒng)。該系統(tǒng)以文本為輸入,輸出為該文本的分詞序列。ICTCLAS系統(tǒng)下載網址為:http://ictclas.nlpir.org。分詞后,每個分詞標有詞性,其中a表示形容詞、b表示區(qū)別詞、c表示連詞、d表示副詞、h表示前綴詞、j表示簡 稱詞、k表示后綴詞、m表示數(shù)詞、n表示名詞、p表示介詞、q表示量詞、r表示代詞、u表示助詞、z表示狀態(tài)詞,等等。
下面結合附圖和具體實施方式對本發(fā)明作進一步詳細地說明。下面,無論是一個短的語句,還是長的文章,我們都統(tǒng)稱文本。
一種漢語兼語結構獲取系統(tǒng)和方法分為四個主要模塊:
模塊A:對原始訓練語料庫Corpus進行分詞,形成分詞語料庫TCorpus。
模塊B:識別分詞語料庫TCorpus中的每條語句Si中的動詞。
模塊C:應用兼語模式對TCorpus中的語句進行分析,對滿足兼語模式的語句形成候選兼語結構,并且置入待驗證的兼語結構庫SOBase中。
模塊D:驗證候選兼語結構庫SOBase,并輸出最終結果SOBaseResult。
下面詳細解釋各個模塊的工作流程或方法。
模塊A:對原始訓練語料庫Corpus進行分詞,形成分詞語料庫TCorpus。
我們采用一個開源的ICTCLAS系統(tǒng)對Corpus中的每篇輸入文本D進行分詞,并且將每篇文本按照句子的自然分割進行分拆,形成不含有句子標點符號的簡單句。因此,TCorpus每個句子的形式為Si=“W1/pos1 W2/pos2…Wi/posi…Wn/posn”,其中每個Wi是一個漢語詞、漢字、標點符號、阿拉伯數(shù)字、英文單詞或字母,posi是其對應的詞性。
在分詞算法中,詞性的標記已經在計算機界通行。通常的詞性有a表示形容詞、b表示區(qū)別詞、c表示連詞、d表示副詞、h表示前綴詞、j表示簡稱詞、k表示后綴詞、m表示數(shù)詞、n表示名詞、p表示介詞、q表示量詞、r表示代詞、u表示助詞、z表示狀態(tài)詞等。例如,語句“組委會邀請他們參加會議”的分詞結果為:“老師/n 認真地/d 講/v 給/v 那些/r 學生/n聽/n”。
模塊B:識別分詞語料庫TCorpus中的每條語句Si中的動詞或動詞詞組。
對TCorpus中的每條語句Si,如果出現(xiàn)“W1/v W2/v”,則按照“W1W2/v”進行合并處理,即將兩個或兩個以上的動詞,合并為一個動詞,稱此過程為動詞合并處理。例如,語句“老師/n 講/v 給/v 那些/r 學生/n 聽/v”,經過上述處理后,得到一個動詞詞組“講給”,從 而得到兼語句“老師/n 講給/v 那些/r 學生/n 聽/v”。這樣做的目的是盡可能多地獲得兼語結構。
在上述處理后,對修飾動詞的副詞進行消除處理,即將動詞前的所有修飾副詞全部刪除。例如,語句“老師/n 認真地/d 講/v 給/v 那些/r 學生/n 聽/v”,經過動詞合并處理后,得到兼語句“老師/n 認真地/d 講給/v 那些/r 學生/n 聽/v”。再經過副詞刪除處理后,得到兼語句“老師/n 講給/v 那些/r 學生/n 聽/v”。
本發(fā)明仍將處理后的語句放入TCorpus中。
模塊C:應用兼語模式對TCorpus中的語句進行分析,對滿足兼語模式的語句形成候選兼語結構,并且置入待驗證的兼語結構庫SOBase中。
所述應用兼語模式對TCorpus中的語句進行分析,是指采用前述設計的5種兼語模式,將TCorpus中的符合兼語模式之一的語句挑選出來,置入待驗證的兼語結構庫SOBase中。
具體而言,對TCorpus中任一語句SOi,如果它含有超過2的動詞,或者僅含有1個動詞,則放棄該句;否則,設SOi的形式為“Ni,1 Vi,1 Ni,2 Vi,2 Ni,3”(這里,下標i代表第i個語句意思)。下面的主要任務是檢查Ni,2是否滿足5種兼語模式之一。如果滿足5種兼語模式之一,則將二元對<“Vi,1…Vi,2”,“Ni,1 Vi,1 Ni,2 Vi,2 Ni,3”>放入SOBase中;否則,放棄SOi。
例如,對兼語句“老師/n 講給/v 那些/r 學生/n 聽/v”,“那些/r 學生/n”滿足兼語模式4,因此本發(fā)明認為根據(jù)兼語句“老師/n 講給/v 那些/r 學生/n 聽/v”獲得兼語結構“講給…聽”是一個兼語結構,而將<“講給…聽”,“老師/n 講給/v 那些/r 學生/n 聽/v”>放入候選兼語結構庫SOBase中,由模塊D進一步驗證。
模塊D:驗證候選兼語結構庫SOBase,并輸出最終結果SOBaseResult。
對候選兼語結構庫SOBase中的每條記錄<“Vi,1…Vi,2”,“Ni,1 Vi,1 Ni,2 Vi,2 Ni,3”>,本發(fā)明提出了兩種驗證技術:兼語搭配常見性驗證、兼語搭配多樣性,它們都是確保兼語結構正確的必要條件。
所述兼語搭配常見性驗證,是指如果SOi=“Ni,1 Vi,1 Ni,2 Vi,2 Ni,3”是一個正確的兼語句,則兼語結構“Vi,1…Vi,2”在TCorpus中的其他語句中出現(xiàn),而不是僅僅出現(xiàn)在兼語句SOi中。
例如,SOi=“組委會 邀請 他們 參加 會議”。那么SOi,1=“主持人 邀請 他們 參與 互動”和SOi,2=“主人 邀請 他們 共進 午餐”也會在TCorpus中的其他語句中出現(xiàn);也即SOi,1和SOi,2不是僅僅依賴于SOi這種特殊的兼語句。
所述兼語搭配多樣性驗證,是指如果SOi=“Ni,1 Vi,1 Ni,2 Vi,2 Ni,3”是一個正確的兼語句,那么形如SO′i=“N′i,1 Vi,1 N′i,2 Vi,2 N′i,3”、SO″i=“N″i,1 Vi,1 N″i,2 Vi,2 N″i,3”等的兼語句在TCorpus也應該多次出現(xiàn)。
例如,SOi=“組委會 邀請 他們 參加 會議”,那么SO′i=“朋友 邀請 我們 參加 生日 聚會”、SO″i=“朋友 邀請 她 參加 婚禮”、SO″′i=“教授 邀請 這些 留學生 參加 交流會”。也就是說,在SOi=“組委會 邀請 他們 參加 會議”中,兼語“他們”是可以被多種形式的詞語所代替,而SOi中的兼語結構“邀請…參加”依然合理和正確。
根據(jù)上述對兼語搭配常見度、兼語搭配多樣性的分析和解釋,下面給出模塊D的實施方法:首先引入兩個非負的閾值a和b,其中a∈(0,1],b∈(0,1]
步驟D1:設置SOBaseResult為空,用以保存驗證過的、正確的兼語結構的結果。
步驟D2:如果SOBase空,則轉步驟D6。
步驟D3:對SOBase中的任一一個記錄<“Vi,1…Vi,2”,“Ni,1 Vi,1 Ni,2 Vi,2 Ni,3”>,將<“Vi,1…Vi,2”,“Ni,1 Vi,1 Ni,2 Vi,2 Ni,3”>從SOBase中取出。
步驟D4:如果cof(“Vi,1…Vi,2”)>a,那么將“Vi,1…Vi,2”放入集合SOBaseResult中,轉步驟D2。
所述cof(“Vi,1…Vi,2”)反映了兼語結構“Vi,1…Vi,2”的常見性,它的計算如下:cof(“Vi,1…Vi,2”)=TCorpus含有“Vi,1…Vi,2”結構語句條數(shù)/TCorpus中的語句數(shù)。當cof(Vi,1…Vi,2)>a時,將“Vi,1…Vi,2”視為一個正確的兼語結構。
步驟D5:如果muf(“Vi,1…Vi,2”)>b,那么將“Vi,1…Vi,2”放入集合SOBaseResult中。
所述muf(“Vi,1…Vi,2”)是一個刻畫兼語搭配多樣性的數(shù)學方法,它的計算子步驟如下:開始時,設置V*,1和V*,2為空集合。
步驟D51:在SOBase中,如果存在<“Vx…Vi,2”,“Ni,1 Vx Ni,2 Vi,2 Ni,3”>,那么將Vx放入集合V*,1中。
步驟D52:在SOBase中,如果存在<“Vi,1…Vy”,“Ni,1 Vi,1 Ni,2 Vy Ni,3”>,那么將Vy放入集合V*,2中。
步驟D53:計算muf(“Vi,1…Vi,2”):計算公式如下:
步驟D6:輸出最終兼語結構結果SOBaseResult。
實驗效果
經過多次初步的實驗,兼語搭配常見性a的閾值設為0.0006(即a=0.0006)和兼語搭配多樣性閾值b設為0.0015(即b=0.0015)所獲得的兼語結果效果較好。在經過1TB語料的測試驗證后,本發(fā)明的系統(tǒng)獲得了13.96萬對兼語結構,經過分析,準確性達到98.2%。因此,本發(fā)明取得了較好的識別性能,已經達到了實際應用的目的。