文章目录

  • 本质
  • 词袋模型
    • 原理
    • 特点
  • 词空间模型
    • NNLM 模型
    • RNNLM
    • C&W 模型
      • C&W & NNLM
    • CBOW 和 Skip-gram 模型
      • CBOW 模型
      • 改进:负采样
  • doc2vec / str2vec
    • 由来(时序)
  • 资料

本质

便于计算机理解,将文本转化为数值。
当前阶段,对文本的向量化 大部分研究都是通过 词向量 来实现的。

  • 词向量:词袋模型,word2vec
  • 文章/句子作为向量:doc2vec, str2vec

词袋模型

词袋(Bag Of Word)模型是最早的 以词语为基本处理员 的文本向量化方法。


原理

示例:
存在以下两个文本文档

1:Bob likes to play basketball, Jim likes too.
2:Bob also likes to play football games.

构建如下词典(dictionary):

Dictionary = {1:”Bob”, 2. “like”, 3. “to”, 4. “play”, 5. “basketball”, 6. “also”, 7. “football”, 8. “games”, 9. “Jim”, 10. “too”}。

这个词典一共包含10个不同的单词,上面两个文档每一个都可以用一个10维向量表示(用整数数字0~n(n为正整数)表示某个单词在文档中出现的次数):

1:[1, 2, 1, 1, 1, 0, 0, 0, 1, 1]
2:[1, 1, 1, 1 ,0, 1, 1, 1, 0, 0]

特点

  • 原文本中单词的出现顺序,在该向量中没有体现。
  • 主要体现单词的频率

优点

  • 简单易行

缺点

  • 维度灾难
  • 没有词序信息
  • 没有语义信息(只是将词语符号化)

词空间模型

分布假说(the Distributional Hypothesis):上下文相似的词,其语义也相似。
比如:我喜欢吃 苹果我喜欢吃 梨子,那么苹果和梨子 语义相似。

基于分布假说来表示词义,就是 词空间模型(word space model)。

神经网络的崛起,让基于上下文建模变得容易。
神经网络构建词向量,主要是根据上下文与目标词之间的关系进行建模。


NNLM 模型

NNLM:Neural Network Language Models,神经网络语言模型

与传统估算方法不同,NNLM 模型通过一个神经网络结构对 n元条件概率 进行估计。


实现:

从语料库中搜集一系列长度为n 的文本序列,假设这些长度为 n 的文本序列组成的集合为 D,那么 NNLM 的目标函数为 ∑DP(wi)∣wi−(n−1),...wi−1\sum_D P(w_i) | w_{i-(n-1)},...w_{i-1}∑D​P(wi​)∣wi−(n−1)​,...wi−1​
含义为在输入词序列为 wi−(n−1),...wi−1w_{i-(n-1)},...w_{i-1}wi−(n−1)​,...wi−1​ 的情况下,目标词 wiw_iwi​ 的概率。


网络结构

典型的三层前馈神经网络结构,包含:输入层,隐藏层和输出层。
为解决词袋模型数据稀疏的问题,输入层就是将次序列中每个词向量,按照顺序拼接。


优点

  • 解决了词袋模型的 数据系数、无语义的问题;是一种更好的 n 元 语言模型
  • 在相似的上下文语境中,NNLM 可以预测出 目标词;传统模型无法做到这一点。

RNNLM

RNNLM直接对 P(wi∣w1,w2,...,wi−1)P(w_i|w_1,w_2,...,w_{i-1})P(wi​∣w1​,w2​,...,wi−1​) 进行建模,而不使用公式对其进行简化。因此,RNNLM可以利用所有的上下文信息,预测下一个词。


模型结构


RNNLM的核心在于其隐藏层的算法:

h(i)=ϕ(e(wi)+Wh(i−1))h(i) = \phi(e(w_i) + Wh(i-1))h(i)=ϕ(e(wi​)+Wh(i−1))

其中,h(i)表示文中第i个词 wiw_iwi​ 所对应的隐藏层,该隐藏层由当前此的词向量 e(wi)e(w_i)e(wi​) 以及上一个词对应的隐藏层 h(i−1)h(i-1)h(i−1) 结合得到。


