返回首页
当前位置: 主页 > 互联网技术 > 数据挖掘 >

SAE(Sina App Engine) 分词性能测试

时间:2016-06-01 11:51来源:电脑教程学习网 www.etwiki.cn 编辑:admin

好久没有玩SAE(Sina App Engine)了。今天无意中登录了自己的sae账号。发现sae已经添加了分词功能。笔者对中文分词十分感兴趣。于是,急急忙忙作了一款sae的分词性能测试系统。

本文针对测试版本的SAE(Sina App Engine) 分词系统作了一个基本的性能测试。测试的内容包括分词的响应速度、处理速度、准确率等等。如果你也感兴趣,接着往下看吧^_^。

sae分词的基本用法十分简单:

$seg = new SaeSegment();

$ret = $seg->segment($str,1);

生成了一个包含词、词性和词序的数组。用户直接显示或后续处理就可以了。

为了让大家有一个直观的认识。笔者在sae中作了一个测试网站。你可以登录:http://ifenci.sinaapp.com/ 上传自己的文件,看看分词的效果^_^。

该网站目前只支持utf-8编码的文本文件测试、文件大小限制在256KB以内。

可以看到,加载分词类的速度是相当快的。仅用了不到1ms的时间。然后,最后分词的速度却让笔者不是十分满意,仅有20KB/s的处理速度。这样的性能比中科院分词要差了20多倍。

考虑了一下,由于笔者上传的文件经过了预处理,将每一行作为一个句子。看每句的处理速度均在3-5ms之间十分平均,是不是segment()函数每次都会加载词典造成分词效率降低呢?

于是,笔者这次上传了一个只有一行的文本。不过却没有返回任何结果,可能是分词函数对处理字符串的最大长度有限制。经过反复实验,证明sae分词系统一次行处理文本大小<10KB。

上传了9.8KB的文本数据。segment函数用时约40ms。处理速度达到了260KB/S的喜人成绩。

如果剔除php系统本身的原因,以及虚拟机性能的限制。能达到这个处理速度确实是很理想了。

再看看一看分词的准确度。笔者选取了一些容易产生岐义的句子拿来做分析。结果如下:

可以看到上面的6个句子中,序号2的句子出现了明显的错误:应该是请/ 把/ 手/ 拿开/,但sae分词系统却将把手认为一个词。这可能是sae的分词系统由于web系统的限制,并没有加入对语义的判断造成的。

最后一句话中“谈和平”是一个人名。分词系统似乎也没有识别。

说到这里,笔者也不打算在这篇文章中再继续深入下去了。由于没有采用更量化的数据分析。仅从几句话中判断一个分词算法的好坏也是不公平。深入的分析,笔者会再后续的日志中为大家解读。

总结:从基础数据来看SAE(Sina App Engine) 分词系统是笔者目前在网上看到公开的、并且可用的最好的分词系统之一。无论从处理速度和处理的准备率来说都是相当不错的。有兴趣的朋友不妨到http://ifenci.sinaapp.com/ 自己亲手测试一下^_^。

------分隔线----------------------------
标签(Tag):SAE
------分隔线----------------------------
推荐内容
猜你感兴趣