[1] 名词理解

  embedding层:嵌入层,神经网络结构中的一层,由embedding_size个神经元组成,[可调整的模型参数]。是input输入层的输出。

  词嵌入:也就是word embedding…根据维基百科,被定义为自然语言处理NLP中的一组语言建模和特征学习技术的集体名称,其中来自词汇表的单词或者短语被映射成实数向量。

  word2vec:词嵌入这个技术的具体实现,也可以理解成是将向量从高维度映射到低维度的计算过程。 具体的包含两种处理方式也就是两个典型的模型—CBOW模型和SG模型。假设,原始数据有F个特征,通过one-hot编码后,表示成N维的向量,即input层的维度是N,和权重矩阵相乘,变成embedding_size维的向量。(embedding_size <N)

  词向量:也就是通过word2vec计算处理后的结果的释义。比如说…从input输入层到embedding层的权重矩阵,记作是N*embedding_size的,那么这个矩阵的一行就是一个词向量,是第几行就对应input输入层one-hot编码中第几列那个1所对应的词。

[2] embedding层模型

  embedding层模型如下图所示:

很多人说【词向量只是embedding层训练的一个中间产物】,从上面的模型图中可以很容易理解。在深度学习处理此类问题中,我们关心的是文本如果通过向量表示,向量化的文本才是最终产物。对于embedding层,输入是分词后的序列,输出是向量化文本,中间会计算参数矩阵,就是词向量。所以说它是中间产物。

[2.1] 文本预处理

  首先拿到的数据集是比较原始的,一条文本(content)+标签(label):

content|label
皮肤真好啊|女性
翻开课本|校园

  然后要对文本进行分词,一条文本(词语list)+标签(label):

content|label
['皮肤','真好','啊']|女性
['翻开','课本']|校园

  构建数据集的词典,把文本用词典索引表示:
  · 词典:

0 '皮肤'
1 '真好'
2 '啊'
3 '翻开'
4 '课本'

   ·表示:

content|label
[0, 1, 2]|女性
[3, 4]|校园

[2.2] 数据集分批(batch)

  这里使用的是torch的分批。

  同一batch里,文本长度要一致。所以torch会使长度相近的文本分在一个batch里,这样降低填充/删减文本数据带来的误差。

[2.3] 参数矩阵(词向量)

  上图中,假设1个batch内的文本数为k,每篇文本中的词语数为4,嵌入层的维度为n,|v|为词典中的总词数,那么输入为(k,4)的张量,文本矩阵为(k,4,n)的三维张量,嵌入层参数矩阵形状为(|v|,n)。

  从降维的角度看,定义了嵌入层的维度为n后,词向量就是把词典中的所有词用n个维度来表征出来,相当于特征提取。

  举个例子:假设词典里面的每个词是一个个人,那么嵌入层维度就相当于人的‘鼻子’、‘眼睛’、‘身高’等等属于人的特征。那么我取嵌入层维度为n,就是取在我本次词典中的这些人,最能区别他们的前n个特征是什么、权重如何。只不过我们提取出的词典的n个特征并不是那么好理解,没法像‘鼻子’、‘眼睛’、‘身高’这么直观。

[2.4] 文本矩阵

  对于一个batch中的一条文本,会有一个文本矩阵。这个文本矩阵的行数是这个文本的词数,列数是嵌入层维度。好好看看上图,理解一下对应关系,图中已经用颜色标注。但这不是最终输出。

[2.5] 最终输出的文本矩阵

  在文本矩阵的基础上,相加求均值。

[3] embedding层批次与word2vec

  embedding层模型如上图所示。在得到batch数据之后,Embedding层还不能直接计算,需要使用word2vec算法思想来把数据进一步细分,之后才能训练。

  Word2Vec模型介绍

  Word2Vec模型实际上分为了两个部分,第一部分为训练数据集的构造,第二部分是通过模型获取词嵌入向量,即word embedding。

  Word2Vec的整个建模过程实际上与自编码器(auto-encoder)的思想很相似,即先基于训练数据构建一个神经网络,当这个模型训练好以后,并不会用这个训练好的模型处理新任务,而真正需要的是这个模型通过训练数据所更新到的参数。

  关于word embedding的发展,由于考虑上下文关系,所以模型的输入和输出分别是词汇表中的词组成,进而产生出了两种词模型方法:Skip-Gram和CBOW。同时,在隐藏层-输出层,也从softmax()方法演化到了分层softmax和negative sample方法。

  所以,要拿到每个词的词嵌入向量,首先需要理解Skip-Gram和CBOW。下图展示了CBOW和Skip-Gram的网络结构:

  以Skip-Gram为例,来理解词嵌入的相关知识。Skip-Gram是给定input word来预测上下文。我们可以用小学英语课上的造句来帮助理解,例如:“The __________”。

  关于Skip-Gram的模型结构,主要分为几下几步:

  1、从句子中定义一个中心词,即Skip-Gram的模型input word
  2、定义skip_window参数,用于表示从当前input word的一侧(左边及右边)选取词的数量。
  3、根据中心词和skip_window,构建窗口列表。
  4、定义num_skips参数,用于表示从当前窗口列表中选择多少个不同的词作为output word。

  假设有一句子"The quick brown fox jumps over the lazy dog" ,设定的窗口大小为2(window_size=2),也就是说仅选中心词(input word)前后各两个词和中心词(input word)进行组合。如下图所示,以步长为1对中心词进行滑动,其中蓝色代表input word,方框代表位于窗口列表的词。

  所以,我们可以使用Skip-Gram构建出神经网络的训练数据。

  我们需要明白,不能把一个词作为文本字符串输入到神经网络中,所以我们需要一种方法把词进行编码进而输入到网络。为了做到这一点,首先从需要训练的文档中构建出一个词汇表,假设有10,000个各不相同的词组成的词汇表。那么需要做的就是把每一个词做One hot representation。此外神经网络的输出是一个单一的向量(也有10000个分量),它包含了词汇表中每一个词随机选择附近的一个词的概率。

