在 Python 中创建错误消息集群

Create clusters of error messages in Python

我有一大堆由硬件设计模拟生成的错误消息。这些消息中几乎没有语法或语言概念。也没有明确定义的语法。这些消息可能包含数学表达式(在模拟中引发错误)、错误发生的时间、@、:、[、]、(、) 等随机符号(取决于设计作者想要显示的内容!)。消息中不需要的地方有空格,需要的地方没有空格。

我想对这组消息应用算法,将它们分组到包含相似消息的桶中,这样我就可以轻松识别出现的错误类型。

我阅读了有关使用 Levenshtein 距离或余弦相似度找出字符串之间的距离的信息;然后使用 k-means 聚类。我还阅读了有关 word2vec 和类似库的信息。但我觉得它们在更结构化的类似英语的输入数据上效果最好?

推荐给我的方法是什么?当然,我会先对数据做很多预处理(比如把所有的随机符号替换成空格,把多个空格拼成一个等),但我还是不会在消息中有有意义的词。

我能够使用 dbscan algorithm from sklearn 和 Levenshtein 距离的度量(使用 python-Levenshtein 包)。

无法使用 k-means,因为它需要相对于原点(欧几里德)的距离,而 dbscan 可以获取集合中要聚类的项目之间的相对距离。

我还做了一些预处理,从错误消息中提取出已知字符串,以便在创建集群之前清理消息。

感谢 Josep 的指点。