基于Map-Reduce的大规模分词服务搭建

来源:互联网 发布:无线网无法加入网络 编辑:程序博客网 时间:2024/05/13 22:58

    目前项目中,分词的主要工作方式可以分为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的结果直接输出。

原创粉丝点击