文章目录

  • 1 nlp的常见任务
  • 2 词向量表示
    • 2.1 离散表示
    • 2.2 分布式表示
    • 2.3 NNLM(2013年)
      • 2.3.1模型
      • 2.3.2特点
    • 2.4 Word2Vector:CBOW连续词袋
      • 2.4.1 样本处理
      • 2.4.2 结构
      • 2.4.3 CBOW:层次softmax
      • 2.4.4 CBOW:负例采样
      • 2.4.5 Word2Vec:skip-gram模型
      • 2.4.6 word2vec存在的问题
      • 2.4.6 word2vec优点

1 nlp的常见任务

分词
词性标注
自动摘要
指代消解
机器翻译
主题识别
文本分类

2 词向量表示

文本不同于图片与视频。图片与视频天然是以二进制形式表示的,计算机能够处理。
文本是人造的,只有人可以懂,怎么让计算机读懂,需要使用词向量

表示方式要能够解决:
1 需要保证词的相似性
例如 frog toad rana 相似

2 向量空间分布的相似性
英语中的1 2 3 4 要和西班牙语的 1 2 3 4 分布相似

3 向量空间子结构
向量是可以用于运算的

2.1 离散表示

1 one-hot
2 bag of words
文档的向量可以直接将各词的词向量表示加和。

3 tf-idf
4 bi-gram和n-gram

离散表示的问题:
1 没有办法衡量词向量之间的关系
2 词表维度随着语料库膨胀
3 n-gram 随着语料库膨胀更快
4 数据稀疏问题

2.2 分布式表示

用一个词附近的词表示这个词。
局域窗中的word-word共现矩阵可以挖掘语法和语义信息。
例如:
I like deep learning.
I like NLP.
I enjoy flying.
如果窗口为1(一般在5-10之间),那么可以得到这样的矩阵。

这是一个对角阵。
I和like 出现2次
I和enjoy出现1次…

存在的问题:

•向量维数随着词典大小线性增长
• 存储整个词典的空间消耗非常大
• 一些模型如文本分类模型会面临稀疏性问题
• 模型会欠稳定

SVD降维

2.3 NNLM(2013年)

NNLM=Neural Network Language Model
以下内容转载自CSDN博主「马飞飞」的原创文章。

NNLM是从语言模型出发(即计算概率角度),构建神经网络针对目标函数对模型进行最优化,训练的起点是使用神经网络去搭建语言模型实现词的预测任务,并且在优化过程后模型的副产品就是词向量。

进行神经网络模型的训练时,目标是进行词的概率预测,就是在词环境下,预测下一个该是什么词,目标函数如下式, 通过对网络训练一定程度后,最后的模型参数就可当成词向量使用.

2.3.1模型

NNLM的网络结构(四层神经网络)如右图,主要参数有:

  [1]词库大小(假定有8W个词)            [2]转化的词向量大小(假定为300维长度)            [3]输入层神经元数(即词的滑动窗口容量,假定滑窗大小为4)            [4]隐层神经元数量(假定为100个)            [5]输出层神经元数(对应词容量,有8W个)[6]由输入层到投影层的矩阵C(一个大的矩阵,大小为8W*300,是最后求解的目的,开始时随机初始化)          [7]从投影层到隐层的权值矩阵H和偏置矩阵B          [8]从隐层到输出层的权值矩阵U和偏置矩阵D


现在咱们针对NNLM模型,由下往上进行分析:

1 每次从语料库中滑动4个数据,将其中前三个词转为one-hot编码形式,将三个one-hot形式作为输入喂入网络。

2 从输入到映射层所做的事情是(one-hot向量 * 矩阵C),这里词的one-hot编码会根据为1的位置去对应C矩阵,去抽出对应位置的300维的词向量,将此向量作为投影层的输出。

3 上一步投射层会将词的one-hot表示表示成300维的稠密向量,从投影层到隐层是一种全连接的连接方式,参数的数量是3*100个,每个隐层神经元有3条线相连接,最后使用tan函数结合H与B获取激活输出。

