高嘉琦,趙慶聰,2
(1.北京信息科技大學 信息管理學院,北京 100192;2.綠色發展大數據決策北京市重點實驗室,北京 100192)
中國歷史文化源遠流長,有大量的古典文學作品流傳至今,這些作品展現了中華民族從古至今的人文精神,同時也傳承了上下五千年以來優秀的傳統價值觀,是一筆寶貴財富。對古典文學作品進行深入的分析和研究,在文化傳承、歷史研究、人文教育等方面都有十分重要的意義。
對古典文學作品進行文本挖掘,分詞是基礎。目前現代漢語的分詞方法技術已較為成熟,而對古代漢語的分詞處理尚處于探索、驗證階段。國內學者對古文分詞已進行的研究有:石民[1]等采用條件隨機場模型,基于兩個模板進行古文分詞標注一體化,使得準確率和召回率都有所提升。王嘉靈[2]選用條件隨機場模型,以《漢書》為語料,并選擇了核實的特征模板,制定了《漢書》分詞規范,進行分詞實驗,實驗結果的F值達到94.4%。王曉玉等[3]選用中古時期的語料,選用條件隨機場和詞典的方法訓練分詞模型,解決了人工分詞不一致問題。楊世超等[4]采用帶有古漢語特征的條件隨機場模型作為特征模型,獲得了較好的分詞效果。
上述研究都需要大量的人工標注,費時費力,缺乏通用性,也未能提出一種能快速構建古漢語詞庫的有效方法[5]。古典文學作品中有大量的詞匯已不在現代使用,故也未收錄到現代漢語詞典中,這是造成分詞效果差的主要原因,如果對古典文學作品進行新詞發現,構建古漢語分詞詞典,能有效提高分詞的準確率。目前,中文新詞發現的研究主要集中在現代文語料,由于古文在字詞、短語和語法結構方面都與現代文有所不同,所以,現有的現代文語料上的新詞發現技術無法直接應用于古文語料[6]。文中提出一種基于新詞發現的古典文學作品分詞方法。首先,對古典文學作品采用N-Gram算法進行切分,然后采用互信息和左右信息熵的新詞發現方法識別新詞,將新詞發現識別出的新詞與原有的基礎詞典相結合,構建出古文分詞詞典,再使用Jieba中文分詞器對古典文學作品進行分詞,最后通過實驗以檢驗分詞的準確度。
基于規則的新詞發現方法、基于統計的新詞發現方法和基于統計與規則相結合的新詞發現方法是現有常用的新詞發現方法[7]。基于規則的新詞發現方法[7-8]是指使用詞語的特性和成詞的原理和語義的特征來構建數學模型對文本中的新詞進行挖掘。該方法具有較高的準確性,但具有較差的可擴展性、通用性,后期維護也困難,需要人工構建規則庫,會消耗大量的人力和物力,無法滿足新詞出現速度快、消亡快的需求。基于統計的新詞發現方法[8-10]是指通過大量的實驗對文本語料進行處理,計算詞語的詞頻、成詞的概率、左右鄰接熵、鄰接變化數等統計特征來識別新詞。這種新詞發現方法有較強的普適性,方便擴展和移植,不受不同種類文本的限制,但需要對模型進行大量訓練,同時具有準確率較低的缺點。基于規則與統計相結合的新詞發現方法是盡量將兩種方法的優點相結合,從而使新詞發現方法更加準確也更高效[7]。
文中先采用N-Gram算法切分古文語料,得出候選詞集,再采用規則與統計相結合的新詞發現方法,即互信息、左右信息熵的統計特征與停用詞、過濾首尾停用詞等規則相結合,最終實現新詞發現。
N-Gram是一種基于統計語言模型的算法,用于切分語料得出候選詞集,方便后續計算詞語的內部凝固度和自由程度。N-Gram算法的具體思路是:使用大小為N的滑動窗口對文本語料按字節流進行滑動操作,形成每個字節的片段稱為gram,形成的片段是長度為N的字節片段序列,提前設定閾值對gram按照出現的頻度進行過濾,形成關鍵gram列表,列表中的每一種gram均為一個特征向量維度[11]。一般情況下,取N=3的情況較多。如果N的取值太大,會造成等價類太多,自由參數過多。
在信息論相關領域中,互信息(mutual information)是指兩個事件集合之間的相關性,是一種有用的信息度量[12]。互信息度量的是兩個隨機變量之間的統計相關性,是從隨機變量整體角度,在平均的意義上觀察問題,因此通常稱之為平均互信息。互信息表示兩個變量或多個變量之間共享的信息量,互信息越大,變量之間的相關性越強[13]。在文中,詞語是文章的最小結構形式,可以獨立存在,詞語中的相鄰的字之間都有一定的關聯性。如果詞語中字與字的這種關聯性越大,說明可能是詞的可能性也就越大。可以用互信息計算新詞的內部成詞概率,互信息一般可用于表示兩個事件相互關聯的程度,互信息值越大,表示兩個物體的關聯程度也就越大。在詞匯聚類、漢語自動分詞、詞義消歧、文本分類和聚類等問題的研究中,互信息也具有重要用途。互信息用以下公式來計算:
(1)
其中,p(m)表示字符m單獨出現在語料集中的概率;p(n)表示字符n單獨出現在語料集中的概率;p(m,n)表示字符m和字符n組合起來共同出現在語料集中的概率;PMI(m,n)表示字符m和字符n的相互關聯程度。若PMI(m,n)>0,表示字符m和字符n是相互關聯的,而且PMI的值越大,表示兩者相互關聯的程度越大,也就越有可能成為新詞;若PMI(m,n)=0,則表示字符m和字符n是彼此獨立的。
熵是信息論的基本概念。熵又稱為自信息,熵可以作為數量用來描述一個隨機變量的不確定性。若用來描述隨機變量的熵越大,那這個隨機變量的不確定性越大,越不確定的隨機變量越需要大的信息量用以確定其值,正確估計其值的可能性就越小。信息的作用是消除人們對事物的不確定性,信息熵是對信息的量化度量,信息熵值越大則事物的不確定性也越大,所需要的信息量也就越大。候選新詞的左邊鄰接詞和右邊鄰接詞的不確定性可以用左右信息熵來衡量,其不確定性越大,說明該詞的周邊詞越豐富,其成詞的概率就越高。左信息熵和右信息熵的計算公式為:
E(prew)=-sum(p(prew)log2p(prew))
(2)
其中,prew是候選詞鄰接字的集合,p(prew)表示候選詞的左右鄰接字的條件概率。
對古典文學作品進行分詞是對古典文學作品進行研究的基礎。基于詞表的分詞方法和基于統計的分詞方法是目前古漢語的自動分詞任務常用的方法[14]。基于詞表的分詞方法需要人工標注詞匯構建古籍文本詞典,通過古籍文本詞典進行分詞[5]。這種分詞方法準確率較高,但要耗費大量的人力物力,具有局限性;基于統計的分詞方法需要訓練人工標注的分詞語料,使用學習模型,從而實現古籍文本自動分詞。以上兩種方法都需要先進行人工標注訓練集,人工標注需要較高的專業知識,而且需要大量時間,難度和成本都比較高。
文中首先使用N-gram算法對古文語料進行切分,統計各個詞的詞頻,使用詞頻和過濾停用詞等相關規則進行初步篩選,得到初始詞表;然后用互信息計算內部凝固度來對詞表進行第二次篩選;最后用左右信息熵對二次篩選后的詞語計算其自由程度,根據自由度值進行再次篩選,最終確定新詞詞表。將獲得的新詞詞表添加到Jieba中文分詞器中,形成古文分詞詞典,再對古典文學作品進行分詞。這種方法省去了人工標注環節,可快速構建古文分詞詞典。分詞流程如圖1所示。
本研究選用了經典的文言文章回小說作為文本語料。著名語言文學家王力先生在《古代漢語》中指出:“文言是指以先秦口語為基礎而形成的上古漢語書面語言以及后來歷代作家仿古的作品中的語言”[15]。顧名思義,文言文就是用文言寫成的文章,是中國古代的書面語言,沿用了兩三千年,也是現代漢語的源頭[15]。文言文章回小說篇幅長,既有古文的結構和語法特點,又有相當數量的詞匯沿用到現代,便于研究人員采用現代文的分詞詞庫作為基礎詞典,在此基礎上進行新詞發現。
文中選擇了包括《三國演義》、《聊齋志異》、《鏡花緣》、《說唐》等在內的68部章回小說文本作為基本語料,經統計有27 960 539個漢字。
(1)古文文本預處理。將文本轉換為TXT格式,利用正則表達式過濾非中文符號——將古文文本中用于斷句的標點符號、特殊符號等噪聲數據過濾掉,得到預處理之后的文本語料。
(2)語料切分。使用N-gram算法對預處理過的文本語料從左至右逐字進行切分。由于古典文學作品中有三字詞語,如人名等。設置N為3,并得到1-gram~3-gram包含詞頻的gram詞表,獲得初始候選新詞結果。
(3)計算候選詞的互信息。先將單字過濾掉,然后對其余初始候選新詞計算互信息,若該詞語的互信息大于設置的閾值,將其保留,生成候選新詞集。
(4)計算候選詞的左右信息熵。對候選詞進行左信息熵和右信息熵的統計,將左信息熵和右信息熵相加,得到左右信息熵。設置左右信息熵的閾值,若該詞的左右信息熵大于設置的閾值,將其保留,最終得到新詞集。
算法流程如圖2所示。
文中以文言文章回小說《三國演義》為例,展示使用基于新詞發現的古典文學作品分詞方法的分詞結果,并對分詞效果進行了分析。
對整篇《三國演義》文本語料進行預處理后,使用N-Gram算法對文本進行切分,切分部分結果如圖3所示。

