NLP - 文本向量化
文章目录
- 本质
- 词袋模型
- 原理
- 特点
- 词空间模型
- 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}∑DP(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 基于分布假说理论 可以很好地提取词语的语义信息;
用处:计算词语、句子或其他长文本的相似度。
一般做法是:
- 对文本分词
- 提取关键词
- 用词向量表示这些关键词
- 对关键词向量求平均或者将其拼接
- 利用词向量计算文本间的相似度
这种方法丢失了文本的语序信息。
语序包含重要信息,比如 “小王送了小红一个苹果” 和 “小红送了小王一个苹果” 是两件事。
为了利用文本语序信息,研究者在 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 - 文本向量化相关推荐
- nlp算法文本向量化_NLP中的标记化算法概述
nlp算法文本向量化 This article is an overview of tokenization algorithms, ranging from word level, characte ...
- nlp文本相似度_用几行代码在Python中搜索相似文本:一个NLP项目
nlp文本相似度 自然语言处理 (Natural Language Processing) 什么是自然语言处理? (What is Natural Language Processing?) Natu ...
- 直播实录|百度大脑EasyDL是如何帮助NLP文本提升标注效率的?又如何进行复杂文本分类的?
百度大脑EasyDL是如何帮助NLP文本分类用户提升标注效率的?业界领先的文本分类智能标注产品效果如何?在百度产品经理夜巡的带领下,你将会学习到EasyDL专业版文本分类模型最新上线的智能标注功能的具 ...
- NLP文本预处理:步骤、示例 | 附github源码
点击关注我哦 一篇文章带你了解NLP文本预处理:步骤.示例 | 附github源码 注:关注[小白玩转Python]公众号,后台回复[NLP文本预处理],可以获取完整源码以及项目所需数据集. 文本数据 ...
- NLP-文本处理:基本技术【命名实体识别、分词、拼写纠错、停用词、词性标注】、文本序列化、文本向量化、文本语料的数据分析、文本特征处理(Ngram特征添加、文本长度规范)、数据增强
分词(tokenization):英文通过空格或者标点符号,就可以将词分开:而中文的分词会涉及很多问题(未登录词问题.分词歧义问题.分词不一致问题),所以会有各种不同分词的算法. 清洗:我们需要对文本 ...
- nlp文本数据增强_如何使用Texthero为您的NLP项目准备基于文本的数据集
nlp文本数据增强 Natural Language Processing (NLP) is one of the most important fields of study and researc ...
- 第六课.NLP文本分类任务
第六课目录 NLP文本分类简介 IMDB数据集准备 设置随机种子 下载IMDB并划分数据集 构建词汇表 使用torchtext生成batch WordAveraging 模型定义 加载由glove.6 ...
- NLP文本生成模型数据准备及实战
NLP文本生成模型数据准备及实战 自然语言处理+数据准备 Machine readable vector format 自然语言处理NLP的数据预处理有哪些共性,可以参考? 什么样的数据格式是深度学习 ...
- fastText、TextCNN、TextRNN……这里有一套NLP文本分类深度学习方法库供你选择 作者:机器人圈 / 微信号:ROBO_AI发表时间 :2017-07-28 图:pixabay
fastText.TextCNN.TextRNN--这里有一套NLP文本分类深度学习方法库供你选择 「机器人圈」编译:嗯~阿童木呀.多啦A亮 这个库的目的是探索用深度学习进行NLP文本分类的方法. 它 ...
最新文章
- Dataguard - 通过主库热备方式创建容灾库
- 微软笔试题,机器人消砖块
- html5 markdown,Markdown常用语法
- VMWARE双机安装说明
- linux ioctl 设备只读,linux – 尝试SSH时设备的ioctl不合适
- jQuery原理第五天
- 大数据_Flink_Java版_数据处理_流处理API_Transform(5)_union合流---Flink工作笔记0034
- python数据格式化后导入数据库_MySQL导入格式化数据
- 【java笔记】Collection集合
- js中的call及apply
- WIN7使用各种激活软件都不管用的解决办法
- 移动交互提示语设计(转)
- 云计算开发技术Python自动化运维开发实战二
- Qt自定义控件创建和使用
- 转:java 中文繁简体转换工具 opencc4j
- 【研0需要知道的那些事01】如何判断期刊是否为核心期刊,知网导出参考文献越来越多怎么办?
- 数据库-等值连接与自然连接的区别
- BAPI上传物料主数据
- 国家标准规范、行业标准规范,规范提取,自动提取软件
- 关于static void 函数