lucene中文分片語件(詞典全切分演算法)下載

linliangyi2006發表於2006-12-11
下載地址:
http://groups-beta.google.com/group/SegWord/web/IKAnalyzer.jar

IKAnalyzer基於lucene2.0版本API開發,實現了以詞典分詞為基礎的正反向全切分演算法,是Lucene Analyzer介面的實現,程式碼使用例子如下:

import org.mira.lucene.analysis.IK_CAnalyzer  <------- 引用類
import .....

public class IKAnalyzerTest extends TestCase {

	RAMDirectory directory;
	private IndexSearcher searcher;
	
	public void setUp() throws Exception {

		directory = new RAMDirectory();



		IndexWriter writer = new IndexWriter(directory,
			new IK_CAnalyzer(),  <------- 例項化類
			true);

		Document doc = new Document();
		doc.add(Field.Keyword("partnum", "Q36"));
		doc.add(Field.Text("description", "Illidium Space Modulator"));
		writer.addDocument(doc);
		writer.close();
		searcher = new IndexSearcher(directory);

	}

	public void testTermQuery() throws Exception {
		Query query = new TermQuery(new Term("partnum", "Q36"));
		Hits hits = searcher.search(query);
		assertEquals(1, hits.length());
	}
}
<p class="indent">

分詞效果測試,命令列如下:
java -classpath IKAnalyzer.jar;lucene-core-2.0.0.jar org.mira.lucene.analysis.IK_CAnalyzer 中華人民共和國香港特別行政區


該演算法適合與網際網路使用者的搜尋習慣和企業知識庫檢索,使用者可以用句子中涵蓋的中文詞彙搜尋,如用“人民”搜尋含“人民幣”的文章,這是大部分使用者的搜尋思維;
不適合用於知識挖掘和網路爬蟲技術,全切分法容易造成知識歧義,因為在語義學上“人民”和“人民幣”是完全搭不上關係的。

分詞效果:

1.實現中文單詞細粒度全切分

如:中華人民共和國
0 - 2 = 中華
0 - 4 = 中華人民
0 - 7 = 中華人民共和國
1 - 3 = 華人
2 - 4 = 人民
2 - 7 = 人民共和國
4 - 6 = 共和
4 - 7 = 共和國

2.實現對專有名詞的識別和切分(人名,公司名)

如:陳文平是開睿動力通訊科技有限公司董事長
0 - 3 = 陳文平 <------ 人名,非漢語詞彙
4 - 6 = 開睿 <------ 公司名,非漢語詞彙
6 - 8 = 動力
8 - 10 = 通訊
10 - 12 = 科技
12 - 14 = 有限
12 - 16 = 有限公司
14 - 16 = 公司
16 - 18 = 董事
16 - 19 = 董事長
18 - 19 = 長

3.對數詞和量詞的合理切分

如:據路透社報導,印度尼西亞社會事務部一官員星期二(29日)表示,日惹市附近當地時間27日晨5時53分發生的里氏6.2級地震已經造成至少5427人死亡,20000餘人受傷,近20萬人無家可歸。
0 - 1 = 據
1 - 4 = 路透社
4 - 6 = 報導
。。。。。。
18 - 20 = 官員
20 - 22 = 星期
20 - 23 = 星期二
22 - 23 = 二
24 - 26 = 29
24 - 27 = 29日
26 - 27 = 日
28 - 30 = 表示
31 - 33 = 日惹
33 - 34 = 市
。。。。。。
40 - 42 = 27
40 - 43 = 27日
43 - 44 = 晨
44 - 45 = 5
44 - 46 = 5時
45 - 46 = 時
46 - 48 = 53
46 - 49 = 53分
48 - 50 = 分發
。。。。。。
52 - 54 = 里氏
54 - 57 = 6.2
54 - 58 = 6.2級
57 - 58 = 級
58 - 60 = 地震
。。。。。。
66 - 70 = 5427
66 - 71 = 5427人
71 - 73 = 死亡
72 - 73 = 亡
74 - 79 = 20000
79 - 81 = 餘人
81 - 83 = 受傷
84 - 85 = 近
85 - 87 = 20
85 - 89 = 20萬人
87 - 89 = 萬人
89 - 93 = 無家可歸

相關文章