[NLP] Triplet network学习主题相似性
2022-01-11 本文已影响0人
nlpming
1. 简介
- 本文提出一种triplet network用于学习主题相似性。本文的工作基于一个基本假设:同一个章节的句子主题是相关的。因此作者基于维基百科文章,构建了sentence triplet训练语料,其中两个句子来自同一个章节,另外一个句子来自不同的章节。 triplet network主要的目标是是的同一个章节的句子向量相似度,相比不同章节的句子向量相似度更接近。为了衡量模型效果,作者发表了一个句子相似度基准数据集,通过训练好的triplet netowrk得到句子向量之后,聚类评估模型效果。
2. Triplet network模型结构
- triplet network模型结构如下,输入样本为:,样本对来自于同一个章节主题更加相似。模型的目标就是让的相似性大于的相似性。
- 样本对之间的相似性通过距离函数来度量:,三个句子分别经过同样的网络进行编码得到一个句子向量,通过距离函数来度量句子之间的相似性。本文中距离函数,选用的是L1距离。
-
最终的损失函数如下,其中为距离计算结果通过softmax函数转换后得到。损失函数选用的也是L1距离,文中说其效果优于L2距离和cosine相似度。
3. 数据构建
- 本文中构建了两个弱监督triplet数据集。一个是基于不同章节的句子,另外一个是基于不同章节的标题。训练语料构建来自于wikipedia文章,使用OpenNLP工具提取出文章中的句子。通过以下规则过滤数据:
(1)同一个章节的句子,最大距离不超过三个段落;
(2)句子中单词个数少于5或者大于50过滤;
(3)描述文章背景的章节过滤;
(4)其他的一些特殊章节进行过滤,比如External links, Further reading, References等;
(5)每篇文章必须保证至少有5个章节; - 最终的triplet sentence样本如下,前面两个句子来自同一个章节Career,第三个句子来自章节Early life;
- 为了训练好triplet network至关重要的工作是挖掘困难的负样本。文本中尝试的方式是,第三个句子从前/后章节进行随机采样。 文本还构建了triplet title训练集,就是将每个章节的第一个句子作为pivot,然后正样本为本章节的标题,负样本为前/后面章节的标题。
参考资料
- 论文:Learning Thematic Similarity Metric from Article Sections Using Triplet Networks
- OpenNLP工具 - 自然语言处理工具包(基于java语言):https://opennlp.apache.org/