词向量到word2vec与相关应用

一 NLP常见任务

1 自动摘要

2 指代消解 小明放学了,他妈妈去接

3 机器翻译 小心 ---> care

4 词性标注 heat(n)

5 分词(中文,日文等) 大水沟/很/难/过

6 主题识别

7 文本分类

二 NLP处理方法

传统: 基于规则

p现代: 基于统计机器学习

HMM, CRF, SVM, LDA, CNN…

“规则”隐含在模型参数里

词编码需要保证词的相似性:

词向量到word2vec与相关应用

简单 词/短语 翻译:词向量到word2vec与相关应用

向量空间子结构:

VKing - VQueen + VWomen = VMan

VParis - VFrance + VGerman = VBerlin

最终目标: 词向量表示作为机器学习、 特别是深度学习的输入和表示空间。

在计算机中表示一个词:

猫 美丽

❖动物 ❖多姿

❖胎生 ❖靓丽

❖有毛 ❖好看

❖弹跳性好 ❖俊俏

❖体型小 ❖迷人

❖宠物 ❖标志

❖吃肉 ❖端庄

问题:

1.不能分辨细节的差别 2.需要大量人为劳动 3.主观 4.无法发现新词 5.难以精确计算词之间的相似度。

离散表示: One-hot表示:

语料库

John likes to watch movies. Mary likes too.

John also likes to watch football games.

词典

{"John": 1, "likes": 2, "to": 3, "watch": 4, "movies": 5, "also":

6, "football": 7, "games": 8, "Mary": 9, "too": 10}

One-hot表示

John: [1, 0, 0, 0, 0, 0, 0, 0, 0, 0]

likes: [0, 1, 0, 0, 0, 0, 0, 0, 0, 0]

too : [0, 0, 0, 0, 0, 0, 0, 0, 0, 1]

❖词典包含10个单词, 每个单词有唯一索引

❖在词典中的顺序和在句子中的顺序没有关联

词向量到word2vec与相关应用

词向量到word2vec与相关应用

三 语言模型:

一句话 (词组合) 出现的概率:

词向量到word2vec与相关应用

Unigram/1-gram

词向量到word2vec与相关应用

Bi-gram/2-gram

词向量到word2vec与相关应用

无法衡量词向量之间的关系

酒店 [0, 1, 0, 0, 0, 0, 0, 0, 0, 0]

宾馆 [0, 0, 0, 0, 1, 0, 0, 0, 0, 0] 各种度量(与或非、 距离都不合适

旅舍 [0, 0, 0, 0, 0, 0, 0, 0, 1, 0] 太稀疏, 很难捕捉文本的含义

Ø词表维度随着语料库增长膨胀

Øn-gram词序列随语料库膨胀更快

Ø数据稀疏问题

分布式表示 (Distributed representation):

词向量到word2vec与相关应用

用一个词附近的其他词来表示该词 :

“Youshallknowawordbythecompanyitkeeps”

(J.R.Firth1957:11)

现代统计自然语言处理中最有创见的想法之一。

词向量到word2vec与相关应用

banking附近的词将会代表banking的含义

共现矩阵 (Cocurrence matrix):

Word - Document 的共现矩阵主要用于发现主题(topic), 用于主题模型, 如LSA (Latent Semantic Analysis)局域窗中的Word - Word 共现矩阵可以挖掘语法和语义信息。

•Ilikedeeplearning.

• IlikeNLP.

• Ienjoyflying.

windowlength设为1(一般设为5~10)

使用对称的窗函数(左右windowlength都为1)

词向量到word2vec与相关应用

将共现矩阵行(列)作为词向量存在的问题:

•向量维数随着词典大小线性增长

•存储整个词典的空间消耗非常大

•一些模型如文本分类模型会面临稀疏性问题

构造低维稠密向量作为词的分布式表示 (25~1000维)!

SVD降维:

Ø最直接的想法: 用SVD对共现矩阵向量做降维。

词向量到word2vec与相关应用

词向量到word2vec与相关应用

SVD存在的问题:

Ø计算量随语料库和词典增长膨胀太快, 对X(n,n)维的矩阵, 计算量O(n^3)。 而对大型的语料库,n~400k, 语料库大小1~60B token。

Ø难以为词典中新加入的词分配词向量

Ø与其他深度学习模型框架差异大

NNLM (Neural Network Language model):

词向量到word2vec与相关应用

结构:


词向量到word2vec与相关应用

词向量到word2vec与相关应用

word2vec: CBOW(连续词袋):

词向量到word2vec与相关应用

CBOW: 层次Softmax:

词向量到word2vec与相关应用

词向量到word2vec与相关应用

Sigmoid函数

词向量到word2vec与相关应用

Ø[[n(w,j+1)=ch(n(w,j)]] 是选择函数, 表明只选择从根节点到目

标叶节点路径上的内部节点

Øn(w,j): Huffman数内部第j层的节点

Øch(n(w,j)): n节点的child节点

词向量到word2vec与相关应用

CBOW: 负例采样:

P(w|context(w)): 一个正样本, V-1个负样本, 对负样本做采样词向量到word2vec与相关应用

损失函数: 对语料库中所有词w求和:

词向量到word2vec与相关应用

词向量到word2vec与相关应用

Word2Vec: Skip-Gram模型:

词向量到word2vec与相关应用

Word2Vec: 存在的问题:

Ø对每个local context window单独训练, 没有利用包含在global co-currence矩阵中的统计信息。

Ø对多义词无法很好的表示和处理, 因为使用了唯一的词向量。

词嵌入可视化: 公司 — CEO:

词向量到word2vec与相关应用

词嵌入可视化: 词向

词向量到word2vec与相关应用

词嵌入可视化: 比较级和最高级:

词向量到word2vec与相关应用

词嵌入效果评估: 词类比任务:

词向量到word2vec与相关应用

GloVe与Word2Vec对比:

词向量到word2vec与相关应用

GloVe随着迭代次数增加, 精度提升。

Word2Vec未使用类似迭代次数的Epoch, 用Negative Samples模拟。

五 总结

离散表示

•One-hot representation, Bag Of Words Unigram语言模型

•N-gram词向量表示和语言模型

•Co-currence矩阵的行(列)向量作为词向量

❖分布式连续表示

•Co-currence矩阵的SVD降维的低维词向量表示

•Word2Vec: Continuous Bag of Words Model

•Word2Vec: Skip-Gram Model

工具google word2vec:

词向量到word2vec与相关应用

工具gensim:

词向量到word2vec与相关应用

词向量到word2vec与相关应用

工具gensim中文处理案例:

词向量到word2vec与相关应用

Word2vec+CNN做文本分类:

论文详见《Convolutional Neural Networks for Sentence Classification》

http://arxiv.org/abs/1408.5882

Theano完成的代码版本:

https://github.com/yoonkim/CNN_sentence

TensorFlow改写的代码版本:

https://github.com/dennybritz/cnn-text-classification-tf

添加分词和中文词向量映射之后, 可用于中文文本分类(情感分析)

关注机器学习,深度学习,自然语言处理等方面的知识。 有什么问题随时和我交流。


分享到:


相關文章: