自然语言处理一直以来被誉为人工智能皇冠上的明珠,语义分析指的运用NLP和机器学习方法挖掘与学习文本深层次概念,wikipedia上的解释如下:

In machine learning, semantic analysis of a corpus is the task of building structures that approximate concepts from a large set of documents (or images).

0x00 AIOps 语义分析现状

包含语义分析在内,智能运维领域的NLP面临的挑战颇多,比如:

  • 问句领域性强
  • 用户意图复杂
  • 上下文相关性强
  • 问题多样
  • 指代缺失
  • 口语化严重

在实际应用场景中,所有数据将会来源于真实业务沟通场景,部分协同工具、邮件等结构化摘要数据还包含业务和运维工程师针对当次问答数据的推理知识,这些内容都会让自然语言处理的落地更具挑战。

0x01 分词与构建语言模型

通常在拿到一段文本后要先做分词处理,目前较常用的几种分词方法如下:

  1. 基于字符串匹配的分词方法。此方法按照不同的扫描方式,逐个查找词库进行分词。根据扫描方式可细分为:正向最大匹配,反向最大匹配,双向最大匹配,最短路径最小切分等等
  2. 全切分方法。它首先切分出与词库匹配的所有可能的词,再运用统计语言模型决定最优的切分结果。它的优点在于可以解决分词中的歧义问题。
  3. 由字构词的分词方法。可以理解为字的分类问题,也就是自然语言处理中的sequence labeling问题,通常做法里利用HMM,MAXENT,MEMM,CRF等预测文本串每个字的tag。由于CRF既可以像最大熵模型一样加各种领域feature,又避免了HMM的齐次马尔科夫假设,所以基于CRF的分词目前是效果最好的。除了HMM,CRF等模型,分词也可以基于深度学习方法来做。

语言模型是用来计算一个句子产生概率的概率模型,即P(1, 2, 3…m),m表示词的总个数。

根据贝叶斯公式:

\(P(A|B)=\frac{P(B|A)P(A)}{P(B)}\)

Continue reading