V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
shiznet
V2EX  ›  问与答

如何实现一个基于 pattern 的文本相似度聚类

  •  
  •   shiznet · 2018-06-05 17:45:07 +08:00 · 2624 次点击
    这是一个创建于 2145 天前的主题,其中的信息可能已经有所发展或是发生改变。

    当前想实现一个服务,能够对业务日志进行聚类分析。业务日志具备一定的 pattern 特征,但是没办法穷举,所以想通过开发一个服务来对业务日志进行聚类,便于后续进一步分析。

    当前的想法是,既然是使用聚类,那么需要选取一个日志文本到特征值的一个相似度衡量算法(text-embedding),以及一个聚类算法。

    当前纠结点在 text-embedding 要怎么选取。

    之前没有做过类似相关,最近查了些资料,可能是姿势不对,没有发现可以用来借鉴的实现或算法。

    不知道描述是否清晰,如果有做过相关工作的同学帮忙指点迷津~

    如果思路有问题也请多多指教~~

    12 条回复    2018-06-08 13:48:12 +08:00
    widewing
        1
    widewing  
       2018-06-05 17:48:10 +08:00 via Android
    我也想做这个,马克下
    fffflyfish
        2
    fffflyfish  
       2018-06-05 18:26:17 +08:00
    训练分词 word2vec,然后 text 的所有分词的 vec 相加,得到 text 的相似度
    ipwx
        3
    ipwx  
       2018-06-05 18:35:34 +08:00
    pattern 用 word-embedding 不一定能行,pattern 信息量太少,word-embedding 容易过拟合。

    DeepLog 这篇论文了解一下,我没试过,不过好像挺厉害的。
    shiznet
        4
    shiznet  
    OP
       2018-06-05 20:30:55 +08:00
    @ipwx 看了下「 DeepLog: Anomaly Detection and Diagnosis from System Logs through Deep Learning 」摘要,感觉和我需求不大一致。

    ```
    Anomaly detection is a critical step towards building a secure and
    trustworthy system. ŒThe primary purpose of a system log is to
    record system states and signifi€cant events at various critical points
    to help debug system failures and perform root cause analysis. Such
    log data is universally available in nearly all computer systems.
    Log data is an important and valuable resource for understanding
    system status and performance issues; therefore, the various system
    logs are naturally excellent source of information for online
    monitoring and anomaly detection. We propose DeepLog, a deep
    neural network model utilizing Long Short-Term Memory (LSTM),
    to model a system log as a natural language sequence. Œis allows
    DeepLog to automatically learn log paŠtterns from normal execution,
    and detect anomalies when log paŠtterns deviate from the model
    trained from log data under normal execution. In addition, we
    demonstrate how to incrementally update the DeepLog model in
    an online fashion so that it can adapt to new log pattŠerns over time.
    Furthermore, DeepLog constructs workƒows from the underlying
    system log so that once an anomaly is detected, users can diagnose
    the detected anomaly and perform root cause analysis eff‚ectively.
    Extensive experimental evaluations over large log data have shown
    that DeepLog has outperformed other existing log-based anomaly
    detection methods based on traditional data mining methodologies.
    ```
    takato
        5
    takato  
       2018-06-05 20:55:29 +08:00
    @ipwx LSTM 那部分还可以有很多优化。。目前比较优的做法是完全抛弃 RNN 了。
    WildCat
        6
    WildCat  
       2018-06-05 20:58:08 +08:00
    @takato 不用 RNN 的话用什么架构呢? 1d CNN ?
    takato
        7
    takato  
       2018-06-05 20:59:54 +08:00   ❤️ 1
    @WildCat CNN 可以的呀,还可以并行化。
    处理好长程依赖就可以了。。
    takato
        8
    takato  
       2018-06-05 21:00:57 +08:00   ❤️ 1
    @WildCat 其实把裸的 RNN 到 LSTM 的改进思路再运用一遍就可以了。自然而然会走出 RNN 的范围。
    ETiV
        9
    ETiV  
       2018-06-05 22:49:44 +08:00
    我这些天用 Google Cloud Function,它有一个出错信息汇总页面,
    相同类型的 N 多错误被放在了一起,应该就是 LZ 想要的?

    我觉得它实现起来蛮简单的:通过 error stack 来归类

    LZ 也可以考虑给日志加上「当前模块、文件,当前行数」这种输出的话,用这两个值就可以做归类了吧~
    shiznet
        10
    shiznet  
    OP
       2018-06-06 09:10:36 +08:00
    @ETiV

    模块 /文件是独立的,这个可以区分开,但是一个模块中可能会输出不同的日志,比如说方法 A 有多个地方会有异常栈输出,且每个异常栈的信息可能略有不同。行数信息是在日志的描述中的一个变量,所以没办法将行数作为直接标识。

    不过可以沿着这个思路走:
    先按模块归类,然后对模块内再进一步归类
    shiznet
        11
    shiznet  
    OP
       2018-06-06 09:13:20 +08:00
    @takato

    老兄对这个问题有什么见解么? 没有做过类似的东西,LSTM 和 RNN 这个如何应用在这个场景能展开讲讲么?
    takato
        12
    takato  
       2018-06-08 13:48:12 +08:00
    @shiznet 呃- -这么问的话还真不知道该从哪里说呢。。。
    可以给点提示么?比如之前有没有接触过算法相关的项目= =?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2615 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 04:46 · PVG 12:46 · LAX 21:46 · JFK 00:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.