【问题标题】:Using HBase to fetch data to calculate Text Similarities using Mahout使用 HBase 获取数据以使用 Mahout 计算文本相似度
【发布时间】:2012-05-25 22:25:07
【问题描述】:

在我的项目中,我们试图计算我面临 2 个问题的一组文档的文本相似度。

  1. 我不想重新计算我之前计算过的文档的词频。例如我有 10 个文档,我计算了所有 10 个文档的词频和逆文档频率。然后我又得到了 2 个文件。现在我不想计算已经存在的 10 个文档的词频,而是想计算新出现的 2 个文档的 TF,然后对所有 12 个文档使用 TF,并将 12 个文档的 IDF 计算为所有的。 如何在不重新计算现有文档的TF的情况下计算所有文档的IDF?

  2. 文档数量可能会增加,这意味着使用内存方法 (InMemoryBayesDatastore) 可能会变得很麻烦。我想要的是将所有文档的 TF 保存在 HBASE 表中,当新文档到达时,我计算新文档的 TF,将它们保存在 HBASE 表中,然后我使用这个 HBASE 表来获取所有文档的 TF用于计算 IDF 的文档。 如何使用 HBase 向 Mahout 的 Text Similarity 提供数据,而不是从序列文件中获取数据?

【问题讨论】:

    标签: java hadoop hbase mahout hadoop-streaming


    【解决方案1】:

    我假设在您的 MR 工作中,您正在读取 HDFS 格式并输出到 Hbase。如果我正确理解您的问题,我的建议是计算每个文档的 TF 并将 Term 存储为行键,限定符可以是 documentID,值可以是频率(只是对您的架构的建议)。您必须为每个文档执行 1 个 MR 作业,并且每个文档只需运行一次该作业。

    在您分析的每个文档到达时执行此操作。

    然后运行最终的 MR 作业,以每个术语(即每行)为基础比较所有文档。这将适用于特定条款,但会因“类似条款”而变得复杂。然后你会想要运行某种算法,可能会考虑到术语之间的 Levenshtein 距离,这可能很复杂。

    【讨论】:

      猜你喜欢
      • 2012-09-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-12
      • 2013-09-12
      • 1970-01-01
      • 1970-01-01
      • 2021-05-29
      • 1970-01-01
      相关资源
      最近更新 更多