词向量:part 1 WordNet、SoW、BoW、TF-IDF、Hash Trick、共现矩阵、SVD

时间:2023-02-24 17:24:34

1.基于知识的表征

如WordNet(图1-1),包含同义词集(synonym sets)和上位词(hypernyms,is a关系)。

词向量:part 1 WordNet、SoW、BoW、TF-IDF、Hash Trick、共现矩阵、SVD

存在的问题:

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

2.基于数据库的表征

2.1 词本身

2.1.1 词集模型(SoW,Set of Words)

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

词向量:part 1 WordNet、SoW、BoW、TF-IDF、Hash Trick、共现矩阵、SVD

存在的问题:

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

2.1.2 词袋模型(BoW,Bag of Words)

除了考虑词是否出现外,词袋模型还考虑其出现次数,即每个词向量在其对应词处取值为该词在文本中出现次数,其余处为0。

但是,用词频来衡量该词的重要性是存在问题的,比如"the",其词频很高,但其实没有那么重要,所以可以使用TF-IDF特征来统计修正词频。

修正后的向量依旧存在数据稀疏的问题,大部分值为0,常使用Hash Trick进行降维。

TF-IDF

TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。

字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。

TF(term frequency):词在当前文本中的词频;

IDF(inverse document frequency):包含该词的文本在语料库中出现频率的倒数的对数。

\(IDF(x)=log{N \over N(x)}\),其中,N是语料库中文本的总数,N(x)是语料库中包含词x的文本的总数。

常见的IDF平滑公式之一:\(IDF(x)=log{N+1 \over N(x)+1}+1\)。

最终,词x的TF-IDF值:\(TF\)-\(IDF(x)=TF(x)*IDF(x)\)。

Hash Trick

哈希函数h将第i个特征哈希到位置j,即h(i)=j,则第i个原始特征的词频数值c(i)将会累积到哈希后的第j个特征的词频数值c'(j)上,即:\(c'(j)=\sum_{i\in J;h(i)=j}c(i)\),其中J是原始特征的维度。

但这样做存在一个问题,有可能两个原始特征哈希后位置相同,导致词频累加后特征值突然变大。

