使用Hadoop解析批量文本:生成密钥的最佳实践

时间:2010-07-28 03:22:52

标签: nlp hadoop

我正在使用Hadoop处理一组“大”行分隔的完整句子。我开发了一个映射器,它将一些我最喜欢的NLP技术应用到它。我在原始句子集上映射了几种不同的技术,我在缩减阶段的目标是将这些结果收集到一起,使得一组中的所有成员共享相同的原始句子。

我觉得用整个句子作为关键是一个坏主意。我觉得由于密钥数量有限(不正当的信念),生成句子的哈希值可能不起作用。

任何人都可以推荐为每个句子生成唯一键的最佳创意/实践吗?理想情况下,我想保留订单。但是,这不是主要要求。

Aντίο,

3 个答案:

答案 0 :(得分:1)

标准哈希应该可以正常工作。大多数哈希算法的值空间远远大于您可能使用的句子数量,因此碰撞的可能性仍然非常低。

答案 1 :(得分:1)

尽管我已经给出了关于正确哈希函数可能的答案的答案,但我建议你只使用句子本身作为键,除非你有特定的理由说明这是有问题的。

答案 2 :(得分:0)

虽然您可能希望避免使用简单的哈希函数(例如,您可以快速思考的任何半生不熟的想法),因为它们可能不会将句子数据混淆到足以避免首先发生冲突,这是标准之一加密散列函数可能非常合适,例如MD5,SHA-1或SHA-256。

即使collisions have been found,您也可以使用MD5,并且出于安全密集的目的,该算法被认为是不安全的。这不是一个安全关键应用程序,已发现的冲突是通过精心构建的数据产生的,并且可能不会在您自己的NLP语句数据中随机出现。 (例如,参见Johannes Schindelin解释为什么可能不必更改git以使用SHA-256哈希值,这样你就可以理解这背后的推理。)