NLP词嵌入

  • 一、词嵌入背景
  • 二、词嵌入方法介绍
    • 1.词的独热表示
      • (1)one-hot编码转换
      • (2)Bag of Word模型(BOW)
    • 2.词的分布式表示
      • (1)Word2Vec模型
        • Skip-Gram模型
        • CBOW模型
        • 比较Skip-Gram与CBOW
      • (2)GloVe词向量模型

一、词嵌入背景

  • 在做一些自然语言处理的相关问题时,我们可能不由的会产生一个疑惑,好好的一句话或者一个字或词是怎么被计算机处理的呢?因为,毕竟文字和单词等等都是人类智慧的一种抽象结晶,那当然计算机无法直接对文字进行处理,这个时候就需要我们先对文字或者单词做一些操作,可以尝试着把它们转换成数值形式或者说是数学可以表示的形式,然后让计算机能够看懂并理解 what it is! 故,我们给出词嵌入的概念。
  • 词嵌入(Word Embedding)是一种将文本中的词转换成向量的方法,为了使用标准机器学习算法来对它们进行分析,就需要把这些被转换成数字的向量以数字形式作为输入。通俗来讲,是指能让一个词语摆脱其抽象的人类属性,让其转变成一种从数学上就可以理解的方法。
  • 下面我们来介绍几种词嵌入的实现方法:

二、词嵌入方法介绍

1.词的独热表示

(1)one-hot编码转换

  • 假设我们现在有一条句子"I really miss you"作为样本,这一样本(语句)中共有4个单词,而且每一个单词都是不同的,是独一无二的。

  • 因此我们结合one-hot编码的思想,可以将这4个单词分别表示为
    I=[1,0,0,0]I \ \ \ \ \ \ \ \ \ = [1, 0, 0, 0]I=[1,0,0,0]
    really=[0,1,0,0]really \ = [0, 1, 0, 0]really=[0,1,0,0]
    miss=[0,0,1,0]miss \ \ \ = [0, 0, 1, 0]miss=[0,0,1,0]
    you=[0,0,0,1]you \ \ \ \ \ \ = [0, 0, 0, 1]you=[0,0,0,1]
    那么这条语句是不是就可以表示成一个4x4的二维矩阵了呢?
    形如:[[1,0,0,0][0,1,0,0][0,0,1,0][0,0,0,1]][[1, 0, 0, 0][0, 1, 0, 0][0, 0 ,1, 0][0, 0, 0, 1]][[1,0,0,0][0,1,0,0][0,0,1,0][0,0,0,1]]

  • 如果更一般化的话,我们可以结合one-hot编码的思想把一个语句转换成一个MxN的矩阵,其中M为句子中的单词个数,N为句子中单词的种类(因为每出现一个新的单词意味着要多一种存储形式)。

  • one-hot编码转换的缺点
    1.其实仔细观察就会发现我们的得到的矩阵其实是一个相当稀疏的稀疏矩阵,因为one-hot对每个单词的编码只有一位是1,其余的位全部都是0,所以这是一种极大的内存浪费。
    2.一旦我们单词的种类变多了,像我们的中文语料库中的常用汉字都有个三五千的,英文常用单词更是有两万左右,所以我们得到的矩阵尺寸太大啦!!!

