- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
共现矩阵解题报告
ASSIGNMENT #2: WORD CO-OCCURRENCE MATRIX 单子非
1. 摘要
共现矩阵问题统计文档中每两个词出现在同一个句子中的次数,统计共现矩阵对语义分析、
数据挖掘都有重要意义。
本报告中,作者使用Hadoop 编程,计算了莎士比亚文献集的共现矩阵。作者采用了Stripe
的方法对数据传输格式进行了优化,将数据传输量减小了一半;并采用In-Map Combing 策略和
定制Combiner 类,大幅减小了数据的规模。Map 的输出value 格式采用了hadoop 的Text 类,
以字符串方式传输并进行解析,方法简便。
最后,作者对得到的共现矩阵数据进行了解析,发现绝大多数词对的共现次数小于等于5,
共现次数最高的单词大多是英语常用高频词;通过对非常用高频词的解析,还发现了一些有趣的
现象,如:这些文献中大量使用古英语人称代词和语体,以及文献的主题多为王室相关。
2. 简介
共现矩阵问题的定义如下:在文档集合中,任意两个单词共同出现在同一句子中的次数构
成一个矩阵,我们要编程求这个矩阵。考虑到问题的大规模数据量和可扩展性,我们用hadoop
编程,使用MapReduce 算法求解。
Hadoop 编程中,用户可定制的部分有Mapper、Reducer、Combiner 和Partition 四部分。我
们这里主要关注Mapper、Reducer 和Combiner 的编写。
最朴素的算法是基于pair 的算法。
3. 算法实现
3.1. PAIR 方法
下面简单介绍朴素的Pair 方法。
Mapper:map 方法处理每个句子,切词之后二重循环遍历句中每个单词a 和b,将 a, b,
1作为Mapper 的输出发送。输出格式中,key 为二元组a, b,value 为整数,代表出现频率。
Reducer:reduce 方法收集到的数据中,key 为a, b,代表统计的两个单词,确定了共现矩
阵中的一个元素;value 为listint,将其元素累加后,可以直接得到两个词的共现次数x 。输出
a, b, x 。
Combiner :可以直接使用Reducer,在同一个Mapper 中对多个map 方法的结果进行合并,
减小数据量。
复杂度分析:
Pair 方法中,考虑单词量为n,平均单词数据量为d 的句子,则传输key 的总数据量为:
。
设每个value (均为1)的数据量为e,则传输value 的总数据量为: 。总数据量为
。
Pair 方法的简单优化:考虑矩阵的对称性,可以限定二元组a, b,令a 的hashcode 小于等
⁄
于b (即按照字典序a=b ),则可减小一半的数据量,优化为。 。
3.2. STRIPE 方法及实现
Stripe 方法的思想为:如果令pair 方法中的key 只取词对的第一个单词a ,value 格式为listb,
x,其中b 为与a 共现的单词,x 为共现次数。则传输复杂度可以得到优化:设句中的单词数目
为n,任意组传输的数据中a, b 中a 的出现次数由n-1 次减为1 次,b 的出现次数仍为n 次,另
外1 的传输次数由1 次变为n-1 次。由于1 的传输复杂度比起单词可以忽略,故整体数据量基本
上减小了一半。
3.2.1. 使用 TEXT 承装输出列表
要完成这样的传输,我们需要定制value 的传输数据格式为pairString, Integer 。然而笔者
采用了另一种简单易行的办法:将value 中的所有String 全部写入一个String ,value 的格式为Text
进行传输。这样虽有一些浪费(传输空格和数字使传输量有所增加),但方便编写。
最初执行这个方法时,我省略了所有的1,只传输以空格分隔的单词。这个方法无需传输单
词出现次数,可以用于Mapper 的输出。
如:hello hadoop bye hadoop 这一句子,传输的第一对数据为:
“hello”, “hadoop bye hadoop”
您可能关注的文档
最近下载
- 【新教材】2025-2026学年赣美版(2024)美术二年级上册教学计划及进度表(教案).pdf VIP
- 教科版(2024)小学科学一年级上册(全册)教案及反思(含目录).docx VIP
- 小学2025年“9·3”阅兵思政课.ppt
- 图书资料专业技术资格考试题库.docx VIP
- XXX区人民政府关于XXX项目处置有关问题的请示2.20.doc VIP
- puzzle(英语猜谜语)课件.ppt VIP
- 2024新人教版生物学七年级下册《第三单元 植物的生活》大单元整体教学设计.pdf
- 《世说新语》二则同步练习题.pdf VIP
- sedex验厂培训课件.ppt
- 第三章城市轨道交通屏蔽门门机装置课件.pptx VIP
文档评论(0)