中文分詞技術介紹
隨著需求的變化和技術的發展,網際網路企業對資料的分析越來越深入,尤其是自然語言處理處理領域,近幾年,在搜尋引擎、資料探勘、推薦系統等應用方面,都向前邁出了堅實的步伐。自然語言處理領域涉及的技術非常多,為了讓對此領域感興趣的同學能夠快速入門,在這裡介紹一下中文資訊處理的基本技術:中文分詞。
說分詞是中文處理的基本技術,是由漢語的特點決定的。漢語的有些單字沒有意義,多字合起來才有意義,比如煙囪的“囪”,“尬尷”;有些是單字雖然有意義,但組合之後,意思發生改變,比如“白菜”,“李世民”。有些系統雖然可以直接使用單字,比如檢索系統中基於字的檢索按單字建立索引,雖然可以滿足基本功能,但存在運算量大、檢索準確率低的問題
中文分詞的任務是把一連串的單字按詞分開,比如,這是一個原始句子:
李明是一名優秀的學生。
經過分詞處理的結果為:
李明 是 一 名 優秀 的 學生 。
在這裡,分詞面臨的第一個問題是如何定義一個詞。比如“自然語言處理”,可以作為一個詞,也可以切分為:
(1) 自然 語言 處理
(2) 自然語言 處理
關於中文詞的定義並沒有統一的標準,語言學家從不同的角度對詞進行定義,而這些定義往往彼此並不完全相容。實際專案中的分詞主要關注於切分出的詞單元是否能服務於上層的資訊處理,
分詞系統的詞主要由詞表來確定,詞表是分詞系統自帶的通用詞表,裡面的詞彙與領域無關。如果文字中的詞語在詞表中出現,則按照詞表進行切分,如果未在詞表中出現,則屬於未登入詞,需要進行未登入詞識別。值得注意的是,分詞中的詞語劃分不是從語言學的角度,而完全是從應用的角度考慮,例如,“毛澤東”這個詞在詞表中已存在,則它屬於通用詞彙,不屬於未登入詞中的中國人名。
中文分詞涉及的問題較多,下面對各方面的問題做一個簡單的介紹。
1 最大匹配法
最大匹配法的分詞實現很簡單,並且可以滿足一些對分詞準確率要求不高的
(1)正向最大匹配法(Forward Maximum Matching, FMM)
(2)逆向最大匹配法(Reverser Maximum Matching, RMM)
(3)雙向最大匹配法(Bi-directional Maximum Matching, BMM)
設S'為句子S的一個子串,詞表中最長詞的字數為m,正向最大匹配法的過程描述如下:
初始化:指標p1指向句子的首位置
演算法執行:
(1) 如果p1到達句子末尾,分詞結束;
(2) p2 = p1 + m;
(3) 如果p1和p2之間的字串S'在詞表中不存在,p2--,重複(3);
(4) 如果p1和p2之間的字串S'在詞表中存在,則S'是一個詞,p1 = p2+1,轉(1);
逆向最大匹配法從句尾開始對句子進行掃描,演算法的過程描述如下:
初始化:指標p1指向句子的末尾位置
演算法執行:
(1) 如果p1到達句子首位置,分詞結束;
(2) p2 = p1 - m;
(3) 如果p1和p2之間的字串S'在詞表中不存在,p2++,重複(3);
(4) 如果p1和p2之間的字串S'在詞表中存在,則S'是一個詞,p1 = p2-1,轉(1);
兩種匹配方法只是對句子掃描的方向不同,如果句子中不存在歧義,則分詞的結果是一致的。但如果存在歧義,則切分結果不完全相同。例如,設詞典中最長詞的字數為7,輸入的句子為:他是研究生物化學的。兩種方法的切分結果如下:
FMM切分結果:他 是 研究生 物化 學 的 。
RMM切分結果:他 是 研究 生物 化學 的 。
實驗表明,在減少歧義方面,逆向最大匹配法比正向最大匹配法有效一些。樑南元的實驗結果顯示,在詞典完備、沒有任何其它知識的條件下,正向最大匹配法的錯誤切分率為1/169,逆向最大匹配法的錯誤切分率為1/245,這主要是因為漢語中心詞多在詞的右部的原因。
無論正向匹配還是逆向匹配,均無法發現句子中的歧義,實際的分詞演算法中,常使用雙向最大匹配法來檢測歧義:比較FMM和RMM的切分結果,其中不一致的地方即是存在歧義的字串。如上例中,“研究生物化學”的切分結果不一致,則該字串中存在歧義。分詞演算法中,常利用雙向最大匹配法發現歧義,再進一步對歧義詞進行切分。
2 歧義詞切分
分詞中的歧義有兩類,組合型歧義和交集型歧義,兩種歧義的詳細定義這裡不討論。 一般性的定義可以表述為:
A、X、B分別為漢字串,如果其組成的漢字串AXB滿足AX和XB同時為詞,則漢字串AXB為交集型歧義欄位。
例如:“研究生命的起源”可以切分為
研究 生命 的 起源
研究生 命 的 起源
“研究生命”為交集歧義欄位。
漢字串AB滿足A、B、AB同時為詞,則該漢字串為組合型歧義欄位。
例如: “他從馬上下來”可以切分為
他 從 馬 上 下來
他 從 馬上 下來
“馬上”為組合型歧義欄位
在實際的分詞中,大部分交集型歧義並不會構成負面的影響,因為其在整體的語料中出現的比例比較低。對組合型歧義欄位,也存在著類似的問題,很多二字詞在理論上都可能存在組合歧義,比如“位置”一詞,一般不認為它存在歧義,但是在特殊的語境中,如“第7位置1”,確實出現了組合歧義。但由於這種情況在真實的語境中從不發生或很少發生,人們並不認為它是有歧義的,而主要關注那些切分難度大的歧義欄位。
對那些經常發生組合型歧義的欄位,可以先收集標註語料中的歧義欄位,統計歧義欄位的上下文資訊,然後為每個歧義欄位制定對應規則或訓練出相應的分類器,在新的語言環境,根據給定的上下文進行預測。
很多實際的分詞系統中,並不考慮句子中歧義欄位的歧義型別,而是利用概率模型對句子做統一的處理。
3 未登入詞識別
未登入詞是指沒有在詞表中出現的詞,也稱作OOV(out of vocabulary)。一般來說,未登入詞包括以下幾類:
中國人名,如:韋小寶,趙一曼
外國人名,如:哈迪庫斯,卡里姆·哈傑姆
地名,如:李家莊,熱那亞
機構名,如:新華社,聯合國
其他專有名詞,如:白虎團,道—瓊斯
數詞,如:50%,300萬
時間詞,如:1992年,29日
詞語的重疊形式,如:看看,看一看,打聽打聽,高高興興
專業術語,如:線性迴歸,韋特比演算法
新詞,如:非典,部落格
上述的未登入詞類別較廣,識別的難度相差很大,實際的工作往往傾向於聚焦在比較窄的範圍內,以減少難度,提高效能。一般來說,複雜機構名通常由命名實體識別來完成,新詞通常由專門的新詞發現工作負責,專業領域的術語通常由資訊抽取工作負責。數詞、時間詞、詞語的變形組合可以通過制定語法規則進行的處理。這裡主要介紹人名、地名這兩類未登入詞的識別。
未登入詞識別的困難主要有兩類,一類是歧義問題,包括未登入詞的內部歧義,以及未登入詞同上下文發生的外部歧義,如下面的情況:
(1) 未登入詞中含有詞表中的詞。例如人名“張朝陽”、“王國維”中的“朝陽”和“王國”分別是普通名詞,未登入詞識別容易將人名拆開。
(2) 未登入詞同上下文形成交集歧義。例如,
現任主席為何魯麗
鄧穎超生前珍藏的書畫作品。
另一類是未登入詞的用字同正常用字發生混淆,包括兩種情況:
(1) 未登入詞中的字為常用字或含有表示動詞成分,如
陳忠和率領的中國女排
成思危來到人民日報社
(2) 未登入詞常用字作為句子中的正常用字,如
你到底是何居心?
賈思勰的《齊民要術》
未登入詞的識別主要有兩種策略,基於規則的方法和基於統計的方法。基於規則的方法中,需要先分析統計各種未登入詞的規律,將其儲存在知識庫中。分詞時,根據知識庫直接對可能的漢字串進行未登入詞判別。由於未登入詞多由連續的單字構成,經過初始的詞語切分之後,句子中的連續單字串即為可能的未登入詞。未登入詞的規律主要包括以下幾部分:
l 內部規律。很多未登入詞在用字上有自己的特定規律,例如,對中國人名,主要形式為“姓+名”,可以統計出常用的姓氏用字和名字用字,以及每個字作為姓氏或名字的概率,名字包括名字的中間字和末尾字。對外國人名,可以統計出常用的人名譯名及其概率。地名的結尾字有很強的規律性,通常包括各級行政區域的名稱,如省、市、縣等;居民聚落名稱,如村、屯、莊等;以及山、河、湖、海、島嶼、高原等自然地理實體名稱。
l 外部規律。未登入詞的上下文經常會有一些特定的詞語出現,例如,人名的上下文常出現如“先生、同志、女士、教授、經理、總理”等稱謂詞。人名前面常出現“說,表示,批評”等動作詞。地名的上下文通常會有一些介詞,如“在”,以及方位詞,如“裡,上”等。外部上下文對對未登入詞的識別非常重要,有時候會起著決定性的作用,比如“華盛頓”一詞,如果不借助上下文,就無法判斷這個詞是人名還是地名。
l 重複出現規律。一般來說,有些實體的名稱在篇章中會多次出現,這為未登入詞的識 別提供了一個判斷依據。如果一篇文章中多次出現相同的單字片段,並且這些單字作為單字詞的概率並不高,這樣的單字片段很可能屬於未登入詞。
另外,也可以儘可能多地收集人名、地名等專有詞語,製作一個專有詞彙表,既能提高未登入詞識別的準確率,又能提高處理的速度。
規則方法的優點是,建成的知識庫具有通用性,可以通用於不同的未登入詞識別模組中,不必再借助於訓練資料。但是在總結規則時,以及計算未登入詞不同部分的構詞概率方面,需要較大的工作量。所以,只依靠訓練語料,不需要人工干預的統計方法受到了人們的重視。
4 語料及評測
1.語料標註
目前實用的中文分詞系統,多數都是通過統計學習的方法構建的。其過程是先利用一個已標註好的語料庫作為訓練資料,對這些資料進行統計學習,將統計的概率資訊作為分詞器的引數。
作為知識的來源,標註的語料對分詞的效能起著至關重要的作用。衡量一個語料的好壞主要有這幾個指標:
(1) 標註規範
標註規範解決的是詞的定義問題,比如什麼樣的單元算一個詞,有些詞應該分開還是合併,如何處理語法變形詞語等等。一般來說,制定一個好的分詞規範除了要對分詞問題有比較深刻的理解,還需要有較強的語言學知識。
(2) 標註的一致性
一個大規模的語料通常是由多個人共同標註,由於不同標註者對規範的理解存在差異(即使同一個人在不同的時間對規範的理解也可能不一致),常會導致標註不一致的現象發生。比如字串“緊跟”,有時被標註為一個詞,有時會將其分開。這種不一致將影響訓練引數,進而在分詞時發生錯誤。
(3) 錯誤率
人工校對時仍難免發生疏忽,一個大型的語料庫很難百分之百標註正確。如果將標註的錯誤率控制在一個較小範圍內,並不會對分詞的訓練造成太大的影響。
(4) 語料的規模和平衡
語料規模是指語料的大小,一般來說,語料的規模越大,包含的資訊越多,訓練的效果也越好。但這並不是絕對的,還有一個重要的因素是語料是否平衡。一個平衡的語料,應該包含儘量廣泛的題材。如果一個語料只包含政治類內容,即使規模再大,對體育類的文字進行分析時也會存在困難。
語料標註的過程通常先利用一個已有的分詞程式對原始文字進行自動分詞,然後由人工進行校對。目前最著名的、分詞系統使用最多的簡體中文語料是北京大學計算語言學研究所加工的“人民日報標註語料庫”。該語料庫把文章中的語句按詞切開,並對每個詞標上詞性標記。標註後的形式為:
美國/ns 馬里蘭州/ns 的/u 蓋茨堡鎮/ns 近日/t 舉辦/v 新年/t 燈展/n 。/w
每個詞的後面是詞性標記,詞與詞之間用空格分開。語料庫的規範以及詞性標記的說明可參考北大制定的標註規範和加工手冊。
2. 評測方法
為了能夠客觀準確地評價分詞系統的效果,需要制定一些指標來對分詞的結果進行評測,常用的評測指標包括準確率P(Precision)、召回率R(Recall)和F值(F Score),它們的計算形式如公式所示.
對於分詞,通常來說以F值做為分詞效果的一個總體評價,準確率和召回率在某種程度上是矛盾的,刻意地追求準確率勢必會造成召回率的下降,同樣,刻意地追求召回率也會造成準確率的下降。F值作為準確率和召回率的調和平均數,可以有效地在二者之間作出一個平衡。
為了評價分詞方法的優勢,比較分詞系統的效能,國際計算語言聯合會(Association for Computational Linguistics, ACL )下設的漢語特別興趣研究組(the ACL Special Interest Group on Chinese Language Processing, SIGHAN) 舉辦了數屆國際漢語分詞評測大賽。組委會事先為參賽者提供一個較大規模的標註語料,供參賽者訓練自己的分詞程式。評測時,組委會發放測試資料,參賽者在三天之內將分詞結果提交,組委會根據參賽者的結果進行綜合打分,排出名次。評測的語料分為簡體中文和繁體中文,對每種語料的評測又分為封閉測試和開放測試。下表列出了第二次分詞評測中基於北大語料(簡體中文)的部分結果。
第二屆國際分詞評測中北大語料前10名分詞系統的F值
Ranking |
Open track |
Closed track |
1 |
0.969 |
0.950 |
2 |
0.967 |
0.950 |
3 |
0.967 |
0.949 |
4 |
0.965 |
0.946 |
5 |
0.965 |
0.944 |
6 |
0.964 |
0.942 |
7 |
0.962 |
0.941 |
8 |
0.962 |
0.941 |
9 |
0.957 |
0.940 |
10 |
0.952 |
0.934 |
表中依次列出了F值最高的前10個參賽系統,從表中能夠看出,分詞系統已經達到了較高的效能,並且各個系統之間,尤其是前3名的系統之間相差無幾,說明分詞技術已經基本成熟。但也應該注意到,這種評測的訓練集和測試集均為同一類資料,如果分析和訓練資料不是同一型別的文字時,其效能將會受到影響。
SIGHAN的分詞評測已經在去年關閉了,這種競賽形式的評測有效地促進了中文分詞的研究進展,每次評測都有十多家單位參賽,並不斷有新的方法應用於分詞之中。