(2)Bag of Word模型(BOW)

  • 词袋模型(Bag-of-words model,BOW),BOW模型假定对于一个文档,忽略它的单词顺序和语法、句法等要素,将其仅仅看作是若干个词汇的集合,文档中每个单词的出现都是独立的,不依赖于其它单词是否出现。
  • 将句子向量化,维数和字典大小一致,第 i 维上的数值代表ID为 i 的词语在这个句子里出现的频次
  • {"I":1,"really":2,"miss":3,"you":4}\{"I": 1,\ "really": 2,\ "miss": 3,\ "you": 4\}{"I":1,"really":2,"miss":3,"you":4}
    I=[1,0,0,0]I \ \ \ \ \ \ \ \ \ = [1, 0, 0, 0]I=[1,0,0,0]
    really=[0,1,0,0]really \ = [0, 1, 0, 0]really=[0,1,0,0]
    miss=[0,0,1,0]miss \ \ \ = [0, 0, 1, 0]miss=[0,0,1,0]
    you=[0,0,0,1]you \ \ \ \ \ \ = [0, 0, 0, 1]you=[0,0,0,1]
    Ireallymissyou=[1,1,1,1]I\ really\ miss\ you = [1, 1, 1, 1]Ireallymissyou=[1,1,1,1]
    Ireallyreallyreallymissyou=[1,3,1,1]I\ really\ really\ really\ miss\ you = [1, 3, 1, 1]Ireallyreallyreallymissyou=[1,3,1,1]
  • 缺点
    1.不能保留语义:不能保留词语在句子中的位置信息,“你爱我” 和 “我爱你” 在这种方式下的向量化结果依然没有区别。“我喜欢北京” 和 “我不喜欢北京” 这两个文本语义截然相反,利用这个模型得到的结果却能认为它们是相似(向量距离近)的文本。
    2.维数高和稀疏性:当语料增加时,那么维数也会不可避免的增大,一个文本里不出现的词语就会增多,导致矩阵稀疏

2.词的分布式表示

  • 传统的独热表示仅仅将词符号化,不包含任何语义信息。那我们要如何将语义融入到词表示中?“分布假说”为这一设想提供了理论基础:上下文相似的词,其语义也相似。其进一步的阐述和明确:词的语义由其上下文决定。

(1)Word2Vec模型

  • Word2Vec模型中,主要有Skip-Gram和CBOW两种模型。

Skip-Gram模型

  • Skip-Gram是给定input word来预测上下文

CBOW模型

  • 在Skip-Gram模型中,我们从目标单词预测上下文单词。CBOW模型则是给定上下文,来预测input word

上述两个模型后续会出博客来具体介绍的,现先不做过多解释。

比较Skip-Gram与CBOW

  • 在给定一批数据中,对于给定单词的上下文,CBOW接受的信息多于Skip-Gram。与Skip-Gram相比,CBOW模型在给定时间可以访问更多信息(输入),从而允许CBOW在某些条件下执行得更好。与Skip-Gram相比,CBOW损失快速下降。
  • Skip-Gram在语义任务中表现更好,而CBOW在句法任务中的表现更好。与CBOW相比,Skip-Gram更适用于大型数据集,我们的任务只涉及相对较小的数十万字,CBOW可能表现更好。因为Skip-Gram,单词之间分开,更多关注单词之间的细微差别,CBOW根据语义,会认为近义词之间没有差别,对给定上下文的所有单词进行平均。

(2)GloVe词向量模型

  • 尽管Word2Vector在学习词与词间的关系上有了大进步,但是它仍有很明显的缺点:只能利用一定窗长的上下文环境,即利用局部信息,没法利用整个语料库的全局信息。鉴于此,斯坦福的GloVe诞生了,它的全称是global vector,很明显它是要改进Word2Vector,成功利用语料库的全局信息。

后续会出博客来具体介绍的,现先不做过多解释。

