日志文件中的文本聚类

时间:2014-12-15 08:53:08

标签: machine-learning nlp artificial-intelligence

我正在研究在日志文件中查找类似内容的问题。让我们说我有一个如下所示的日志文件:

 show version
 Operating System (OS) Software

 Software
 BIOS:      version 1.0.10
 loader:    version N/A
 kickstart: version 4.2(7b)
 system:    version 4.2(7b)
 BIOS compile time:       01/08/09
 kickstart image file is: bootflash:/m9500-sf2ek9-kickstart-mz.4.2.7b.bin
 kickstart compile time:  8/16/2010 13:00:00 [09/29/2010 23:10:48]
 system image file is:    bootflash:/m9500-sf2ek9-mz.4.2.7b.bin
 system compile time:     8/16/2010 13:00:00 [09/30/2010 00:46:36]`

 Hardware
 xxxx MDS 9509 (9 Slot) Chassis ("xxxxxxx/xxxxx-2")
 xxxxxxx, xxxx with 1033100 kB of memory.
 Processor Board ID xxxx

 Device name: xxx-xxx-1 
 bootflash:    1000440 kB 
 slot0:              0 kB (expansion flash)

对于人眼来说,可以很容易地理解"软件"以下数据是一个部分和"硬件"以下数据是另一节。有没有一种方法可以使用机器学习或其他技术来模拟基于模式的类似部分?此外,我已经展示了2种类似的模式,但各部分之间的模式可能会有所不同,因此应该标识为不同的部分。我试图使用余弦相似性找到相似性,但它并没有多大帮助,因为这些词并不相似,但模式是。

1 个答案:

答案 0 :(得分:1)

我实际上看到了两个不同的机器学习问题:

1)如果我理解正确你要解决的第一个问题是将每个日志拆分为不同的部分,因此一个用于硬件,一个用于软件等。

为了实现这一目的,可以尝试提取标记新部分开头的标题。为此,您可以手动标记一组不同的日志,并将每行标记为heading = true,heading = false

不,你可以尝试训练一个分类器,它将你的标记数据作为输入,结果可能是一个模型。

2)现在您有了这些不同的部分,您可以将每个日志拆分为这些部分,并将每个部分视为单独的文档。

现在我首先尝试使用标准的nlp管道进行straigt-forward文档聚类:

  1. 对您的文档进行标记以获取令牌
  2. 将它们标准化(可能阻塞不是日志的最佳选择)
  3. 为每个文档创建一个tf-idf向量
  4. 从像k-means这样的简单聚类算法开始尝试聚类不同的部分
  5. 在群集之后,您应该在同一群集中具有彼此相似的部分

    我希望这有所帮助,我认为特别是第一项任务很难退出,也许手工定制的模式会更好。