分詞技術就是搜索引擎針對用戶提交查詢的關鍵詞串進行的查詢處理后根據用戶的關鍵詞串用各種匹配方法進行的一種技術。當然,我們在進行數據挖掘、精准推薦和自然語言處理工作中也會經常用到中文分詞技術。
一、為什么要進行中文分詞?
詞是最小的能夠獨立活動的有意義的語言成分,英文單詞之間是以空格作為自然分界符的,而漢語是以字為基本的書寫單位,詞語之間沒有明顯的區分標記,因此,中文詞語分析是中文信息處理的基礎與關鍵。
Lucene中對中文的處理是基於自動切分的單字切分,或者二元切分。除此之外,還有最大切分(包括向前、向后、以及前后相結合)、最少切分、全切分等等。
二、中文分詞技術的分類
我們討論的分詞算法可分為三大類:基於字典、詞庫匹配的分詞方法;基於詞頻度統計的分詞方法和基於字標注的分詞方法。
第一類方法應用詞典匹配、漢語詞法或其它漢語語言知識進行分詞,如:正向最大匹配法、逆向最大匹配法、最小匹配方法等。這類方法簡單、分詞效率較高,但漢語語言現象復雜豐富,詞典的完備性、規則的一致性等問題使其難以適應開放的大規模文本的分詞處理(比如未登錄詞)。
第二類基於統計的分詞方法則基於字和詞的統計信息,如把相鄰字間的信息、詞頻及相應的共現信息等應用於分詞,由於這些信息是通過調查真實語料而取得的,因而基於統計的分詞方法具有較好的實用性。
第三類基於字標注的分詞方法實際上是構詞方法。即把分詞過程視為字在字串中的標注問題。由於每個字在構造一個特定的詞語時都占據着一個確定的構詞位置(即詞位),假如規定每個字最多只有四個構詞位置:即B(詞首),M (詞中),E(詞尾)和S(單獨成詞),那么下面句子(甲)的分詞結果就可以直接表示成如(乙)所示的逐字標注形式:
(甲)分詞結果:/上海/計划/N/本/世紀/末/實現/人均/國內/生產/總值/五千美元/。
(乙)字標注形式:上/B海/E計/B划/E N/S 本/s世/B 紀/E 末/S 實/B 現/E 人/B 均/E 國/B 內/E生/B產/E總/B值/E 五/B千/M 美/M 元/E 。/S
首先需要說明,這里說到的“字”不只限於漢字。考慮到中文真實文本中不可避免地會包含一定數量的非漢字字符,本文所說的“字”,也包括外文字母、阿拉伯數字和標點符號等字符。所有這些字符都是構詞的基本單元。當然,漢字依然是這個單元集合中數量最多的一類字符。
下面簡要介紹幾種常用方法:
1)逐詞遍歷法。
逐詞遍歷法將詞典中的所有詞按由長到短的順序在文章中逐字搜索,直至文章結束。也就是說,不管文章有多短,詞典有多大,都要將詞典遍歷一遍。這種方法效率比較低,大一點的系統一般都不使用。
2)基於字典、詞庫匹配的分詞方法(機械分詞法)
這種方法按照一定策略將待分析的漢字串與一個“充分大的”機器詞典中的詞條進行匹配,若在詞典中找到某個字符串,則匹配成功。識別出一個詞,根據掃描方向的不同分為正向匹配和逆向匹配。根據不同長度優先匹配的情況,分為最大(最長)匹配和最小(最短)匹配。根據與詞性標注過程是否相結合,又可以分為單純分詞方法和分詞與標注相結合的一體化方法。常用的方法如下:
a、最大正向匹配法 (MaximumMatchingMethod)通常簡稱為MM法。其基本思想為:假定分詞詞典中的最長詞有i個漢字字符,則用被處理文檔的當前字串中的前i個字作為匹配字段,查找字典。若字典中存在這樣的一個i字詞,則匹配成功,匹配字段被作為一個詞切分出來。如果詞典中找不到這樣的一個i字詞,則匹配失敗,將匹配字段中的最后一個字去掉,對剩下的字串重新進行匹配處理…… 如此進行下去,直到匹配成功,即切分出一個詞或剩余字串的長度為零為止。這樣就完成了一輪匹配,然后取下一個i字字串進行匹配處理,直到文檔被掃描完為止。
其算法描述如下:
(1)初始化當前位置計數器,置為0;
(2)從當前計數器開始,取前2i個字符作為匹配字段,直到文檔結束;
(3)如果匹配字段長度不為0,則查找詞典中與之等長的作匹配處理。
如果匹配成功,
則,
a)把這個匹配字段作為一個詞切分出來,放入分詞統計表中;
b)把當前位置計數器的值加上匹配字段的長度;
c)跳轉到步驟2);
否則
a) 如果匹配字段的最后一個字符為漢字字符,
則
①把匹配字段的最后一個字去掉;
②匹配字段長度減2;
否則
①把匹配字段的最后一個字節去掉;
②匹配字段長度減1;
b)跳轉至步驟3);
否則
a)如果匹配字段的最后一個字符為漢字字符,
則 當前位置計數器的值加2;
否則當前位置計數器的值加1;
b)跳轉到步驟2)。
b、逆向最大匹配法 (ReverseMaximumMatcingMethod)通常簡稱為RMM法。RMM法的基本原理與MM法相同 ,不同的是分詞切分的方向與MM法相反,而且使用的分詞辭典也不同。逆向最大匹配法從被處理文檔的末端開始匹配掃描,每次取最末端的2i個字符(i字字串)作為匹配字段,若匹配失敗,則去掉匹配字段最前面的一個字,繼續匹配。相應地,它使用的分詞詞典是逆序詞典,其中的每個詞條都將按逆序方式存放。在實際處理時,先將文檔進行倒排處理,生成逆序文檔。然后,根據逆序詞典,對逆序文檔用正向最大匹配法處理即可。
說明
由於漢語中偏正結構較多,若從后向前匹配,可以適當提高精確度。所以,逆向最大匹配法比正向最大匹配法的誤差要小。統計結果表明 ,單純使用正向最大匹配的錯誤率為 1/169,單純使用逆向最大匹配的錯誤率為 1/245。例如切分字段“碩士研究生產”,正向最大匹配法的結果會是“碩士研究生 / 產”,而逆向最大匹配法利用逆向掃描,可得到正確的分詞結果“碩士 / 研究 / 生產”。
當然,最大匹配算法是一種基於分詞詞典的機械分詞法,不能根據文檔上下文的語義特征來切分詞語,對詞典的依賴性較大,所以在實際使用時,難免會造成一些分詞錯誤,為了提高系統分詞的准確度,可以采用正向最大匹配法和逆向最大匹配法相結合的分詞方案(即雙向匹配法)
C、最少切分法:使每一句中切出的詞數最小。
D、雙向匹配法:將正向最大匹配法與逆向最大匹配法組合。先根據標點對文檔進行粗切分,把文檔分解成若干個句子,然后再對這些句子用正向最大匹配法和逆向最大匹配法進行掃描切分。如果兩種分詞方法得到的匹配結果相同,則認為分詞正確,否則,按最小集處理。
3). 全切分和基於詞的頻度統計的分詞方法
基於詞的頻度統計的分詞方法是一種全切分方法。在討論這個方法之前我們先要明白有關全切分的相關內容。
全切分
全切分要求獲得輸入序列的所有可接受的切分形式,而部分切分只取得一種或幾種可接受的切分形式,由於部分切分忽略了可能的其他切分形式,所以建立在部分切分基礎上的分詞方法不管采取何種歧義糾正策略,都可能會遺漏正確的切分,造成分詞錯誤或失敗。而建立在全切分基礎上的分詞方法,由於全切分取得了所有可能的切分形式,因而從根本上避免了可能切分形式的遺漏,克服了部分切分方法的缺陷。
全切分算法能取得所有可能的切分形式,它的句子覆蓋率和分詞覆蓋率均為100%,但全切分分詞並沒有在文本處理中廣泛地采用,原因有以下幾點:
a)全切分算法只是能獲得正確分詞的前提,因為全切分不具有歧義檢測功能,最終分詞結果的正確性和完全性依賴於獨立的歧義處理方法,如果評測有誤,也會造成錯誤的結果。
b)全切分的切分結果個數隨句子長度的增長呈指數增長,一方面將導致龐大的無用數據充斥於存儲數據庫;另一方面當句長達到一定長度后,由於切分形式過多,造成分詞效率嚴重下降。
基於詞的頻度統計的分詞方法:
這是一種全切分方法。它不依靠詞典,而是將文章中任意兩個字同時出現的頻率進行統計,次數越高的就可能是一個詞。它首先切分出與詞表匹配的所有可能的詞,運用統計語言模型和決策算法決定最優的切分結果。它的優點在於可以發現所有的切分歧義並且容易將新詞提取出來。
4).基於知識理解的分詞方法(基於字標注)
該方法主要基於句法、語法分析,並結合語義分析,通過對上下文內容所提供信息的分析對詞進行定界,它通常包括三個部分:分詞子系統、句法語義子系統、總控部分。在總控部分的協調下,分詞子系統可以獲得有關詞、句子等的句法和語義信息來對分詞歧義進行判斷。這類方法試圖讓機器具有人類的理解能力,需要使用大量的語言知識和信息。由於漢語語言知識的籠統、復雜性,難以將各種語言信息組織成機器可直接讀取的形式。因此目前基於知識的分詞系統還處在試驗階段。
5).一種新的分詞方法
並行分詞方法:這種分詞方法借助於一個含有分詞詞庫的管道進行 ,比較匹配過程是分步進行的 ,每一步可以對進入管道中的詞同時與詞庫中相應的詞進行比較 ,由於同時有多個詞進行比較匹配 ,因而分詞速度可以大幅度提高。這種方法涉及到多級內碼理論和管道的詞典數據結構。