C&W 模型

C&W:Collobert 和 Weston

C&W 核心:如果n元短语在语料库中出现过,那么模型会给该短语打高分,没出现过打低分。


C&W & NNLM

NNLM 构建的是语言概率模型
C&W 则是以生成词向量为目标的模型。


  • 计算方式
    NNLM 中最费时的是 隐藏层到输入层的权重计算。
    C&W 没有采用语言模型的方式去求解词语上下文的条件概率,而是直接对 n 元短语打分。这是一种更为快捷的获取词向量的方式。


语言模型的目标是求解 P(wI∣w1,w2,...,wi−1)P(w_I | w_1, w_2, ..., w_{i-1})P(wI​∣w1​,w2​,...,wi−1​)


CBOW 和 Skip-gram 模型

由来:他们设计两个模型的目的是希望 用更高效的方法获取词向量。因此,他们根据前人在NNLM、RNNLM和C&W模型的经验,简化现有模型,保留核心部分,得到了这两个模型。

CBOW:根据上下文预测当前词
Skip-gram:通过当前词预测上下文


CBOW 模型

该模型一方面根据C&W模型的经验,使用一段文本中的中间词作为目标词;另一方面,又以NNLM作为蓝本,并在其基础上做了两个简化。

  • 没有隐藏层。
    去掉隐藏层之后,模型从神经网络直接转化为 log线性结构,与logistic回归一致。
    log线性结构比三层神经网络少了一个矩阵运算,大幅度地提升了模型的训练速度。
  • 去除了上下文各词的词序信息,使用上下文各词向量的平均值,代替NNLM使用的上文各词词向量的拼接。
  • 根据上下文来预测当前词语的概率,且上下文所有词 对当前词出现的概率的影响是一样的,因此叫做 continuous bag-of-words 模型。
    如在袋子里取词,取出数量足够的词就可以了;先后顺序不重要。


改进:负采样

非目标词作为 w,即为负样本。
比如句子为 “我想吃xx”,xx 原为苹果;负样本可以为“我想吃手机”。


doc2vec / str2vec

由来(时序)

word2vec 基于分布假说理论 可以很好地提取词语的语义信息;
用处:计算词语、句子或其他长文本的相似度。
一般做法是:

  1. 对文本分词
  2. 提取关键词
  3. 用词向量表示这些关键词
  4. 对关键词向量求平均或者将其拼接
  5. 利用词向量计算文本间的相似度

这种方法丢失了文本的语序信息。

语序包含重要信息,比如 “小王送了小红一个苹果” 和 “小红送了小王一个苹果” 是两件事。

为了利用文本语序信息,研究者在 word2vec 的基础上提出了 文本向量化(doc2vec,又称 str2vec 或 para2vec)


doc2vec 由谷歌工程师 Quoc Le 和 Tomoas Miko 在 word2vec 的基础上拓展。

doc2vec 技术存在两种模型 DM(Distributed Memeory) 和 DBOW(Distributed Bag of Words),分别对应 word2vec 中的 CBOW 和 Skip-gram 模型。

与 CBOW 模型类似,DM模型视图预测给定上下文中某单词出现的概率,只不过 DM 模型的上下文 不仅包含单词,还包括相应的段落。
DBOW 在在仅给定段落响亮的情况下,预测段落中 一组随机单词的概率。


资料

  • 词袋模型(视觉词袋模型BOVW)详解
    https://blog.csdn.net/tanlangqie/article/details/83795207
  • 综述:神经网络语言模型(译)
    https://zhuanlan.zhihu.com/p/109564205
  • NLP(四)神经网络词向量表示技术
    https://www.jianshu.com/p/edbeeda5d746

