中文與西方文字不同,西方文字如英文的單詞間有空格作為分隔,計算機很容易把乙個個詞分開。而中文句子裡的之間沒有分隔,要把中文句子拆分成詞就需要使用中文分詞技術。由於全文索引採用的是倒排索引技術,所以分詞的效果直接決定了搜尋的效果。
目前的中文分詞技術主要有:n元切分、最長匹配、最大壓縮、統計語言模型等方法。n元切分,即機械切分。就是把中文句子每n個字分成乙個「詞」。比 如,「我是大學生」用一元切分的結果就是「我」、「是」、「大」、「學」、「生」。二元分詞如果採用串分割,結果就是「我是」、「大學」、「生」,採用交 叉分割結果就是「我是」、「是大」、「大學」、「學生」。通常,都採用交叉切分,以免在搜尋「學生」時無法搜尋到結果。同時,交叉分割可以保證查詢和索引 切分的一致性。但交叉分割的索引大小是串分割的n倍。機械切分並不是真正意義上的中文分詞,因為它並沒有把句子根據詞法和語義分成有意義的詞。這種方法實 現簡單,切分效率高,但會產生很多無用詞。lucene自帶的standardanalyzer對中文的切分就是一元切分。lucene sandbox中的cjkanalyzer採用的是交叉二元分詞。
最長匹配法是使用詞典來切分的。比如,「我是大學生」根據詞典通常會被拆分 為「我」、「是」、「大學生」。最長匹配法又分正向最長匹配和反向最長匹配,即從句子的正方向或方向匹配單詞。通常反向最長匹配的效果要好於正向最長匹 配。也可以把兩者結合起來,即雙向最長匹配。最長匹配法實現也較簡單,分詞速度較快,但準確率比較低。採用詞典的分詞方法的效果很大程度上取決於詞典的質 量。同時,在遇到詞典中沒有的詞往往就束手無策了。而且,基於詞典的分詞對於新詞,還有人名、地名等往往不能很好地識別。lucene sandbox中的chineseanalyzer就是採用的反向最長匹配。
統計語言模型方法簡單的說,就是通過從文字庫中統計出字與字之間 結合和分開的概率來分詞的。比如「我是大學生」,「是」和「大」結合的概率要小於「大」和「學」結合的概率。這種方法不依賴於詞庫和語法定義,可以適應新 詞以及人名地名等。但實現複雜,分詞速度慢。在上下文資訊較少的情況下效果不夠好。
來自:http://hi.baidu.com/terran85/blog/item/ab0e70132160682bdd540198.html
Lucene中文分詞元件 JE Analysis
採用正向最大匹配的中文分詞演算法,相當於分詞粒度等於0 mmanalyzer analyzer new mmanalyzer 引數為分詞粒度 當字數等於或超過該引數,且能成詞,該詞就被切分出來 mmanalyzer analyzer new mmanalyzer int wordlength 字串切...
Lucene中使用Paoding中文分詞
1,把paoding analysis 2.0.4 beta解壓縮,給專案中加入paoding analysis.jar。2,把dic資料夾放到專案的根目錄中。dic資料夾裡是paoding的詞庫。values are system env or this if value is this usin...
Lucene中使用Paoding中文分詞
1,把paoding analysis 2.0.4 beta解壓縮,給專案中加入paoding analysis.jar。2,把dic資料夾放到專案的根目錄中。dic資料夾裡是paoding的詞庫。3,配置paoding的詞庫 把paoding analysis 2.0.4 beta src裡面的p...