基于Map-Reduce的大规模分词服务搭建
2013-09-23 08:58
274 查看
目前项目中,分词的主要工作方式可以分为online和offline,online的方式主要是提供服务接口供应用程序来进行调用,比较侧重并发和速度,offline的工作方式主要是一次性的,调用完成就释放,适合一次处理大量文章,较online的工作方式,省去了网络传输的代价,效率要高一些,但是不是很灵活,不能实现良好的易用性。
在数据挖掘任务中,在语料库庞大的条件下,比如千万或者亿级别的文档,单机处理基本不能满足所需要的性能,需要进行并行化处理,但是一般分词程序会比较依赖词库或者其它的链接库等,部署起来会稍微麻烦点,所以为了方便部署,采用了online的方式来提供分词服务,系统简单的设计如下:
分词服务
分词服务由thrift封装,后台由c++实现,对外提供java和python的接口,客户端主要采用java实现并封装成jar方便部署和调用,分词服务可以根据Map节点的数量部署到多台机器上。
语料
语料库存放在hdfs上,按照路径进行存取,可以根据需求调整hdfs块的大小,数据格式为:docId,content
MR调用
在Map起始阶段,新建一个客户端,然后对读取的文档进行分词、统计词频,输出docId^Aword^Bfreq^Aword^Bfreq,最后再释放客户端的连接。
Reduce阶段也可以作进一步的处理,比如词频统计、词典构建等,也可以直接将Map的结果直接输出。
在数据挖掘任务中,在语料库庞大的条件下,比如千万或者亿级别的文档,单机处理基本不能满足所需要的性能,需要进行并行化处理,但是一般分词程序会比较依赖词库或者其它的链接库等,部署起来会稍微麻烦点,所以为了方便部署,采用了online的方式来提供分词服务,系统简单的设计如下:
分词服务
分词服务由thrift封装,后台由c++实现,对外提供java和python的接口,客户端主要采用java实现并封装成jar方便部署和调用,分词服务可以根据Map节点的数量部署到多台机器上。
语料
语料库存放在hdfs上,按照路径进行存取,可以根据需求调整hdfs块的大小,数据格式为:docId,content
MR调用
在Map起始阶段,新建一个客户端,然后对读取的文档进行分词、统计词频,输出docId^Aword^Bfreq^Aword^Bfreq,最后再释放客户端的连接。
Reduce阶段也可以作进一步的处理,比如词频统计、词典构建等,也可以直接将Map的结果直接输出。
相关文章推荐
- 基于CentOS搭建私有云服务
- 基于CentOS 6.5操作系统搭建MongoDB服务
- 基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端
- OpenStack-M版(Mitaka)搭建基于(Centos7.2)+++十二、Openstack编排服务服务(heat)
- 基于Map-Reduce的相似度计算
- IOS开发-基于WebDriverAgent代理服务,实现iOS手机app自动化测试的框架搭建
- 基于CenOS搭建VNC远程桌面服务
- 秦波|如何基于MySQL及Redis搭建统一的kv存储服务
- 基于iscsi存储服务的搭建
- OpenStack-M版(Mitaka)搭建基于(Centos7.2)+++十、Openstack对象存储服务(swift)下
- 基于map-reduce的并行最短路径算法
- 基于CentOS6.5进行IPA服务的搭建――客户端配置
- 基于RedHat系统来搭建web服务
- PHP搭建基于CodeIgniter框架的服务
- 基于lnmp的电商服务平台的搭建
- 搭建基于https和Parse的后端服务
- 在linux平台上搭建目前企业公司中基于域名,ip以及端口的虚拟主机apache服务!还有
- 基于Docker搭建zabbix服务
- 用ZooKeeper做为注册中心搭建基于Spring Cloud实现服务注册与发现