NLP基础任务: 句子表示

332 阅读3分钟

句子表示

语言表达的多样性,使得相同的语义可以有完全不同的表达方式。判断两个句子在语义上是否相似,对于人类来说是一件相对简单的事情,但对机器却是一项挑战,其本质原因在于语义理解的困难。虽然目前可以通过一些规则模板的方法来判断两个句子语义是否相似,但需要对输入的句子进行规范化处理,如果输入的句子不符合模板,规则往往就无法发挥作用。随着深度学习技术的发展,大家逐渐开始关注如何把句子表示成机器能理解的向量。

方法概要

通用句子表示有很多种不同的做法,最简单的思想是基于组合的方法,先得到词的表示,然后通过组合的方式得到句子的表示。 这种方法有两个明显的缺陷:

  • 一是没有考虑到句子中词的序列信息
  • 二是没有考虑到不同词对句子语义表达的影响。

在深度学习模型中,针对这两点,循环神经网络都能建模序列信息,注意力机制可以用来建模词语权重信息。除此之外,还可以设计不同的训练目标,针对特定的任务来更好的捕获语义信息。比较有代表性的模型,按照技术发展的时间排列如下:

  1. 词袋模型 (Glove)。BM25(业界比较常用)
  2. 句子到向量模型 (Sent2vec)。
  3. 最大池化双向 LSTM 模型 (BiLSTM-max)。
  4. 自编码器模型 (AutoEncode)。
  5. BERT 模型。

不同方法介绍以及优缺点

  • 词袋模型

早期用词袋模型 (bag-of-words) 来表示句子,存在维度高,特征比较稀疏的问题。但这种方法好处是比较简单,容易实现,在早期的时候用的比较多;

  • 分布式语义假设

分布式语义假设提出,可以在一个相对低纬的语义空间中表示一个句子。大家逐渐把研究重点放在如何把句子表示成一个带有语义信息的空间向量。在这个语义空间中,语义相似的句子距离也比较接近。Kiros等人受到分布式词向量 (word2vec) 思想的启发,提出了一种利用目标句子的上下文来预测目标句子作为目标函数的无监督句子表示模型:sent2vec 。这种通用的句子表示模型在当时大大提高了复述检测任务的准确率。

  • BiLSTM

BiLSTM 在 lstm 流行的时候风靡一时,而且模型学习能到互为句对的两个句子向量,比随机抽取的两个句子向量更为相似

  • BERT

以上方案都是采用并行式框架做复述检测任务,Devlin 等人则想要学习 一种能够涵盖所有句子表示任务的预训练模型 BERT,使用多头注意力机制 (multi-head attention) 捕捉句子之间的关系,这种方法在分类及序列标注等任务上效果显著。

BERT 重在句子表示,gpt 重在生成。

本文正在参加 人工智能创作者扶持计划