【文本分类】深入理解embedding层的模型、结构与文本表示相关推荐

  1. 天池零基础入门NLP竞赛实战:Task4-基于深度学习的文本分类3-基于Bert预训练和微调进行文本分类

    Task4-基于深度学习的文本分类3-基于Bert预训练和微调进行文本分类 因为天池这个比赛的数据集是脱敏的,无法利用其它已经预训练好的模型,所以需要针对这个数据集自己从头预训练一个模型. 我们利用H ...

  2. 文本分类实战(三)—— charCNN模型

    1 大纲概述 文本分类这个系列将会有十篇左右,包括基于word2vec预训练的文本分类,与及基于最新的预训练模型(ELMo,BERT等)的文本分类.总共有以下系列: word2vec预训练词向量 te ...

  3. 文本分类模型_文本分类中的经典深度学习模型

    众所周知,文本分类是NLP领域中十分基础的任务,大部分文本分类模型稍加修改就可以应用到其他任务中.下面介绍几个经典的文本分类模型. 图中被引数来源google学术(2019/5/16) 1. text ...

  4. 【多标签文本分类】融合CNN-SAM与GAT的多标签文本分类模型

    ·阅读摘要:   在本文中,作者基于CNN.Attention.GAT提出CS-GAT模型,在一些通用数据集上,表现良好. ·参考文献:   [1] 融合CNN-SAM与GAT的多标签文本分类模型   ...

  5. 深入理解 Embedding层的本质

    继上文https://blog.csdn.net/weixin_42078618/article/details/82999906探讨了embedding层的降维效果,时隔一个月,分享一下嵌入层在NP ...

  6. 文本分类 决策树 python_NLTK学习笔记(六):利用机器学习进行文本分类

    关于分类文本,有三个问题 怎么识别出文本中用于明显分类的特征 怎么构建自动分类文本的模型 相关的语言知识 按照这个思路,博主进行了艰苦学习(手动捂脸..) 一.监督式分类:建立在训练语料基础上的分类 ...

  7. python文本分类_手把手教你在Python中实现文本分类.pdf

    手把手教你在Python 中实现文本分类(附代码.数 据集) 引言 文本分类是商业问题中常见的自然语言处理任务,目标是自动将文本文件分到一个 或多个已定义好的类别中.文本分类的一些例子如下: • 分析 ...

  8. html文本分类输出,构建中文网页分类器对网页进行文本分类

    网络原指用一个巨大的虚拟画面,把所有东西连接起来,也可以作为动词使用.在计算机领域中,网络就是用物理链路将各个孤立的工作站或主机相连在一起,组成数据链路,从而达到资源共享和通信的目的.凡将地理位置不同 ...

  9. TextCNN文本分类实现(主要是CNN模型的使用)

    前言:项目基于CNN模型,对输入问题进行训练,让机器可以识别出问题的类别从而通过相应类别查询所要寻找的数据 有关于数据部分的链接:https://pan.baidu.com/s/16ZR6LVVLP- ...

最新文章

  1. Code Splitting 代码分离
  2. poj 2482 Stars in Your Window(线段树+离散化+线扫描)
  3. linux 的压缩文件格式,linux 文件格式压缩
  4. [翻译]Triggerless design.md
  5. 最新最全vuepress零基础搭建(github搭建+新增插件)
  6. 数据工程师妹子养成手记——数据库篇
  7. 异常注意事项_多异常的捕获处理
  8. 6.1 图的深度优先和广度优先搜索
  9. 稀疏傅里叶变换(sparse FFT)
  10. junit测试找不到数据库_将数据库日志添加到JUnit3
  11. cgi php是什么意思,cgi,fastcgi,php-cgi,php-fpm 是什么
  12. WPF,Silverlight与XAML读书笔记第六 - WPF新概念之一逻辑树与可视树
  13. hadoop 如何连beeline_Hadoop家族新成员Hbase重磅来袭
  14. python cnn模型_如何在Python中使用预训练的CNN模型
  15. 华为锁屏后微信网络连接服务器,华为P30 Pro锁屏息屏状态下微信收不到信息,显示网络不可用...
  16. uniapp仿淘宝--商品详情模板
  17. .NET 开源项目概览
  18. 【北交所周报】北交所再迎8只新股;康普化学、凯华材料上市首日逆势大涨;康乐卫士过会,或成北交所最大IPO;北交所推出直联机制...
  19. 场景图生成论文阅读笔记 之 PCPL
  20. python做三国杀

热门文章

  1. ICML2020 | PGFS:如何保证生成分子是可合成的?强化学习来帮忙
  2. 一项震动制药行业的研究:大型制药公司AI的生产力
  3. HTMD | 从PDB文件获取3D特征描述符
  4. JMC | 人工智能在药物合成中的当前和未来作用(1)
  5. RDKit | 小分子构象的生成和比对
  6. Python 机器学习之项目实践
  7. Mdnice 简洁主题
  8. iMeta期刊投审稿系统ScholarOne正式上线
  9. MPB:林科院袁志林组-巢式PCR检测植物组织痕量内生真菌的方法及其引物
  10. 可持续农业生态系统中的核心微生物组