4 从隐层到输出层也是一直全连接的形式,连接线数量为100*8W,使用softmax函数结合U与D获取最后的概率输出。

5 计算交叉熵损失函数值,以梯度下降方式进行反向传播,在反向传播过程中对参数矩阵C、H、B、U、D进行更新。(C、H、B、U、D分别指什么?)

通过不断的喂入批次数据,对网络进行反向传播调参,最后训练出一个进行词预测任务的模型,并将训练好模型中的C矩阵里的每一列都作为,对应于one-hot编码中位置为1词的词向量(大小为1*300),这个词向量就是我们要转化的结果。

2.3.2特点

优点:使用NNLM模型生成的词向量是可以自定义维度的,维度并不会因为新扩展词而发生改变,而且这里生成的词向量能够很好的根据特征距离度量词与词之间的相似性。例如上面就固定是300维。
缺点:计算复杂度过大,参数较多(word2vec是一种改进)。

每个训练样本的计算复杂度:NxD+NxDxH+HxV
这一段的描述还可以参考知乎讲得更详细。

2.4 Word2Vector:CBOW连续词袋

NNLM太复杂了。

2.4.1 样本处理

一个滑窗长度n=5。在滑窗范围内以中间词为预测对象,左右词作为上下文。
例如:我|爱|吃|海底捞|火锅。以我,爱,海底捞,火锅这4个词作为上下文,预测中间的词应该是吃。

2.4.2 结构

输入是4个 Vx1的向量,上一步中的矩阵C是DxV维度,每一个Cx向量=一个Dx1的向量。将这4个向量相加,作为输入送入softmax,预估中心词。
与NNLM的区别就是去掉了隐藏。

2.4.3 CBOW:层次softmax

上面W矩阵(也就是从SUM到输出层)需要DxV维度。V有点大。

Huffman tree 可以根据词频对词典中的词做编码。编码之后频率高的词编码长度短。这棵树的深度为log2Vlog_2Vlog2​V

那么输出层是一个若干次的二分类。

计算:对数似然

2.4.4 CBOW:负例采样

正确的词:吃
负利:不是吃的词,可以取300个左右。取哪些词?

词典中的每个词对应线段的每一小段。
线段长度=counter(w)∑u∈Dcounter(u)\dfrac{counter(w)}{\sum_{u \in D} counter(u)}∑u∈D​counter(u)counter(w)​

将[0,1]划分为M=10810^8108等分,每次随机生成[1,M]的一个数,看落在哪个词对应的部分上。所以出现频次高的词更可能被选择。

2.4.5 Word2Vec:skip-gram模型

用中心词预测周边词

2.4.6 word2vec存在的问题

1 对每个local context window 单独训练,没有用包含在gobal co-currence矩阵中的信息。
2 一词多义不能表示,每个词有唯一的向量。

2.4.6 word2vec优点


word2vec可以保证词的相似性
能够发现woman-man结果和queue-king相似

工具库 google word2vec,这是c++版本的。
工具gensim里面集成了word2vec,fast-text等工具。详见链接。
使用word2vec+CNN做文本分类。 详见链接。

