由示例

时间:2017-09-19 07:56:06

标签: parsing machine-learning named-entity-recognition

我们想说解析短字符串(日志消息)。

手工创建这样的解析器,因为正则表达式很难。因为有很多不同的日志消息 - 很多工作。而更糟糕的正则表达式是脆弱的 - 通过日志格式的微小变化很容易破解解析器,它不会处理日志消息的轻微变化 - 这一切都意味着巨大的支持工作,不变需要更新和修复。

我在思考 - 如果有办法以某种方式自动化这项工作? 提供一组示例 - 一组对 { "log message": [parsed tokens] }并运行一些智能算法来生成所有解析器

示例类似于映射input => desired output

// parser for request duration
"request http://site/url processed in 200ms": { id: 'request duration', url: ..., time: 200 }
"request processed in 2 sec, url http://site/url": { id: 'request duration', url: ..., time: 2000 }
"request processed, duration 2 sec, http://site/url": { id: 'request duration', url: ..., time: 2000 }

// parser for error
"total failure, memory overflow": { id: 'error', type: 'memory' }
"can't handle request http://site/url ": { id: 'error', type: 'unknown' }

// parser for images
"image /data/images/img1 resized, duration 300ms": { id: 'image resize', duration: 300 }

...

理想情况下,解析器应该:

  • 要灵活,即处理轻微变化和未知消息。应该可以调整它可能类似于ML回归中的偏差/方差之间的权衡。
  • 解析器应该以某种方式间接使用其他解析器的示例学习关于句子结构,语法等的一般知识。也许类似于word2wec等。

我在思考 - 如果有简单方法这样做?

P.S。它看起来像命名实体识别的任务,但是python spaCy使用不同的格式来定义实体,它需要在消息中标记每个实体。我无法使用该格式,仅黑盒映射(input =>输出),如上例所示。

0 个答案:

没有答案