词向量表示

分类

离散表示

  • One-hot representation, Bag Of Words Unigram语言模型
  • N-gram词向量表示和语言模型
  • Co-currence矩阵的行(列)向量作为词向量

分布式连续表示

  • Co-currence矩阵的SVD降维的低维词向量表示
  • Word2Vec: Continuous Bag of Words Model
  • Word2Vec: Skip-Gram Model

优缺点

离散表示的问题:
1> 无法衡量词向量之间的关系
2> 词表维度随着语料库增长膨胀
3> n-gram词序列随语料库膨胀更快
4> 数据稀疏问题

I. 离散表示

1. one-hot表示

1)设立语料库
John likes to watch movies. Mary likes too.
John also likes to watch football games.
2)根据语料库构建的词典
{“John”: 1, “likes”: 2, “to”: 3, “watch”: 4, “movies”: 5, “also”: 6, “football”: 7, “games”: 8, “Mary”: 9, “too”: 10}
3) 把上面词典中词按照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个单词,每个单词有唯一索引
❖ 在词典中的顺序和在句子中的顺序没有关联

2. 词袋模型(Bag of Words)

1)文档的向量表示可以直接将各词的词向量表示加和
John likes to watch movies. Mary likes too. => [1, 2, 1, 1, 1, 0, 0, 0, 1, 1]
John also likes to watch football games. => [1, 1, 1, 1, 0, 1, 1, 1, 0, 0]
2)计算词权重 TF-IDF
Bi-gram和N-gram
词袋模型的问题:未考虑词的顺序

3. Co-currence共现矩阵的行(列)向量作为词向量

共现矩阵的目的
Word - Document 的共现矩阵主要用于发现主题(topic),用于
主题模型,如LSA (Latent Semantic Analysis)
共现矩阵存在的问题
• 向量维数随着词典大小线性增长
• 存储整个词典的空间消耗非常大
• 一些模型如文本分类模型会面临稀疏性问题
• 模型会欠稳定
解决方案
构造低维稠密向量作为词的分布式表示 (25~1000维)!

II. 分布式连续表示

分布式表示可以降低表达的复杂度,节省空间。
词向量表示_第1张图片

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

为了解决上面提到的共现矩阵维度太高的问题,最直接的想法就是通过SVD对共现矩阵向量进行降维。但它同样存在很多问题:

  • 计算量随语料库和词典增长膨胀太快,对X(n,n)维 的矩阵,计算量O(n^3)。 而对大型的语料库, n-400K,语料库大小1~60B
    token
  • 因为词库字典被定死了,难以为词典中新加入的词分配词向量
  • 与其他深度学习模型框架差异大
Word2Vec: Continuous Bag of Words Model

词向量表示_第2张图片
词向量表示_第3张图片
词向量表示_第4张图片

Word2Vec: Skip-Gram Model

词向量表示_第5张图片

word2vec的缺点
  • 对每个local context window单独训练,没有利用包 含在global co-currence矩阵中的统计信息
  • 对多义词无法很好的表示和处理,因为使用了唯一 的词向量

本文内容根据七月学堂课件内容整理而成

你可能感兴趣的:(NLP)