圖3 N-Gram算法的部分切分結果
對上述切分得到的初始候選新詞計算互信息,互信息值大于設置閾值的保留,生成候選新詞集,得到16 081個候選新詞。
再利用左右信息熵的算法進行篩選,得到最終的新詞集合,獲得3 892個新詞,部分新詞結果如圖4所示。

圖4 新詞發現的部分結果
以《三國演義》第九十八回中的部分語料為例,從中提取了3個新詞:孔明、蜀兵、魏兵。
在加入新詞前使用Jieba中文分詞器進行分詞結果為:所憂者/但/魏延/一軍,在/陳倉道/口/拒住/王雙,急/不能/脫身;吾/已/令人/授以/密計,教/斬/王雙,使/魏人/不敢/來/追。蜀/兵/更/不/回頭。雙/拍馬/趕來。背后/魏/兵/叫/曰:“城外/寨中/火/起,恐/中/敵人/奸計。”后人/有/詩/贊曰:“孔明妙/算/勝/孫/龐,耿若長/星/照/一方。進退/行/兵/神/莫測,陳倉/道口/斬/王雙。”[16]
加入新詞之后,Jieba中文器的分詞結果為:所憂者/但/魏延/一軍,在/陳倉道/口/拒住/王雙,急/不能/脫身;吾/已/令人/授以/密計,教/斬/王雙,使/魏人/不敢/來/追。蜀兵/更/不/回頭。雙/拍馬/趕來。背后/魏兵/叫/曰:“城外/寨中/火/起,恐/中/敵人/奸計。”后人/有/詩贊曰:“孔明/妙算/勝/孫龐,耿若長/星/照/一方。進退/行/兵/神/莫測,陳倉/道口/斬/王雙。”[16]
文中采用準確率P(precision)、召回率R(recall)和F值(F-measure)作為評價指標,來檢驗利用基于互信息與左右信息熵的新詞方法發現的實驗結果,計算公式如下:
(3)
(4)
(5)
其中,N表示實驗獲得的新詞的總數;M表示古典文學作品中本身存在的新詞總數(M值為經古漢語專家人工標注的新詞數量)。
利用文中方法對《三國演義》進行新詞發現,得到的結果如表1所示。

表1 新詞發現評價結果
結合表1和對比分詞結果,雖然新詞發現的準確率、召回率和F值略低,但通過比較加入新詞前后的兩個分詞結果,加入新詞之后分詞的準確度有明顯提高。
文中采用互信息和左右信息熵的新詞發現方法對古典文學作品挖掘未登入的新詞,利用Jieba中文分詞器結合新詞詞表,對古典章回小說進行分詞實驗,分詞效果得到明顯改善。該方法避免了古漢語文本分詞需要大量人工標注的問題,快速構建了古漢語分詞詞典,為后續對古典文學作品的深入研究打下了堅實的基礎。該方法的不足之處是新詞發現的準確率、召回率、F值都不高,未來還需要進一步研究,以提高新詞發現和分詞的準確率。