幾種常見的中文分詞包的分析與比較
1:中文分詞簡介
2:Lucence的中文分詞
3:庖丁分詞簡介
4:IK中文分詞簡介
一:中文分詞簡介
1:分詞演算法分類
-----基於字串匹配的中文分詞方法
eg:句子:我來自瀋陽航空航天大學
詞典:瀋陽 航空 航天 大學 瀋陽航空航天大學
匹配欄位:
匹配結果:
選取詞典中最長欄位作為分詞起始的最長步伐,可知最長為8
首先在句子中以“我”為起點,數八個字“我來自瀋陽航空航”在詞典中沒有匹配到,然後步長減一,為7
然後數七個字“我來自瀋陽航空”同樣在字典中沒有匹配到,步長減一,為6
........
步長為1時依然沒有匹配到,但是是單音節詞了,所以存放在匹配結果中
以此執行,下一次從“是”開始......
所以最終的匹配結果是:我 來 自 瀋陽航空航天大學 瀋陽 航空 航天 大學
------基於理解的分詞方法
類似於人工智慧分詞了,能夠自動識別詞語的意思,進行分詞
------基於統計的分詞方法
2:兩大難題
----歧義識別
----新詞識別
3:應用
----搜尋引擎
----自然語言處理
二:Lucence的中文分詞
1:基於字串匹配的分詞
----paoding
----mmseg4j:MMseg演算法
----IK:正向迭代最細粒度劃分演算法
2:基於統計的分詞
----imdict:採用隱馬爾可夫模型
三:庖丁分詞簡介
極具有高效性和可擴充套件性,採用完全的面向物件設計,構思先進
優點:
自定義詞庫,通過修改paoding-analysis.jar中的paoding-dic-home.properties檔案中的“paoding.dic.home=dic”定義自己 的詞庫
能夠對未知的詞彙進行合理的分析,分詞效率高
部署:
1. 配置dic檔案:
修改paoding-analysis.jar中的paoding-dic-home.properties檔案,將“#paoding.dic.home=dic”的註釋去掉,並配置成自己dic檔案的本地存放路徑。eg:/home/hadoop/work/paoding-analysis-2.0.4-beta/dic
2. 把Jar包匯入到專案中:
將paoding-analysis.jar、commons-logging.jar、lucene-analyzers-2.2.0.jar和lucene-core-2.2.0.jar四個包匯入到專案中,這時就可以在程式碼片段中使用庖丁解牛工具提供的中文分詞技術
3:程式碼例項
package tokens;
import java.io.IOException;
import java.io.StringReader;
import net.paoding.analysis.analyzer.PaodingAnalyzer;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.Token;
import org.apache.lucene.analysis.TokenStream;
public class tokens {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String text = "本思想就是在分詞的同時進行句法、語義分析, 利用句法資訊和語義資訊來進行詞性標註, 以解決分詞歧義現象。因為現有的語法知識、句法規則十分籠統、複雜, 基於語法和規則的分詞法所能達到的精確度遠遠還不能令人滿意, 目前這種分詞系統還處在試驗階段。";
//定義一個解析器
Analyzer analyzer = new PaodingAnalyzer();
//得到token序列的輸出流
TokenStream tokens = analyzer.tokenStream(text, new StringReader(text));
try{
Token t;
while((t=tokens.next() ) !=null){
System.out.println(t);
//System.out.println(t.termText()) 輸出單個詞
}
}catch(IOException e){
e.printStackTrace();
}
}
}
4:分詞結果 四:IK中文分詞簡介