我有很多短文本,我希望过滤掉彼此非常相似的文本(或完全相同的文本)。我想使用在Google Cloud Dataflow上运行的Apache Beam来实现这一目标。
我希望使用MinHash LSH算法来确定两个文本的相似度是否超过某个阈值。
MinHash LSH算法生成一种哈希表形式(概率地)找到相似的句子。我希望这个哈希表对于一百万个文本大约为1 Gb,并且与文本数量呈线性增长。
我看到将此用例映射到Apache Beam的编程模型的唯一方法是使用Combine
转换为所有项生成哈希表(累加器将是哈希表;我能够实现“合并累加器”)然后将其用作ParDo
的侧输入,我在其中查找哈希表中的每个文本以查看它是否与另一个文本冲突。
这看起来像是一件合理的事吗?具体来说,累加器可能是几千兆字节的问题吗?