wordvector
NLP 任务中最基本的运算单元应该是词了,处理的所有词组成在一起就行成了词库,但是词库是稀疏的,所以我们需要将词转换成计算所熟知的实数,这种表示方式就是词嵌入(Word Embedding)。
One-hot
最简单也是最直接的方式应该是使用One-hot方法,假设词表的数量是V,则每一个词就是一个长度为V的向量,所有词依次排开,每个词相对应位置为1,否则就是0,该种方式其实就是一个词和向量的映射表。但是这种方法表示方便,直接,但是有如下几个缺点:
- 词向量的长度和词库长度相关,如果词库很长,则每个词表示一个非常长的向量,其中只有一个地方为1,其余都是0,表示效率低下
- 无法表示词和词之间的关系,比如:good 和prefect 两个词都表示好的意思,但是拿两者之间的cos 距离是0,也就是说两者无关系,这明显是不合适的。
所以人们为了更好表示Word,就想出了很多词嵌入方法。
基本假设
在将词表示成向量时,人民大多基于下面假设:“如果两个词有相同上下文,则两个词就有相似的含义”,这个观点在一些NLP任务中很直接,也很有用。比如对于POS任务,两个词有相同的使用方法,则两个词的词性非常有可能是相同的。但是对于特定任务时却有很大偏差。比如情感分类任务,Good 和Bad 有相同的词性,但是意义却完全相反。
所以人们如上问题提出过很多Word Embedding方法。
方法
Context-base
Context-Base方法,这种方法就是利用上下文信息,计算当前词和上下文的关联度如何,尽可能提高训练数据中上下文关联度,降低噪音关联度。其损失如下:
其中表示经过神经网络计算当前词和上下文相关度。表示噪音,噪音可以是词库中随机搜索的词。从loss 可以看出,上下文相关度越高越好,而噪音计算的相关度越低越好。
sentiment-base
Sentiment-Special Base,这种方法和Context-Base的假设不同,这是一种积分模型,只要对情感的预测时正确的概率比错误概率高就可以不需要对gold polarity 预测达到最高。损失如下:
2.png
其中 表示预测正类分数,表示预测负类分数,是一个指示函数,当gold 是True 是为1,否则为-1。
skip-gram
Skip-Gram 应该是最熟悉的一种word embedding了,其原理是使用中间词预测上下文。
3.png
这种方法应该不用多数
extend sentiment-base
这种方式是对sentiment-base 的一种扩展,或者说是 sentiment-base+skip-gram 的组合,该种方法就是把skip-gram 和sentiment-base显性表示。不仅需要预测出上下文还要对句子的整体polarity最初正确预测。
4.png
网友评论