分詞技術就是搜索引擎針對用戶提交查詢的關鍵詞串進行的查詢處理後根據用戶的關鍵詞串用各類匹配方法進行的一種技術。固然,咱們在進行數據挖掘、精準推薦和天然語言處理工做中也會常常用到中文分詞技術。算法
1、爲何要進行中文分詞?數據庫
詞是最小的可以獨立活動的有意義的語言成分,英文單詞之間是以空格做爲天然分界符的,而漢語是以字爲基本的書寫單位,詞語之間沒有明顯的區分標記,所以,中文詞語分析是中文信息處理的基礎與關鍵。數據結構
Lucene中對中文的處理是基於自動切分的單字切分,或者二元切分。除此以外,還有最大切分(包括向前、向後、以及先後相結合)、最少切分、全切分等等。搜索引擎
2、中文分詞技術的分類spa
咱們討論的分詞算法可分爲三大類:基於字典、詞庫匹配的分詞方法;基於詞頻度統計的分詞方法和基於字標註的分詞方法。索引
第一類方法應用詞典匹配、漢語詞法或其它漢語語言知識進行分詞,如:正向最大匹配法、逆向最大匹配法、最小匹配方法等。這類方法簡單、分詞效率較高,但漢語語言現象複雜豐富,詞典的完備性、規則的一致性等問題使其難以適應開放的大規模文本的分詞處理(好比未登陸詞)。文檔
第二類基於統計的分詞方法則基於字和詞的統計信息,如把相鄰字間的信息、詞頻及相應的共現信息等應用於分詞,因爲這些信息是經過調查真實語料而取得的,於是基於統計的分詞方法具備較好的實用性。字符串
第三類基於字標註的分詞方法其實是構詞方法。即把分詞過程視爲字在字串中的標註問題。因爲每一個字在構造一個特定的詞語時都佔據着一個肯定的構詞位置(即詞位),假如規定每一個字最多隻有四個構詞位置:即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).一種新的分詞方法
並行分詞方法:這種分詞方法藉助於一個含有分詞詞庫的管道進行 ,比較匹配過程是分步進行的 ,每一步能夠對進入管道中的詞同時與詞庫中相應的詞進行比較 ,因爲同時有多個詞進行比較匹配 ,於是分詞速度能夠大幅度提升。這種方法涉及到多級內碼理論和管道的詞典數據結構。