文本表示(Representation)

这里写目录标题

  • 文本表示(Representation)
    • 独热编码(one-hot representation)
    • 整数编码
    • Word2vec
      • 模型整体理解
      • 我的理解
      • CBoW & Skip-gram Model
      • 改进方案
        • Hierarchical Softmax
        • Negative Sampling
        • 代码
    • Glove
      • Glove的实现
      • 模型代码
    • 参考

自然语言处理问题中,一般以词作为基本单元,例如我们想要分析“我爱中国”这句话的情感,一般的做法是先将这句话进行分词,变成,,中国。由于神经网络无法处理词,所以我们需要将这些词通过某些办法映射成词向量。词向量可以被认定为词的特征向量,可以用作代表这个词。通常把词映射为实数领域向量的技术也叫词嵌入(Word embedding).

独热编码(one-hot representation)

假如我们要计算的文本中一共出现了4个词:猫、狗、牛、羊。向量里每一个位置都代表一个词。所以用one-hot来表示就是:

  • [1,0,0,0][1,0,0,0][1,0,0,0]
  • : [1,0,0,0][1,0,0,0][1,0,0,0]
  • : [0,1,0,0][0,1,0,0][0,1,0,0]
  • : [0,0,1,0][0,0,1,0][0,0,1,0]
  • : [0,0,0,1][0,0,0,1][0,0,0,1]

但是在实际情况中,文本中很可能出现成千上万个不同的词,这时候向量就会非常长。其中大部分都是0填充。

one-hot的缺点如下:

  1. 无法表达词语之间的关系
  2. 这种过于稀疏的向量,导致计算和存储的效率都不高

整数编码

这种方式也非常好理解,用一种数字来代表一个词,对应钱买你的例子则是:

  • : 1
  • :2
  • :3
  • :4

将句子里的每个词拼起来就是可以表示一句话的向量。

整数编码的缺点如下:

  1. 无法表达词语之间的关系
  2. 对于模型解释而言,整数编码可能具有挑战性

Word2vec

Word2vec 是google在2013年推出的一个NLP工具,它的特点是能够将单词转化为向量来表示,这样词与词之间就可以定量的去度量它们之间的关系。挖掘词之间的联系。

模型整体理解

Word2vec的训练模型本质上是只具有一个隐含层的神经元网络,如下图:

它的输入是采用One-Hot编码的词汇表向量,它的输出也是One-Hot编码的词汇表向量。使用所有的样本,训练这个神经元网络,等到收敛之后,从输入层到隐含层的那些权重,便是每一个词的Distributed Representation的词向量。比如,上图单词的Word embedding后的向量便是矩阵WV∗NW_{V * N }WVN的第i行的转置。这样我们就把原本维度为VVV的词向量变成了维数为N的词向量,并且词向量间保留了一定的相关关系。

Google在关于Word2Vec的论文中提出了CBOWSkip-gram两种模型,CBOW适合于数据集较小的情况,而Skip-Gram在大型语料中表现更好。其中CBOW如上图左部分所示,使用围绕目标单词的其他单词作为输入,在映射层做加权处理后输出目标单词。与CBOW根据语境预测目标单词不同,Skip-gram根据当前单词预测语境,如下图右部分所示。假如我们有一个句子“There is an apple on the table”作为训练数据,CBOW的输入为(is,an,on,the),输出为apple.而Skip-gram的输入为apple,输出为(is, an, on , the)。

我的理解

好吧,上面这些是从其它地方copy来的。其实讲得挺好的了,大致可以理解其中的工作原理。我又针对其中的细节进行进一步分析,可以根据下图进一步梳理其中的运作流程(将上述将上面的输入输出流程拆分为最小单元,即输入一个字的one-hot得到一个输出结果,例如输入一个x1x_{1}x1得到一个Y1Y_{1}Y1):

