【问题标题】:Text clustering within a log file日志文件中的文本聚类
【发布时间】:2015-02-13 07:54:05
【问题描述】:

我正在解决在日志文件中查找类似内容的问题。假设我有一个如下所示的日志文件:

 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 种类似的模式,但部分之间的模式可能会有所不同,因此应该识别为不同的部分。我曾尝试使用余弦相似度来找到相似度,但这并没有太大帮助,因为单词不相似,但模式相似。

【问题讨论】:

  • 你能更好地定义问题吗?你到底想要什么输出?

标签: machine-learning nlp artificial-intelligence


【解决方案1】:

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

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

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

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

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

现在我将首先尝试使用标准 nlp 管道进行直接文档聚类:

  1. 标记您的文档以获取标记
  2. 规范化它们(也许词干不是日志的最佳主意)
  3. 为每个文档创建一个 tf-idf 向量
  4. 从简单的聚类算法(如 k-means)开始尝试对不同部分进行聚类

聚类后,您应该在同一个集群中拥有彼此相似的部分

我希望这会有所帮助,我认为特别是第一个任务是努力退出,也许手工定制的图案会表现得更好。

【讨论】:

    猜你喜欢
    • 2011-12-30
    • 2012-03-10
    • 2012-02-27
    • 2012-03-22
    • 1970-01-01
    • 2015-11-14
    • 1970-01-01
    • 1970-01-01
    • 2017-01-30
    相关资源
    最近更新 更多