第六课 从词向量到NLP分类问题相关推荐

  1. 飞桨2.0高层api教程——使用预训练词向量进行文本分类

    使用预训练的词向量完成文本分类任务 作者: fiyen 日期: 2021.03 摘要: 本示例教程将会演示如何使用飞桨内置的Imdb数据集,并使用预训练词向量进行文本分类. 摘要 在这个示例中,我们将 ...

  2. 【NLP】fastText词向量与文本分类工具

    一.简介 fastText 是 Facebook 于2016年开源的一个词向量训练与文本分类工具,其典型应用场景是"无监督的词向量学习"和"有监督的文本分类". ...

  3. textcnn文本词向量_文本分类模型之TextCNN

    六年的大学生涯结束了,目前在搜索推荐岗位上继续进阶,近期正好在做类目预测多标签分类的项目,因此把相关的模型记录总结一下,便于后续查阅总结. 一.理论篇: 在我们的场景中,文本数据量比较大,因此直接采用 ...

  4. C语言第六课:函数(上)——分类、参数与调用

    目录 前言: 一.什么是函数? 二.C语言中函数的分类: 1.库函数: 为什么会出现库函数? 我们该怎么来学习函数? 库函数学习示例: 库函数学习注意: 2.自定义函数: 三.参数: 1.形式参数(形 ...

  5. 【NLP实战】tensorflow词向量训练实战

    实战是学习一门技术最好的方式,也是深入了解一门技术唯一的方式.因此,NLP专栏计划推出一个实战专栏,让有兴趣的同学在看文章之余也可以自己动手试一试. 本篇介绍自然语言处理中最基础的词向量的训练. 作者 ...

  6. NLP中的词向量总结与实战:从one-hot到bert

    写在前面 之前写的关于NLP基础词向量的笔记,这次更新一下.从最简单的one-hot到目前效果惊人的BERT进行整理对比,加深对基础的理解.词向量的表示方法由低级至高级可以分为以下几个部分: Bag ...

  7. 自然语言处理(NLP):23 Word2Vec词向量研究以及实践

    本文主要同大家分享word2vec原理以及应用,通过文本相似度和新闻文本分类为案例进行展开,最后对词向量技术发展进行简述. 作者:走在前方 博客:https://wenjie.blog.csdn.ne ...

  8. 自然语言处理NLP(3)——神经网络语言模型、词向量

    在上一部分中,我们了解到了统计语言模型,n-gram模型以及语料库的基本知识: 自然语言处理NLP(2)--统计语言模型.语料库 在这一部分中,我们将在此基础上介绍神经网络语言模型以及词向量的相关知识 ...

  9. word2vec词向量 文本分类实现(TensorFlow版,算法TextCNN)

    之前也写过word2vec词向量文本分类实现,不过那是基于Keras. 今天来写下tensoflow版的代码. 再来感受下它的魅力. tensorflow比Keras更接近底层,可以更方便让我们理解W ...

最新文章

  1. 简单好用的中文分词工具之HanLP的安装与使用
  2. 小程序读取富文本mysql存储_微信小程序API 富文本·EditorContext实例
  3. android stadio 快捷键最好的材料 android stadio大全 最牛逼的android stadio快捷键
  4. MySQL 调优/优化的 101 个建议
  5. 深入讲解微信小程序上传图片与JAVA后台的结合
  6. vscode运行conda出现 “无法加载文件C:\Users\WindowsPowerShell\profile.ps1,因为在此系统上禁止运行脚本” 的错误
  7. php 地图 距离,PHP计算百度地图两个GPS坐标之间距离的方法
  8. SnapKit 源码解读(一):Extensions
  9. 微软新版 Edge 浏览器叫板 Chrome!
  10. 专线服务器安全维护,服务器系统安全维护
  11. deeplearning.ai——构建深度神经网络做图像处理
  12. php文件显示代码行数,php统计文件中的代码行数
  13. 3GPP TS 24.301 Release 8 中文版
  14. 【教程】PE烧录上位机软件安装
  15. codecademy SQL 编程系列一Introduction
  16. 【计网】2.2.4 Web缓存/代理服务器
  17. 南京师范大学计算机考研难不难,南京师范大学考研难吗?
  18. C语言及程序设计(公开课)主页
  19. leetcode切绳子
  20. 极光 php服务器,极光 php推送

热门文章

  1. GPU版的tensorflow在windows上的安装时的错误解决方案
  2. CAEmitterLayer 和 CAEmitterCell 粒子发射
  3. mouseevent tips
  4. easyUI 添加CheckBox选择到DataGrid
  5. 小数转换成二进制c语言,只写出了十进制小数转换成二进制的,求二进制小数转十进制的...
  6. 添加多个tomcat服务目录
  7. 悦虎四代洛达1562M固件下载升级更新
  8. 面试官:说一下List排序方法
  9. Typora中使用Gitee图床
  10. 宝塔面板 windows 2012 mysql 允许远程连接