A simple but tough-to-beat baseline for sentence embedding
2017-11-04 15:00
513 查看
论文原文:A simple but tough-to-beat baseline for sentence embedding
W表示Weighted,意为使用预估计的参数给句中的每个词向量赋予权重。
R表示Removal,意为使用PCA或者SVD方法移除句向量中的无关部分。
输入:
预训练的词向量{vw:w∈V},例如word2vec、glove等
待处理的句子集合 S
参数a(论文中建议a的范围: [1e−4,1e−3])
词频估计{p(w):w∈V}
输出:
句子向量{vs:s∈S}
这是文中的第一个实验——句子相似性评价。
实验使用的数据集都是公共数据集,在这些数据集上方法都取得了不输给RNN和LSTM的表现。
但是在情感分析方面,该方法不及RNN和LSTM,作者分析的了可能原因:
1. 算法使用的词向量(word2vec, glove等)大都基于分布式假说——拥有相近上下文的单词具有相近的意思,但是这些词向量对句子中的antonym problem(我的理解是句子中会出现转折)的感知能力有限。
2. 对于预估计词频来确定权重的方式,在情感分析中可能不是很有效。例如,单词”not”在情感分析中是非常重要的,但是在确定权重时,采用的词频估计会导致其难以在情感分析中发挥作用。
实验结果:(黄色背景的数据为论文中数据,用来和我的实验数据进行比较)
部分数据存在缺失,可能是忘记记录了,但是实验效果和论文基本一致。
通过对实验的复现,发现运行一次程序只需要十几分钟,并且主要的运行耗时都在将词向量模型载入内存这个过程中,这比动不动就需要训练几周的神经网络模型确实要好很多,并且在这个词相似性任务中,与神经网络旗鼓相当。
引言
在神经网络泛滥的时候,这篇文章像一股清流,提出了一个无监督的句子建模方法,并且给出了该方法的一些理论解释。通过该方法得到的句子向量,在STS数据集上取得了不输给神经网络的效果。句子建模算法
作者将该算法称之为WR。W表示Weighted,意为使用预估计的参数给句中的每个词向量赋予权重。
R表示Removal,意为使用PCA或者SVD方法移除句向量中的无关部分。
输入:
预训练的词向量{vw:w∈V},例如word2vec、glove等
待处理的句子集合 S
参数a(论文中建议a的范围: [1e−4,1e−3])
词频估计{p(w):w∈V}
输出:
句子向量{vs:s∈S}
实验结果
这是文中的第一个实验——句子相似性评价。
实验使用的数据集都是公共数据集,在这些数据集上方法都取得了不输给RNN和LSTM的表现。
但是在情感分析方面,该方法不及RNN和LSTM,作者分析的了可能原因:
1. 算法使用的词向量(word2vec, glove等)大都基于分布式假说——拥有相近上下文的单词具有相近的意思,但是这些词向量对句子中的antonym problem(我的理解是句子中会出现转折)的感知能力有限。
2. 对于预估计词频来确定权重的方式,在情感分析中可能不是很有效。例如,单词”not”在情感分析中是非常重要的,但是在确定权重时,采用的词频估计会导致其难以在情感分析中发挥作用。
实验复现
作者在Github上开源了该算法代码,于是我在此基础上,对作者的实验继进行复现,实验代码在我的github上实验结果:(黄色背景的数据为论文中数据,用来和我的实验数据进行比较)
部分数据存在缺失,可能是忘记记录了,但是实验效果和论文基本一致。
总结
这种句子的建模方式非常高效且便捷。由于这是一种无监督学习,那么就可以对大规模的语料加以利用,这是该方法相比于一般有监督学习的一大优势。通过对实验的复现,发现运行一次程序只需要十几分钟,并且主要的运行耗时都在将词向量模型载入内存这个过程中,这比动不动就需要训练几周的神经网络模型确实要好很多,并且在这个词相似性任务中,与神经网络旗鼓相当。
相关文章推荐
- [NLP论文阅读]A simple but tough-to-beat baseline for sentence embedding
- 读论文有感:A Sample But Tough-To-Beat Baseline For Sentence Embedding
- [NLP]论文笔记-A SIMPLE BUT TOUGH-TO-BEAT BASELINE FOR SENTENCE EMBEDDINGS
- ros-indigo卸载不全,出现The package <package name> needs to be reinstalled, but I can’t find an archive for
- How to optimize for inference a simple, saved TensorFlow 1.0.1 graph?
- 笔记-论文-PCANet A Simple Deep Learning Baseline for Image Classification?
- How To Write A Simple PHP/MySQL Web Service for an iOS App
- jQuery AJAX Call for posting data to ASP.Net page ( not Get but POST)
- A Brief Introduction to Hibernate for .NET with A Simple Example
- MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error
- A Brief Introduction to Hibernate for .NET with A Simple Example
- chromiumembedded - A simple framework for embedding chromium browser windows in other applications. - Google Project Hosting
- 论文PCANet: A Simple Deep Learning Baseline for Image Classification?的matlab源码解读(一)
- A Step-by-Step guide to create a simple FPM application using Feeder Class for FORM GUIBB
- Notes for "Next.Generation.Application.Integration.From.Simple.Information.To.Web.Services"
- The most easily way to set up a HTTP for simple simulation
- THE DEAD-SIMPLE STEP-BY-STEP GUIDE FOR FRONT-END DEVELOPERS TO GETTING UP AND RUNNING WITH NODE.JS,
- Failed to process import candidates for configuration class [com.simple.....]
- Simple sample for transforming XML to HTML by using XSLT
- -[UIWindow viewForFirstBaselineLayout]: unrecognized selector sent to instance