|
Lucene中文分词 IKAnalyzer C#.Net版本 下载
源代码下载地址:http://cn.ziddu.com/download.php?uid=Z7GemJepa7Cb4palY7KWlJiiZK6enZk%3D3
根据IKAnalyzer Java版本移植到C#。采用了Powercollection类库。 it论坛
使用示例:
System.String testString = "据路透社报道,印度尼西亚社会事务部一官员星期二(29日)表示,日惹市附近当地时间27日晨5时53分发生的里氏6.2级地震已经造成至少5427人死亡,20000余人受伤,近20万人无家可归。"; it论坛
//testString = teststr;
for(int k=0;k<10;k++)
testString += testString;
IKAnalyzer ika = new IKAnalyzer();
Console.WriteLine(testString.Length);
try
{
System.IO.TextReader r = new System.IO.StringReader(testString);
TokenStream ts = ika.TokenStream("TestField", r);
int m = 0;
long begin = System.DateTime.Now.Ticks;
for (Token t = ts.Next(); t != null; t = ts.Next())
{
m++;
// System.Console.Out.WriteLine(t.StartOffset() + " - " + t.EndOffset() + " = " + t.TermText());
}
int end = (int)((System.DateTime.Now.Ticks-begin)*1.0/100000);
System.Console.Out.WriteLine("\u8017\u65F6 : " + (end) + "ms"+" 分词个数:"+m+" 效率(词/秒):"+ ((int)(m*1.0f/(end)*1000)));
}
catch (System.IO.IOException e)
{
Console.WriteLine(e.StackTrace);
}
另:IKAnalyzer和庖丁分词性能对比版本:
IKAnalyzer2.0.2
paoding_analysis2.0.4alpha
测试环境:
Inter Core 1.8双核,1G内存,XP,Java1.6Se
结果:
对长度为96256中文分词:
IKAnalyzer:203ms 55296 单词 272394 词/秒
paoding:94ms 47104单词 501106词/秒
对长度为3008中文分词:
IKAnalyzer: 31ms 1728单词 55741词/秒
paoding:15ms 1472单词 98133词/秒
分词内容:
据路透社报道,印度尼西亚社会事务部一官员星期二(29日)表示,日惹市附近当地时间27日晨5时53分发生的里氏6.2级地震已经造成至少5427人死亡,20000余人受伤,近20万人无家可归。
分词效果:it论坛
IKAnalyzer:
1 - 4 = 路透社
1 - 2 = 路
4 - 6 = 报道
7 - 12 = 印度尼西亚
7 - 9 = 印度
10 - 12 = 西亚
12 - 14 = 社会
14 - 17 = 事务部
14 - 16 = 事务
17 - 18 = 一
18 - 20 = 官员
20 - 23 = 星期二
20 - 22 = 星期
22 - 23 = 二
24 - 27 = 29日
24 - 26 = 29
26 - 27 = 日
28 - 30 = 表示
31 - 34 = 日惹市
31 - 33 = 日惹
32 - 34 = 惹市
34 - 36 = 附近
36 - 40 = 当地时间
36 - 38 = 当地
38 - 40 = 时间
40 - 43 = 27日
40 - 42 = 27
43 - 44 = 晨
44 - 46 = 5时
44 - 45 = 5
46 - 49 = 53分
46 - 48 = 53
48 - 50 = 分发
49 - 51 = 发生
52 - 54 = 里氏
54 - 58 = 6.2级
54 - 57 = 6.2
58 - 60 = 地震
60 - 62 = 已经
62 - 64 = 造成
64 - 66 = 至少
66 - 71 = 5427人
66 - 70 = 5427
71 - 73 = 死亡
74 - 79 = 20000
79 - 81 = 余人
81 - 83 = 受伤
84 - 85 = 近
85 - 89 = 20万人
85 - 88 = 20万
85 - 87 = 20
87 - 89 = 万人
89 - 93 = 无家可归
92 - 93 = 归
paoding:
1 - 4 = 路透社
4 - 6 = 报道
7 - 9 = 印度
7 - 11 = 印度尼西
10 - 12 = 西亚
12 - 14 = 社会
14 - 16 = 事务
16 - 17 = 部
17 - 18 = 1
18 - 20 = 官员
20 - 22 = 星期
20 - 23 = 星期二
24 - 26 = 29
26 - 27 = 日
28 - 30 = 表示
31 - 33 = 日惹
33 - 34 = 市
34 - 36 = 附近
38 - 40 = 时间
36 - 40 = 当地时间
40 - 42 = 27
42 - 43 = 日
43 - 44 = 晨
44 - 45 = 5
45 - 46 = 时
46 - 48 = 53
48 - 49 = 分
49 - 51 = 发生
50 - 52 = 生的
52 - 54 = 里氏
54 - 57 = 6.2
57 - 58 = 级
58 - 60 = 地震
60 - 62 = 已经
62 - 64 = 造成
64 - 66 = 至少
66 - 70 = 5427
70 - 71 = 人
71 - 73 = 死亡
74 - 79 = 20000
79 - 81 = 余人
81 - 83 = 受伤
84 - 85 = 近
85 - 88 = 200000
88 - 89 = 人
89 - 93 = 无家可归
结论:
paoding和IK分词效果差不多,IK分词多些但速度差些。
|
|