我有一些应用程序可以生成日志文件的文本跟踪信息(日志)。跟踪信息是典型的printf()样式 - 即有许多类似的日志条目(与printf的格式参数相同),但格式字符串具有参数的位置不同。
什么算法(网址,书籍,文章......)允许我分析日志条目并将它们分类到几个箱/容器中,每个箱子有一个相关的格式?
基本上,我想要的是将原始日志条目转换为(formatA,arg0 ... argN)实例,其中formatA在许多日志条目之间共享。 formatA不一定是用于生成条目的确切格式(如果这使得算法更简单,则更是如此)。
我发现的大多数文献和网络信息都涉及精确匹配,最大子串匹配或k差异(k已知/固定提前)。此外,它侧重于匹配一对(长)字符串或单个bin输出(所有输入中的一个匹配)。我的情况有所不同,因为我必须发现什么代表(足够好)匹配(通常是一系列不连续的字符串),然后将每个输入条目分类为已发现的匹配之一。
最后,我不是在寻找一个完美的算法,而是一些简单/易于维护的东西。
谢谢!
答案 0 :(得分:1)
你可以使用着名的Bag of Words技术tan帮助组文本,使用稀疏矩阵在每一行中表示文本(通常文本用porter stemmer来阻止以获得更好的结果)在计算出一包单词后,你需要计算每个单词在每个文本中出现的次数,然后按行和列计算矩阵的总数,你计算每个单元格的tf-idf,以便注意角距离关于最佳作品的文本。完成所有这些后,您可以执行一个聚类算法,对相关的文本进行分组,您甚至可以从这里提取文本的主要关键字。有一个程序可以自动完成所有这一切,称为cluto,我强烈推荐它。