Drain: 简单有效的日志解析算法

很多云平台都有各种日志,但是并不是结构化的,但利用机器学习/数据挖掘从日志中挖掘信息的时候又希望输入是结构化数据

因此,如何从非结构化日志中提取结构化信息是一件很重要的事情,一个朴素的想法是:使用正则表达式自己做解析提取,但是这个方法有很多缺点1

  • 日志的量太多,肉眼看日志然后写正则表达式不可取
  • 日志来自系统里的每一个组件,每一个组件背后的开发者可能都有自己的写日志习惯,一个个适配太麻烦

在 Drain 算法被提出的时候(2017 年),很多日志解析手段都聚焦于离线批处理场景,但云平台的日志经常都是流式产生的,因此 Drain 算法聚焦在线流式处理场景,它可以自动从非结构化日志中挖掘日志模板,从而得到结构化数据

RIME 小鹤双拼极简配置:从零搭建

MacOS 自带的中文输入法只能说是勉强能用,有很多不舒服的点

  • 它没有第三方词库,很多流行的词都需要自己一个个字打
  • 好不容易自己打的词,多打几次希望它记住,但你会发现它经常记不住

诸如此类的吐槽我已经看到过很多,所以在这个 2026 的元旦假期,我决定做些改变——使用 RIME 输入法 🥳

更好的 TF-IDF: BM25

如果你经常翻阅 LLM (RAG) 或者信息检索相关文献的话,想必会经常看到 BM25 算法。BM25 是用来对检索到的东西按照相关性排序的算法。即在给定用户查询(Query)的情况下,计算每一个文档(Document)的相关性(Relevance)并进行排序

关联规则挖掘:Apriori 算法

最近的工作中需要分析大量安卓 Apk 的特征关联,这些特征包括 IP 特征、URL 特征、权限特征等。特征关联指的是从数据中挖掘哪些特征之间存在关联,比如某些特征组合经常一起出现

如果依靠人工经验的话,数据量太大不大现实,就在这时我想起了以前数据挖掘课程上学过的一个算法:Apriori 算法 :)