【发布时间】:2011-09-30 16:29:44
【问题描述】:
我有流式字符串(包含单词和数字的文本)。
一次一行的流式传输字符串,我想为它们分配一个唯一的值。
示例可能是:带有分数/哈希的字符串
User1 logged in Comp1 port8087 1109
User2 logged in comp2 1135
user3 logged in port8080 1098
user1 logged in comp2 port8080 1178
这些字符串应该在同一个簇中。为此,我认为映射(散列的错误类型)字符串,以便字符串中的微小变化不会对分数产生太大影响。
一种简单的方法可能是:使用 UliCp8、Ulic ....(即每个句子的第一个字母)并找到某种评分方法。之后,相似的得分字符串被保存在同一个桶中,然后对它们进行分组。
改进的方法是:让我们不要取出字符串中每个单词的第一个单词,而是找到一些方法来获取单词的代表值,这样字符串表示可能非常适合与我提到的 score/hash 进行映射.
考虑到 Levenstein 距离或 jaccard_index 或一些相似距离度量,它们都需要输入字符串进行比较。是否有任何方法可以在不进行比较的情况下对字符串进行哈希/评分。(POS标记,比较对于我的目的来说看起来效率不高,因为数据是流式的,数量庞大,非结构化)
希望您了解我想要实现的目标,并请帮助我。忘记下面的cmets,让我们重新启动。
【问题讨论】:
-
你为什么要这样做?您应该始终解释您的最终目标,而不仅仅是您遇到问题的步骤。
-
对于这样一个模糊的家庭作业问题的答案是如此有用,令人惊讶
-
好吧..最终目标是对字符串消息进行聚类,识别它们的模式..例如:“my name is jared”和“my name is dour”是字符串。有很多这样的字符串。用适当的(一组)整数映射字符串,使得句子的哈希值应该彼此接近。我们可以开发(或使用任何现有的想法,如果有的话)一些算法来散列字符串,以便将相似的字符串保存在同一个桶中。然后,有办法找出桶的模式。在我们的例子中,“我的名字是 *”是项目应该输出的必需模式。
-
我想我已经对你说清楚了。该项目的主要目的是开发“事件日志分类器”。可能是我无法解释我的问题,但我认为这是最需要研究的领域之一,特别是在考虑网络安全时。
标签: hash