文本表示(Representation)相关推荐

  1. 【NLP】如何在文本分类任务中Fine-Tune BERT

    问 题 BERT在许多自然语言理解(NLU)任务中取得了惊人的成果,但它的潜力还有待充分挖掘.目前很少有如何能进一步提高BERT性能的研究,因此,如何通过一些技巧和方法最大限度的提升BERT在文本分类 ...

  2. php文本域输出_如何在文本分类任务中Fine-Tune BERT

    问 题 BERT在许多自然语言理解(NLU)任务中取得了惊人的成果,但它的潜力还有待充分挖掘.目前很少有如何能进一步提高BERT性能的研究,因此,如何通过一些技巧和方法最大限度的提升BERT在文本分类 ...

  3. 论文小综 | 知识图谱表示学习中的零样本实体研究

    转载公众号 | 浙大KG 本文作者| 耿玉霞,浙江大学在读博士,主要研究方向为知识图谱.零样本学习及可解释性 前言 随着知识图谱表示学习算法的蓬勃发展,在各个领域中都得到了广泛的应用,如推荐系统.知识 ...

  4. NLP中的Embedding方法总结

    文章目录 词向量 One-Hot Encoding 学习资料 要点 缺点 Word2Vec 学习资料 要点 负采样(negative sampling)与分层softmax(hierarchical ...

  5. 基于表征(Representation)的文本匹配、信息检索、向量召回的方法总结

    作者 | 夜小白 整理 | NewBeeNLP 最近系统性的看了一些有关于信息检索.文本匹配方向的论文,先贴下三篇主角论文: 「(ColBERT)」 Khattab, O., & Zahari ...

  6. 文本表征 Text Representation

    基于 one-hot.tf-idf.textrank 等的 bag-of-words: 主题模型:LSA(SVD).pLSA.LDA: 基于词向量的固定表征:Word2vec.FastText.Glo ...

  7. 文本表示(Text Representation)之词集模型(SOW)词袋模型(BOW)TF-IDF模型

    转载请注明来源 http://blog.csdn.net/Recall_Tomorrow/article/details/79488639 欢迎大家查看这些模型简单实现的代码--     \ \ \ ...

  8. nlp文本数据增强_如何使用Texthero为您的NLP项目准备基于文本的数据集

    nlp文本数据增强 Natural Language Processing (NLP) is one of the most important fields of study and researc ...

  9. 一文综述经典的深度文本分类方法

    作者 |  何从庆 转载自AI算法之心(ID:AIHeartForYou) 笔者整理最近几年比较经典的深度文本分类方法,希望帮助小伙伴们了解深度学习在文本分类中的应用. Convolutional N ...

  10. 五年12篇顶会论文综述!一文读懂深度学习文本分类方法

    作者 | 何从庆 来源 | AI算法之心(ID:AIHeartForYou) 最近有很多小伙伴想了解深度学习在文本分类的发展,因此,笔者整理最近几年比较经典的深度文本分类方法,希望帮助小伙伴们了解深度 ...

最新文章

  1. bitcoinj开发环境搭建
  2. 静态函数一个有用的设计模式
  3. rocktmq 消息延时清空_RocketMQ-延时消息
  4. C#LeetCode刷题之#409-最长回文串(Longest Palindrome)
  5. AngularJS日期格式化
  6. mysql dump 导出表_误删库,别跑路!教你一招MySQL 数据恢复
  7. Cordova用插件时注意事项,不然,插件调用不到!
  8. Hadoop系列之九:Hadoop集群伪分布式模式的实现详解
  9. 深入探讨apply()方法的作用
  10. 博通网卡管理软件Linux,Broadcom博通网卡管理软件 V16.6.2.10官方安装版
  11. 数据中台和数仓的关系
  12. 飞腾64核服务器cpu芯片,【今日头条】飞腾64核CPU适配百度昆仑AI处理器:全国产的AI体系登场...
  13. 主引导记录(MBR)、硬盘分区表(DPT)、扩展引导记录(EBR)
  14. BeautifulSoup说明
  15. 关于编程语言和编程工具
  16. Fedora安装字体方法和Ubuntu非常不同!
  17. 安卓开发SlidingDrawer实现抽屉效果
  18. Hive-时间日期trunc-日期与数字截取函数
  19. switch中开关语句报错 语法错误:“}”的问题?
  20. install developing enviroment

热门文章

  1. 微软时间服务器同步错误,Windows Server 设置时间同步出错问题
  2. FAT32与NTFS区别
  3. 模拟点击框架网页内无id无name的按钮
  4. 解决tensorflow2.x中使用tf.contrib.slim包时出现的No module named:tensorflow.contrib 问题
  5. JAVA实现Tom猫
  6. Python sorted函数|sorted([13,1,237,89,100],key=lambda x:len(str(x)))
  7. 数据库管理员、系统分析员、数据库设计人员,应用程序员的职责是什么?
  8. 云空间为您提供10G免费全能空间
  9. HttpWatch工具简介及使用技巧(转)
  10. C# eval()函数浅谈