2021-07-26 NLP词嵌入相关推荐

  1. NLP数据预处理与词嵌入

    NLP数据预处理与词嵌入 NLP数据预处理 读入语料库 首先准备一个语料库,实际上就是一个 txt 文件,这里用的是小说 time machine ,该语料库比较短小,仅有 ~3000 行,~3000 ...

  2. NLP基础知识(语法语义、LDA、N-gram、词嵌入)

    文章目录 本节课大纲 Hyper-simplified linguistics Term spotting + handling negation, uncertainty ML to expand ...

  3. NLP领域的ImageNet时代:词嵌入已死,语言模型当立

    NLP领域的ImageNet时代:词嵌入已死,语言模型当立 https://www.toutiao.com/a6742137243487437316/ NLP领域的ImageNet时代:词嵌入已死,语 ...

  4. NLP之WE之Skip-Gram:基于TF利用Skip-Gram模型实现词嵌入并进行可视化、过程全记录

    NLP之WE之Skip-Gram:基于TF利用Skip-Gram模型实现词嵌入并进行可视化 目录 输出结果 代码设计思路 代码运行过程全记录 输出结果 代码设计思路 代码运行过程全记录 3081 or ...

  5. 【NLP】词嵌入基础和Word2vec

    0.导语 词嵌入是自然语言处理(NLP)中语言模型与表征学习技术的统称.概念上而言,它是指把一个维数为所有词的数量的高维空间嵌入到一个维数低得多的连续向量空间中,每个单词或词组被映射为实数域上的向量. ...

  6. 【NLP】用code2vec、glow和spaCy进行词嵌入

    作者 | Maria Malitckaya 编译 | VK 来源 | Towards Data Science 改进机器学习模型的一个有效方法是使用词嵌入.使用词嵌入,你可以捕获文档中单词的上下文,然 ...

  7. 直播 | ACL 2021论文解读:为结构预测问题自动寻找更强的词嵌入拼接方式

    「AI Drive」是由 PaperWeekly 和 biendata 共同发起的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和 ...

  8. 【NLP】毕设学习笔记(一):词袋模型、主题模型、词嵌入

    NLP分类方法历史 词袋模型(1954) One-hot TF-IDF N-gram 主题模型(1998) LSA pLSA LDA 词嵌入(word embedding) word2vec(2013 ...

  9. 机器学习解决问题思路 — 词嵌入矩阵E对于NLP问题的重要性

    下面是我对机器学习解决问题的一个理解: 机器需要做的事: 现象1 ->数据结构1 -> 数据结构2 -> 现象2 1.从现象1->数据结构1,为了让机器了解是一个什么现象,此过 ...

  10. 【NLP】文献翻译1——基于结构和词嵌入的文本相似性测量方法

    Measuring text similarity based on structure and word embedding 摘要 1. 简介 2. 相关工作 3. 句子相似性 3.1 基于结构的相 ...

最新文章

  1. Mybatis中Oracle和Mysql的Count字段问题
  2. PXE网络无人值守装机
  3. (转)JS之——解决IE6、7、8使用JSON.stringify报JSON未定义错误的问题
  4. python简单代码编写-Python | 编写一个简单的Excel处理脚本
  5. PWN-PRACTICE-BUUCTF-27
  6. OAuth2.0授权协议的一个简单解释
  7. Mac精品软件分享第一期
  8. 【leetcode 简单】第十七题 x 的平方根
  9. 如何快速教妹子学Python?这个方法火了!
  10. mysql查询结果添加序号
  11. VMware导入vmdk格式的文件 踩了一堆坑~~~
  12. discuz模板文件说明
  13. 恒生期货交易时间(恒生指数期货交割日期)
  14. Cloud Foundry 运行bosh create-env时报错: TLS handshake timeout
  15. CLR via C#:与WinRT组件互操作
  16. css-浮动布局与样式规则
  17. MySQL 慢查询日志 使用方法浅析 日志定位与优化技巧
  18. 多视图几何学(Multiple View Geometry)读书笔记目录
  19. 【Leetcode】644. Maximum Average Subarray II
  20. 孟郎诗词网3.0版本问题总结

热门文章

  1. 学校计算机考试系统故障,解决在线考试系统设计的常见问题
  2. fdfs文件服务环境搭建详细教程
  3. html——页面内跳转
  4. STM8L开发环境配置
  5. 第二个项目---EMOS企业在线办公小程序
  6. HTTP错误状态码详解
  7. 网络安全实验室|网络信息安全攻防学习平台(基础关1-12)
  8. scratch做了个病毒大战的游戏,欢迎朋友们试玩,多提意见
  9. itext tif图片转为pdf
  10. java之上三角矩阵,判断上三角矩阵