共现矩阵解题报告
ASSIGNMENT #2: WORD CO-OCCURRENCE MATRIX
00948181 单子非
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 方 法