MapReduce 基础算法【单词共现算法】

本文介绍了MapReduce的基础算法——单词共现算法,详细阐述了Map端和Reduce端的伪代码实现,并讨论了共现窗口的定义及其实现中的细节问题,包括WordPair类的设计和重写相关方法确保数据正确分发和处理。
摘要由CSDN通过智能技术生成

基本设计

设有一个英文语句:

wearenotwhatwewanttobebutatleastwearenotwhatweusedtobe. w e a r e n o t w h a t w e w a n t t o b e b u t a t l e a s t w e a r e n o t w h a t w e u s e d t o b e .

  • 设共现窗口定义为连续出现的两个单词,如下图给出上句英文的共现矩阵。

单词共现算法实现(伪代码)

Map端伪代码如下:
class Mapper 
    method Map(dociddid, doc d)
    for all word w 属于 d
for all word u 属于 Window(w)
//发射出现计数 1
        Emit(pair (w, u), 1)
Reduce 端伪代码如下:
class Reducer
    method Reduce(pair p; countlist [c1, c2,..])
        s = 0
for all count c in countlist [c1, c2, ...]
s = s+ c
Emit(pair p, count s)
  • 上述Mapper伪代码中使用了一个window定义,表示如果单词w的窗口u 属于w的窗口内,则认为是(u,w)的一次出现。这里的窗口Windows可以根据不同的应用需求有不同的定义,比例,可以定义为一个固定大小的窗口,或者是前者相连出现、在同义句中、在同一段落中出现的单词等。
  • 例如,如果窗口中的单词为[w1, w2, w3],我们发射((w1,w2),1)和((w1,w3),1)出去然后窗口向后移动一个单词。REduce阶段则对发来的相同键的值进行简单的求和即可。这里单词顺序有无关系需要看具体的情况而定。另外,在实际实现中我们需要传入Map的数据时以一个文本为单位的,这里需要实现一个 WholeFileInputFo
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值