内容来自七月算法nlp课程。
文章目录
- 1 句子向量
- 1.1 bert句子向量表示相似度效果不好
- 1.2 sentence-bert
1 句子向量
句子向量是用于实体消岐的。可以使用Elmo,也可以使用bert。这里介绍用bert生成句子向量。
1.1 bert句子向量表示相似度效果不好
Bert中最常用的句向量方式是采用cls标记位或者平均所有位置的输出值,注意,在采用平均的方式的时候,我们需要先做一个mask的操作,计算均值时,除以mask的和。但bert的句子向量效果不理想。
为什么呢?
原因1:词频率影响词向量的空间分布。bert词向量表示与原点的L2距离的均值。高频的词更接近原点。
原因2:低频次分布偏向稀疏。度量词向量空间中与K近邻单词的 L2 距离的均值。我们可以看到高频词分布更集中,而低频词分布则偏向稀疏。然而稀疏性的分布会导致表示空间中存在很多“洞”,这些洞会破坏向量空间的“凸性”。考虑到BERT句子向量的产生保留了凸性,因而直接使用其句子embeddings会存在问题。
这个凸性听得云里雾里。
解决的模型有:sentence-bert、bert-flow和simCSE。
1.2 sentence-bert
论文:https://arxiv.org/pdf/1908.10084.pdf
代码:https://github.com/UKPLab/sentence-transformers