5 algorithm logging printf parsing normalizing
我正在开发一个需要解析日志文件的项目.我正在寻找一个快速的算法,将采取像这样的组消息:
P1的温度为35°F.
P1的温度为40°F.
P3的温度为35F.
记录器停了下来.
记录器开始了.
P1的温度为40°F.
并以printf()的形式提出一些东西:
"The temperature at P%d is %dF.", Int1, Int2"
{(1,35), (1, 40), (3, 35), (1,40)}
Run Code Online (Sandbox Code Playgroud)
该算法需要足够通用以识别消息组中的几乎任何数据负载.
我尝试搜索这种技术,但我甚至不知道要搜索的正确术语.
小智 6
概述:
一个天真!算法以每列方式跟踪单词的频率,其中可以假设每行可以用分隔符分隔成列.
输入示例:
狗跳过月亮
猫跳过月亮
月亮跳过月亮
汽车跳过月亮
频率:
Column 1: {The: 4}
Column 2: {car: 1, cat: 1, dog: 1, moon: 1}
Column 3: {jumped: 4}
Column 4: {over: 4}
Column 5: {the: 4}
Column 6: {moon: 4}
Run Code Online (Sandbox Code Playgroud)
我们可以通过基于字段总数的分组来进一步划分这些频率列表,但是在这个简单方便的示例中,我们只使用固定数量的字段(6).
下一步是迭代生成这些频率列表的行,让我们来看第一个例子.
/[a-z]+/i
.因此,只需从第一行开始,我们就可以将以下正则表达式组合在一起:
/The ([a-z]+?) jumps over the moon/
Run Code Online (Sandbox Code Playgroud)
注意事项:
显然,只要有人确信频率列表是对整个数据的充分采样,就可以选择扫描第一遍的部分或整个文档.
误报可能会蔓延到结果中,并且将取决于过滤算法(挥手)以提供静态和动态字段之间的最佳阈值,或者某些人类后处理.
总体思路可能很好,但实际实施肯定会影响该算法的速度和效率.
归档时间: |
|
查看次数: |
1445 次 |
最近记录: |