1

我有一些我正在处理的 hadoop 文档相似性项目,但我陷入了某些困境。情况看起来像这样(我有一个存储在 csv 文件中的文档术语索引表

"", t1,t2,t3,t4,....


doc1,f11,f12,f13,f14,....

doc2,f21,f22,f23,f24,....

doc3,f31,f32,f33,f34,....

.

.

.

其中 f12 表示 document1(doc1) 中 term2(t2) 的频率

另一方面,我有一个查询文件,其中包含需要搜索其最近或类似文档的查询

"", t1,t3,t122,t34,....


q1,f11,f12,f13,f14,....

q2,f21,f22,f23,f24,....

q3,f31,f32,f33,f34,....

.

.

. 但是这里的术语可能包含不同的术语,所以我需要找到这两个(术语索引和查询)的叉积,以便找到查询和现有文档之间的距离

问题包含两部分: 首先,考虑到文件将被拆分到不同的机器中,如何读取每个 csv 文件的标题以将它们存储在某个 termvector 中。

第二,如何对这两个文件进行叉积,以找到相似度(创建一个可以包含所有可能术语(维度)的新文档以找到相似度)

我正计划编写一些 K-最近邻算法来查找相似性我应该使用哪些工具或工具,Pig,Hive,Mahout。

4

2 回答 2

1

关于笛卡尔积的MapReduce 设计模式一书有一个单独的章节,并提供了源代码。

于 2013-12-03T08:44:22.027 回答
1

是的@vefthym 答案,我一直在阅读同一本书的同一章节!

但是,运行时间非常长!按照书中的方法,对于包含 20,000 条记录的 600kb 数据集,运行笛卡尔积需要 10 多个小时!虽然我知道20000条记录,计算量接近200m次,I/O访问量400m次,很大,但我觉得它在GB或TB的大数据集上工作是不切实际的。

我正在联系作者,看看他是否有相同的运行时间。会让大家知道

于 2013-12-16T03:11:12.863 回答