词表征 1:WordNet0-1表征共现矩阵SVD

Posted cherrychenlee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了词表征 1:WordNet0-1表征共现矩阵SVD相关的知识,希望对你有一定的参考价值。

原文地址:https://www.jianshu.com/p/c1e4f42b78d7

一、基于知识的表征

技术图片

参见图1.1,WordNet中包含同义词集(synonym sets)和上位词(hypernyms, is a关系)。
其存在的问题为:

  • 作为资源来说是好的,但是它失去了词间的细微差别;
    比如说"good"和"full"同义是需要在一定的上下文中才能成立的。
  • 易错过词的新义,基本不可能时时保持up-to-date;
  • 是人为分的,所以是主观的结果;
  • 需要花费很多的人力去创建和调整;
  • 很难计算出准确的词间相似度。

二、基于数据库的表征

(一)词本身

技术图片

参见图2.1,0-1表征中,向量维度为数据库中总词汇数,每个词向量在其对应词处取值为1,其余处为0。
其存在的问题为:

  • 因为不同词间相互正交,所以很难计算词间相似度。

(二)结合上下文

基本思想:相似的词有相似的上下文。

1、共现矩阵

1)基于整个文档

词-文档共现矩阵\(\in R^{|V|*M}\),其中,\(|V|\)为词汇量大小,\(M\)为文档数量。
常给出文档的主题信息。

2)基于上下文窗口

词-词共现矩阵\(\in R^{|V|*|V|}\),其中,\(|V|\)为词汇量大小。
窗口大小常取5~10,通常对称、不分左右。
常捕获语法、语义信息。
技术图片

图2.2中红框部分为基于窗口大小为1、不区分左右形成的"love"、"enjoy"对应的高维稀疏词向量。
其存在的问题为:

  • 共现矩阵的大小随着词汇量的增多而变大;
  • 维度高;
  • 数据稀疏带来的鲁棒性差。

2、低维稠密词向量

1)基于SVD进行降维

技术图片

通过对共现矩阵进行SVD,得\(X=USV^T\)。选择\(U\)的前\(k\)列得到\(k\)维词向量。
通过计算\(\frac{\sum_{i=1}^{k}s_i}{\sum_{j=1}^{|V|}s_j}\)得到前\(k\)维捕获到的信息比例。
其优势为:

  • 有效地利用了统计信息。

其存在的问题为:

  • 难以加入新词,每次来个新词,都得更新共现矩阵,然后重新SVD;
  • 由于大多数词不共现,导致矩阵十分稀疏;
  • 矩阵维度通常很高(\(\approx 10^6*10^6\));
  • 计算代价高,对于\(n*m\)的矩阵为\(O(nm^2)\)
  • 需要对共现矩阵进行处理来面对词频上的极端不平衡现象。

其常用的解决办法为:

  • 忽视"the"、"he"、"has"等功能词或者限制其次数不超过某个值(常100);
  • 基于文档中词间距离对共现矩阵中的count进行加权处理,常窗口中离中心词越近的词分配给其的权重越大;
  • 使用Pearson相关系数(\(C(X,Y)=\frac{cov(X,Y)}{\sigma(X)*\sigma(Y)}\))来代替原本的count,负数置0。

以上是关于词表征 1:WordNet0-1表征共现矩阵SVD的主要内容,如果未能解决你的问题,请参考以下文章

词向量:GloVe

NLP教程 | 词向量SVD分解与Word2Vec

奇异值分解SVD

词向量:1.词表征

SVD解决词分布式表示稀疏性

如何用 sklearn 计算词-词共现矩阵?