为了解决这个问题,出现了hash trick的变种signed hash trick,多了一个哈希函数\({\xi}:N{\rightarrow}{\pm}1\),此时,我们有\(c'(j)=\sum_{i\in J;h(i)=j}{\xi}(i)c(i)\)。

这样做的好处是,哈希后的特征值仍然是一个无偏的估计,不会导致某些哈希位置的值过大。从实际应用中来说,由于文本特征的高稀疏性,这么做是可行的。

注意hash trick降维后的特征已经不知道其代表的特征和意义,所以其解释性不强。

2.2 结合上下文

基本思想:近义词之间常有相似的上下文邻居。

2.2.1 共现矩阵

  • 基于整个文档:常给出文档的主题信息;
  • 基于上下文窗口:常捕获语法、语义信息。

图2.2.1-1为基于窗口大小为1、不区分左右形成的高维稀疏词向量。

词向量:part 1 WordNet、SoW、BoW、TF-IDF、Hash Trick、共现矩阵、SVD

存在的问题:

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

2.2.2 低维稠密词向量

降维

通过对共现矩阵进行SVD,如图2.2.2-1所示。

词向量:part 1 WordNet、SoW、BoW、TF-IDF、Hash Trick、共现矩阵、SVD

选择U的前k列得到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。

直接学

基于迭代:相较于基于SVD的方法直接捕获所有共现值的做法,基于迭代的方法一次只捕获一个窗口内的词间共现值。

  • word2vec
  • GloVe

词向量:part 1 WordNet、SoW、BoW、TF-IDF、Hash Trick、共现矩阵、SVD的更多相关文章

  1. 词表征 1:WordNet、0-1表征、共现矩阵、SVD

    原文地址:https://www.jianshu.com/p/c1e4f42b78d7 一.基于知识的表征 参见图1.1,WordNet中包含同义词集(synonym sets)和上位词(hypern ...

  2. Deep Learning In NLP 神经网络与词向量

    0. 词向量是什么 自然语言理解的问题要转化为机器学习的问题,第一步肯定是要找一种方法把这些符号数学化. NLP 中最直观,也是到目前为止最常用的词表示方法是 One-hot Representati ...

  3. NLP学习(1)---Glove模型---词向量模型

    一.简介: 1.概念:glove是一种无监督的Word representation方法. Count-based模型,如GloVe,本质上是对共现矩阵进行降维.首先,构建一个词汇的共现矩阵,每一行是 ...

  4. 词向量之Word2vector原理浅析

    原文地址:https://www.jianshu.com/p/b2da4d94a122 一.概述 本文主要是从deep learning for nlp课程的讲义中学习.总结google word2v ...

  5. 词向量(one-hot/SVD/NNLM/Word2Vec/GloVe)

    目录 词向量简介 1. 基于one-hot编码的词向量方法 2. 统计语言模型 3. 从分布式表征到SVD分解 3.1 分布式表征(Distribution) 3.2 奇异值分解(SVD) 3.3 基 ...

  6. NLP之词向量

    1.对词用独热编码进行表示的缺点 向量的维度会随着句子中词的类型的增大而增大,最后可能会造成维度灾难2.任意两个词之间都是孤立的,仅仅将词符号化,不包含任何语义信息,根本无法表示出在语义层面上词与词之 ...

  7. NLP获取词向量的方法(Glove、n-gram、word2vec、fastText、ELMo 对比分析)

    自然语言处理的第一步就是获取词向量,获取词向量的方法总体可以分为两种两种,一个是基于统计方法的,一种是基于语言模型的. 1 Glove - 基于统计方法 Glove是一个典型的基于统计的获取词向量的方 ...

  8. 词袋模型bow和词向量模型word2vec

    在自然语言处理和文本分析的问题中,词袋(Bag of Words, BOW)和词向量(Word Embedding)是两种最常用的模型.更准确地说,词向量只能表征单个词,如果要表示文本,需要做一些额外 ...

  9. 词袋模型(BOW,bag of words)和词向量模型(Word Embedding)概念介绍

    例句: Jane wants to go to Shenzhen. Bob  wants to go to Shanghai. 一.词袋模型 将所有词语装进一个袋子里,不考虑其词法和语序的问题,即每个 ...

随机推荐

  1. imovie的快速入门

    iMovie 的边栏区域,可让您整理和选择资源库和事件. 在"资源库"列表中选择资源库或事件时,其媒体会显示在浏览器中. 浏览器 iMovie 中的区域,用于显示"资源库 ...

  2. usb驱动开发15之设备生命线

    总算是进入了HCD的片儿区,既然来到一个片区,怎么都要去拜会一下山头几个大哥吧.,先回忆一些我们怎么到这里的?给你列举一个调用函数过程usb_control_msg->usb_internal_ ...

  3. border-collapse实现表格细线边框

    虽然在xhtml+css 时代 table的使用越来越少,但需要布局数据型元素,用table还是很不错的选择. 用table制作表格的时候美观也很重要,其中的边框.在HTML中,表格的默认样式大概是这 ...

  4. python3 nonlocal vs global

    考虑这样一个python程序: x = 12 def func(): x = 1 func() print(x) 输出为:x = 12 因为函数内部定义的x被认为只属于局部作用域,为了表明我么引用的是 ...

  5. BEvent_标准BusinessEvent用以监控供应商的修改(案例)

    2014-06-01 Created By BaoXinjian

  6. Android_life,Intent_note

    生命周期: 从出生到死亡 Activity生命周期的7个方法和3个循环 onCreate() 创建时调用onRestart() 不可见到可见时调用onStart() 用户可见时调用onResume() ...

  7. Delphi Window 消息大全使用详解

    WM_CTLCOLORSTATIC = $0138; 当一个静态控件将要被绘制时发送此消息给它的父窗口:通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置静态控件的文本和背景颜色 ...

  8. 使用gson和httpclient呼叫微信公众平台API

    吐槽:微信api很无语.有一部分xml.有一部分json. 最近看如何调用微信公众平台json有关api更方便.终于找到了httpcliect和gson对. 假设你有一个更好的办法,请告诉我. 了解如 ...

  9. Yii2 设计模式——Yii2 中用到哪些设计模式?

    Yii 2 设计模式“包含了两个方面的内容:1. 设计模式,2. Yii 2 框架. <设计模式>一书虽然以JAVA语言来表达设计模式的思想,但是设计模式远不限制于某一种特定的语言,而是在 ...

  10. UVALive 4174

    DES:给出一个字符串.连续空格的个数代表一个新的字符.奇数个表示0.偶数个表示1.然后根据这个码作为ASCII码.写出对应的字符.就是统计空格个数.二进制转换成十进制的小模拟.但是比赛的时候敲得很不 ...