NLP - 文本向量化相关推荐

  1. nlp算法文本向量化_NLP中的标记化算法概述

    nlp算法文本向量化 This article is an overview of tokenization algorithms, ranging from word level, characte ...

  2. nlp文本相似度_用几行代码在Python中搜索相似文本:一个NLP项目

    nlp文本相似度 自然语言处理 (Natural Language Processing) 什么是自然语言处理? (What is Natural Language Processing?) Natu ...

  3. 直播实录|百度大脑EasyDL是如何帮助NLP文本提升标注效率的?又如何进行复杂文本分类的?

    百度大脑EasyDL是如何帮助NLP文本分类用户提升标注效率的?业界领先的文本分类智能标注产品效果如何?在百度产品经理夜巡的带领下,你将会学习到EasyDL专业版文本分类模型最新上线的智能标注功能的具 ...

  4. NLP文本预处理:步骤、示例 | 附github源码

    点击关注我哦 一篇文章带你了解NLP文本预处理:步骤.示例 | 附github源码 注:关注[小白玩转Python]公众号,后台回复[NLP文本预处理],可以获取完整源码以及项目所需数据集. 文本数据 ...

  5. NLP-文本处理:基本技术【命名实体识别、分词、拼写纠错、停用词、词性标注】、文本序列化、文本向量化、文本语料的数据分析、文本特征处理(Ngram特征添加、文本长度规范)、数据增强

    分词(tokenization):英文通过空格或者标点符号,就可以将词分开:而中文的分词会涉及很多问题(未登录词问题.分词歧义问题.分词不一致问题),所以会有各种不同分词的算法. 清洗:我们需要对文本 ...

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

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

  7. 第六课.NLP文本分类任务

    第六课目录 NLP文本分类简介 IMDB数据集准备 设置随机种子 下载IMDB并划分数据集 构建词汇表 使用torchtext生成batch WordAveraging 模型定义 加载由glove.6 ...

  8. NLP文本生成模型数据准备及实战

    NLP文本生成模型数据准备及实战 自然语言处理+数据准备 Machine readable vector format 自然语言处理NLP的数据预处理有哪些共性,可以参考? 什么样的数据格式是深度学习 ...

  9. fastText、TextCNN、TextRNN……这里有一套NLP文本分类深度学习方法库供你选择 作者:机器人圈 / 微信号:ROBO_AI发表时间 :2017-07-28 图:pixabay

    fastText.TextCNN.TextRNN--这里有一套NLP文本分类深度学习方法库供你选择 「机器人圈」编译:嗯~阿童木呀.多啦A亮 这个库的目的是探索用深度学习进行NLP文本分类的方法. 它 ...

最新文章

  1. Dataguard - 通过主库热备方式创建容灾库
  2. 微软笔试题,机器人消砖块
  3. html5 markdown,Markdown常用语法
  4. VMWARE双机安装说明
  5. linux ioctl 设备只读,linux – 尝试SSH时设备的ioctl不合适
  6. jQuery原理第五天
  7. 大数据_Flink_Java版_数据处理_流处理API_Transform(5)_union合流---Flink工作笔记0034
  8. python数据格式化后导入数据库_MySQL导入格式化数据
  9. 【java笔记】Collection集合
  10. js中的call及apply
  11. WIN7使用各种激活软件都不管用的解决办法
  12. 移动交互提示语设计(转)
  13. 云计算开发技术Python自动化运维开发实战二
  14. Qt自定义控件创建和使用
  15. 转:java 中文繁简体转换工具 opencc4j
  16. 【研0需要知道的那些事01】如何判断期刊是否为核心期刊,知网导出参考文献越来越多怎么办?
  17. 数据库-等值连接与自然连接的区别
  18. BAPI上传物料主数据
  19. 国家标准规范、行业标准规范,规范提取,自动提取软件
  20. 关于static void 函数

热门文章

  1. ICC---data setup
  2. ceph中monitor节点基本解释与图解
  3. 看漫画学Python 第八章代码
  4. WPF异常:调用线程无法访问此对象,因为另一个线程拥有该对象。
  5. oracle批量清除会话,oracle快速彻底清理kill会话
  6. 2021-05-30 vue-Element ui 省市级三级联动
  7. 解决虚拟机无法连接USB设备(U盘、网卡等等),网上各种方法均试过但无效
  8. 苹果手机键盘html代码大全,iPhone12键盘使用技巧有哪些
  9. win7 32位安装oracle10g步骤
  10. 【生活随笔】读书笔记之《沧浪之水》