-
2017-09-26 16:05:35
前期准备
使用文本向量化的前提是要对文章进行分词,分词可以参考前一篇文章。然后将分好的词进行向量化处理,以便计算机能够识别文本。常见的文本向量化技术有词频统计技术、TF-IDF技术等。
词频统计技术
词频统计技术是很直观的,文本被分词之后。 用每一个词作为维度key,有单词对应的位置为1,其他为0,向量长度和词典大小相同。然后给每个维度使用词频当作权值。词频统计技术默认出现频率越高的词权重越大。
举例说明:
原文:
句子A:我喜欢看电视,不喜欢看电影。
句子B:我不喜欢看电视,也不喜欢看电影。
分词结果:
句子A:我/喜欢/看/电视,不/喜欢/看/电影。
句子B:我/不/喜欢/看/电视,也/不/喜欢/看/电影。
列出维度:我,喜欢,看,电视,电影,不,也.
统计词频:
句子A:我 1,喜欢 2,看 2,电视 1,电影 1,不 1,也 0。
句子B:我 1,喜欢 2,看 2,电视 1,电影 1,不 2,也 1。
转换为向量:
句子A:[1, 2, 2, 1, 1, 1, 0]
句子B:[1, 2, 2, 1, 1, 2, 1]
可以看出:词频统计技术直观、简单。但是有明显的缺陷:中文中有的词汇,如:“我”,“的”出现频率很高,因此会赋予较高的权值,但是这些词汇本身无意义。因此若要使用词频统计技术,必须要引入停用词将这些无意义的词汇进行过滤。
TF-IDF技术
TF-IDF技术就是为了克服词频统计技术的缺陷而产生的,它引入了“逆文档频率”概念,它衡量了一个词的常见程度,TF-IDF的假设是:如果某个词或短语在一篇文章中出现的频率高,并且在其他文章中很少出,那么它很可能就反映了这篇文章的特性,因此要提高它的权值。
TF-IDF技术的需要维护一个语料库或文件集用于计算每个词的出现频率,频率越高的逆文档频率越小。语料库可以是整个铁路规章制度的集合,也可以是某个规章制度的全文。实践证明,TF-IDF在分词的时候,也需要剔除掉明显的停用词,这样效果会比较好。例如对于铁路规章制度而言,文本中“列车”一次的词频必然会非常高,但是在其语料库中出现的频率会非常高,因此其权重反而会降低。
更多相关内容 -
自然语言处理---文本向量化表示
2022-01-11 15:58:23自然语言处理中N-Gram模型介绍 amazing! import jieba import torch text="深度学习(英文:deep learning)是机器学习的分支,是一种以人工神经网络为架构,对数据进行表征学习的算法" cuted=jieba.lcut(text) #...分词:tokenization
一个词:token词语分割表示方法:
1.单个词。
2.单个字
3.n_gram.n_gram考虑到了文本之间的顺序问题
自然语言处理中N-Gram模型介绍
amazing!import jieba import torch text="深度学习(英文:deep learning)是机器学习的分支,是一种以人工神经网络为架构,对数据进行表征学习的算法" cuted=jieba.lcut(text) #获取到列表的格式 "假设为2_gram " "注意这里len(cuted-1) 因为是对文本进行长度为2的词语的组合。最后一个词的后面没有能跟他组合的了,所以-1." \ "如果是3_gram 那么就是减-2" n_gram=[cuted[i:i+2] for i in range(len(cuted)-1)] print(n_gram)
输出:
代码中减1的原因:
二、文本的向量化
1.one-hot 编码
2.word embedding表示法
这里的词典:待训练的样本里面,不重复的词语的个数。on-hot使用稀疏的向量表示文本,占用的空间大
2.word embedding表示法
把文本转化为向量,把句子用向量表示。
前提:先将token用数字表示,再把数字用向量表示,最终才能输入到网络中训练。
token–>num—>vector
如下解释:
- 我们有batch_size个句子,每个句子有N个词语。
- 我们还有一个词典。其中定义了不重复的单词的个数M,以及每个单词的向量维度4.
- 将batch_size*N个词语分别进行num编号,然后到词典中查找相应的vector。最红转化为[batch_size,N,4]这个一个Vector。
torch中可以实现上述过程的API:
这里的num_emeddings是样本中不重复词语的个数。
这个api的输出维度:[batch_size,N,embedding_dim] -
AI-自然语言处理-文本向量化
2020-05-27 14:37:16• 了解自然语言处理基本知识 • 掌握循环神经网络算法 • 掌握自然语言处理关键技术 • 了解自然语言处理的应用 什么是文本向量化 • ...学习目标
• 了解自然语言处理基本知识
• 掌握循环神经网络算法
• 掌握自然语言处理关键技术
• 了解自然语言处理的应用什么是文本向量化
• 文本向量化:将文本表示成一系列能够表达文本语义的向量。常用的向量化算法有:
• one-hot
• TF-IDF
• word2vec
o CBOW模型
o Skip-gram模型
• doc2vec/str2vec
o DM(Distributed Memory)
o DBOW(Distributed Bag of Words)
• 文本表示是自然语言处理中的基础工作,文本表示的好坏直接影响到整个自然语言处理系统的性能。文本向量化是文本表示的一种重要方式。无论是中文还是英文,词语都是表达语义的基本单元。
用四个维度(向量)表示这几个对象。
word2vec - CBOW模型
用中间词作为目标词,使用上下文去预测出现的概率
word2vec - Skip-gram模型
从目标单词预测上下文,计算句子、长文本的相似性:分词—关键词—向量化—平均、拼接—计算相似性
会打乱文本间语序
doc2vec - DM模型
基于CBOW模型,区别是用段落向量、句向量,而不是单词向量
doc2vec - DBOW模型
-
自然语言处理系列之:文本向量化
2020-11-06 14:34:57词袋(Bag of Word)模型:最早的以词语为基本处理单元的文本向量化方法; 词袋模型存在的问题: 维度灾难 无法保留词序信息 存在语义鸿沟问题 神经网络语言模型(NNLM) 大致操作步骤:从语料库中收集一系列...大纲
- 文本向量化常用算法介绍,word2vec及doc2vec
- 向量化方法的模型训练和使用
7.1 文本向量化概述
即将文本表示为一系列能表达文本语义的向量;
7.2 向量化算法word2vec
-
词袋(Bag of Word)模型:最早的以词语为基本处理单元的文本向量化方法;
-
词袋模型存在的问题:
- 维度灾难
- 无法保留词序信息
- 存在语义鸿沟问题
-
神经网络语言模型(NNLM)
大致操作步骤:从语料库中收集一系列长度为 n n n的文本序列 w i − ( n − 1 ) , … , w i − 1 , w i w_{i-(n-1)},…,w_{i-1},w_i wi−(n−1),…,wi−1,wi,设这个长度为 n n n的文本序列组成的集合为 D D D,则NNML的目标函数定义为:
∑ D P ( w i ∣ w i − ( n − 1 ) , … , w i − 1 ) \sum _DP(w_i|w_{i-(n-1)},…,w_{i-1}) D∑P(wi∣wi−(n−1),…,wi−1)
即:在输入词序列为 w i − ( n − 1 ) , … , w i − 1 w_{i-(n-1)},…,w_{i-1} wi−(n−1),…,wi−1的情况下,计算目标词 w i w_i wi的概率;
在上述经典三层前馈神经网络结构中:为解决词袋模型数据稀疏问题,输入层的输入为低纬度的、紧密的词向量,将词序列 w i − ( n − 1 ) , … , w i − 1 w_{i-(n-1)},…,w_{i-1} wi−(n−1),…,wi−1中每个词向量按顺序进行拼接,即:
x = [ v ( w i − ( n − 1 ) ) ; … ; v ( w i − 2 ) ; v ( w i − 1 ) ] x=[v(w_{i-(n-1)});…;v(w_{i-2});v(w_{i-1})] x=[v(wi−(n−1));…;v(wi−2);v(wi−1)]
接下来, x x x经隐藏层得到 h h h,再将 h h h接入输入层从而得到最后的输出变量 y y y,其中:
h = t a n h ( b + H x ) h=tanh(b+Hx) h=tanh(b+Hx)
y = b + U h y=b+Uh y=b+Uh
其中 H H H是输入层到隐藏层的权重矩阵,维度为 ∣ h ∣ × ( n − 1 ) ∣ e ∣ |h|\times(n-1)|e| ∣h∣×(n−1)∣e∣; U U U是隐藏层到输出层的权重矩阵,维度为 ∣ V ∣ × ∣ h ∣ |V|\times |h| ∣V∣×∣h∣,其中 ∣ V ∣ |V| ∣V∣表示词表大小, b b b则是模型中的偏置项;为保证输出 y ( w ) y(w) y(w)的表示概率值,需对输出层进行归一化操作,一般是加入 s o f t m a x softmax softmax码数,将 y y y转化成对应概率值:
P ( w i ∣ w i − ( n − 1 ) … , w i − 1 ) = e x p ( y ( w i ) ) ∑ k = 1 ∣ V ∣ e x p ( y ( w k ) ) P(w_i|w_{i-(n-1)}…,w_{i-1})=\frac {exp(y(w_i))}{\sum _{k=1}^{|V|}exp(y(w_k))} P(wi∣wi−(n−1)…,wi−1)=∑k=1∣V∣exp(y(wk))exp(y(wi))
因为输出是在上下文词序列出现的情况下,下一个词的概率,所以语料库 D D D中最大化 y ( w i ) y(w_i) y(wi)即为 N N L M NNLM NNLM模型的目标函数:
∑ w i − ( n − 1 ) ; i i n D l o g P ( w i ∣ w i − ( n − 1 ) , … , w i − 1 ) \sum _{w_{i-(n-1);i in D}}log P(w_i|w_{i-(n-1)},…,w_{i-1}) wi−(n−1);iinD∑logP(wi∣wi−(n−1),…,wi−1)
一般使用随机梯度下降法对模型进行训练,对于每个 b a t c h batch batch,随机从语料库中抽取若干样本进行训练,其迭代公式为:
θ : θ + α ∂ l o g P ( w i ∣ w i − ( n − 1 ) , … , w i − 1 ) ∂ θ \theta:\theta+\alpha \frac{\partial logP(w_i|w_{i-(n-1)},…,w_{i-1})}{\partial \theta} θ:θ+α∂θ∂logP(wi∣wi−(n−1),…,wi−1)
α \alpha α为学习率, θ \theta θ包括模型中设计所有参数,包括 N N L M NNLM NNLM模型中的权重、偏置以及输入词向量;
-
C&W模型
KaTeX parse error: Expected 'EOF', got '&' at position 2: C&̲W模型未采用语言模型的方式求解词语上下文的条件概率,而是直接对 n n n元短语打分,其核心机理为:若 n n n元短语在语料中出现过,则模型给该短语打一个高分,若未出现的短语,则赋予一个较低评分,其目标函数为:
∑ ( w , c ) ∈ D ∑ w ‘ ∈ V m a x ( 0 , 1 − s c o r e ( w , c ) + s c o r e ( w ‘ , c ) ) \sum _{(w,c)\in D} \sum_{w^` \in V}max(0,1-score(w,c)+score(w^`,c)) (w,c)∈D∑w‘∈V∑max(0,1−score(w,c)+score(w‘,c))
( w , c ) (w,c) (w,c)是从语料中抽取的 n n n元短语,为保证上下文词数一致性 n n n应该为奇数, w w w是目标词, c c c表示目标词上下文语境, w ‘ w^` w‘是词典中随机抽取的词;
-
CBOW模型
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VjU5ejcY-1604644465522)(https://i.loli.net/2019/08/31/iyZ941D68EKNgrU.png)]
根据上下文来预测当前词语的概率,使用文本中间词作为目标词,同时去除隐藏层从而提升运算速率,其输入层激吻语义上下文的表示;
对目标词的条件概率公式如下:
P ( w ∣ c ) = e x p ( e ‘ ( w ) T x ) ∑ w ‘ ∈ V e x p ( e ‘ ( w ‘ ) T x ) P(w|c)=\frac {exp(e^`(w)^Tx)}{\sum _{w^` \in V} exp(e^`(w^`)^Tx)} P(w∣c)=∑w‘∈Vexp(e‘(w‘)Tx)exp(e‘(w)Tx)
其目标函数类似于 N N L M NNLM NNLM模型,为最大化式:
∑ ( w , c ) ∈ D l o g P ( w , c ) \sum _{(w,c)\in D}logP(w,c) (w,c)∈D∑logP(w,c)
-
Skim-gram模型
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tTiS5qFA-1604644465523)(https://i.loli.net/2019/08/31/UNFVnfweLiOtHI5.png)]
根据当前词语来预测上下文概率,从目标词 w w w的上下文中选择一个词,然后将其词向量组成上下文的表示,模型目标函数为:
m a x ( ∑ ( w , c ) ∈ D ∑ w j ∈ c l o g P ( w ∣ w j ) ) max(\sum_{(w,c)\in D} \sum _{w_j \in c}log P(w|w_j)) max((w,c)∈D∑wj∈c∑logP(w∣wj))
7.3 向量化算法doc2vec/str2vec
doc2vec包括DM(Distributed Memory)和DBOW(Distributed Bag of Words),DM模型视图预测给定上下文(不仅包含单词,还包含相应段落)求某单词出现的概率,而DBOW则在仅给定段落向量的情况下预测段落中一组随机单词的概率。总体而言,doc2vec是word2vec的升级,doc2vec不仅提取了文本的语义信息,还提取了文本的语序信息;
-
Python与自然语言处理——文本向量化(一)
2019-04-07 17:52:32Python与自然语言处理——文本向量化文本向量化(一)文本向量化概述向量化算法word2vec词袋模型神经网络语言模型(NNLM)C&W模型 文本向量化(一) 文本向量化概述 文本向量化是将文本表示成一系列能够表达... -
自然语言处理中的词袋模型与文本向量化
2018-06-04 22:15:06前段时间做了一些自然语言处理方面的工作,自然语言处理不像图像处理,每个像素点都是数值,也可以看做是天然的特征,可以直接代入公式参与各种运算,但是自然语言不行,都是文字,计算机理解不了,计算机只认0/1,... -
Python-面向文本分类的经典向量化方法实现与比较
2019-08-12 04:11:49Text vectorization tool to outperform TFIDF for classification tasks -
R语言自然语言处理:文本向量化——词嵌入(Word Embedding)
2019-04-06 11:36:00作者:黄天元,复旦大学博士在读,目前研究涉及文本挖掘、社交网络分析和机器学习等。希望与大家分享学习经验,推广并加深R语言在业界的应用。邮箱:huang.tian-yuan... -
Chapter 3.1 文本向量化和语言模型(一)
2022-01-28 11:18:14知识点3.1.1 文本向量化和语言模型的概念 知识点3.1.2 词袋模型 知识点3.1.3 N-gram模型 最基础的以词为基本单元的文本向量化方法 把文本看成是一系列词的集合(袋子) 词和词相互独立,一个词是否在文本中... -
自然语言处理(NLP):08 PyTorch深度学习之TextCNN短文本分类
2021-01-06 15:41:11文章分类服务对文章内容进行深度分析,输出文章的主题一级分类、主题二级分类及对应的置信度,该技术在个性化推荐、文章聚合、文本内容分析等场景具有广泛的应用价值. 新闻分类 根据文本描述的内容方向,针对新闻... -
自然语言处理之文本向量化Hash Trick
2018-09-07 20:16:20文本挖掘预处理之向量化与Hash Trick https://www.cnblogs.com/pinard/p/6688348.html 2.关于HashVectorizer https://blog.csdn.net/ssswill/article/details/90756623 3.NLP三种词袋模型... -
文本向量化
2020-07-18 09:04:04文本向量化,就是把文本转化为向量形式。这里用两种方式实现本文向量,一种是TF方式,一种是TF-IDF方式,且这里向量的长度就是字典的长度。 TF就是词频、TF-IDF就是词频-逆频率。关于这两者的介绍已经满大街了,对于... -
Python自然语言处理实战(7):文本向量化
2018-07-18 00:21:05文本表示是自然语言处理中的基础工作,文本表示的好坏直接影响到整个自然语言处理系统的性能。文本向量化是文本表示的一种重要方式。顾名思义,文本向量化就是将文本表示成一系列能够表达文本语义的向量。无论是... -
自然语言处理之文本主题判别
2018-06-25 15:44:56于是想到向量化的方法问题,使用sklearn CountVectorizer方法进行向量化,仅仅是将所有词频无序的向量化,看到另外博文时,发现应该先将目标主题的文本进行词频统计,将统计结果当做向量化模板,实测发现效果不错,... -
自然语言处理之文本向量化(词袋模型、TF-IDF)
2018-03-07 19:00:342.词频向量化 3.TF-IDF处理 3.1TF 3.2IDF 4 CountVectorizer与TfidfVectorizer的异同: 5.sklearn中TfidfTransformer和TfidfVectorizer对tf-idf的计算方式 6.实战 文本数据预处理的第一步通常是进行分词,... -
自然语言处理(NLP)(一)文本预处理篇之分词、向量表示和特征处理
2021-06-09 11:58:50文章目录一、文本处理1. 文本预处理的基本方法1.1 jieba模块分词1.1.1 精确模式分词1.1.2 全模式分词1.1.3 搜索引擎模式分词1.1.4 中文繁体分词1.1.5 自定义词典分词1.2 hanlp模块1.2.1 中文分词1.2.2 英文分词1.2.3... -
Python文本特征抽取与向量化算法学习
2021-01-20 04:32:16本文为大家分享了Python文本特征抽取与向量化的具体代码,供大家参考,具体内容如下 假设我们刚看完诺兰的大片《星际穿越》,设想如何让机器来自动分析各位观众对电影的评价到底是“赞”(positive)还是“踩”... -
文本向量化——方法1:基于高频词的向量化方式(包含python代码)
2020-04-05 01:56:55文本向量化——方法1:基于高频词的向量化方式(包含python代码) 对大文本进行处理和运用,最关键的一步就是如何将文本向量化,我最近学习和琢磨出了几种方法,这里跟大家分享,我这里以我上一篇博文爬取微博关于... -
文本向量化——基于TF-IDF词袋模型的文本向量化方法
2020-04-06 01:08:33文本向量化——基于TF-IDF词袋模型的文本向量化方法 点这里,上一篇文章——基于高频词汇的文本向量化方法 1、解释TF-IDF词袋模型 TF:词频 IDF:逆向文件频率 举例子解释:假如有一个包含100篇文章的文本集合,里面... -
自然语言处理—文本分类综述/什么是文本分类
2021-11-22 15:11:42最近在学习文本分类,读了很多博主的文章,要么已经严重过时(还在一个劲介绍SVM、贝叶斯),要么就是机器翻译的别人的英文论文,几乎看遍全文,竟然没有一篇能看的综述,花了一个月时间,参考了很多文献,特此写下此... -
自然语言处理文本分析_通过自然语言处理释放文本分析的力量
2020-09-09 13:04:47自然语言处理文本分析 深度学习 , 自然语言处理 (Deep Learning, Natural Language Processing) Natural language is a language that is used for everyday communication between humans. It is highly ... -
《自然语言处理实战入门》文本分类 ---- 使用词向量与SVM 进行文本分类
2021-02-13 00:50:29文本分类用电脑对文本集(或其他实体或物件)按照一定的分类体系或标准进行自动分类标记。 它根据一个已经被标注的训练文档集合, 找到文档特征和文档类别之间的关系模型, 然后利用这种学习得到的关系模型对 新的文档... -
自然语言处理——文本相似度
2020-03-28 19:20:36在自然语言处理的学习和研究中,有好多问题涉及到如何检测两个文本的相似度问题,尤其是在度量句子或者短语之间的相似度。测算度量文本相似度的方法大体有三种:基于关键词匹配的传统方法、基于向量空间的方法和... -
自然语言处理之文本分类
2021-03-29 10:45:10在开始学习之前推荐大家... 文本分类(Text Classification或Text Categorization,TC),或者称为自动文本分类(Automatic Text Categorization),是指计算机将载有信息的一篇文本映射到预先给定的某一类别或某几类别... -
自然语言处理学习笔记十一(文本分类)
2021-11-12 14:27:18文本分类,又称为文档分类,指的是将一个文档归类到一个或者多个类别中的自然语言处理任务。文本的类别称为标签,如果一个文档属于多个类别,此时此类问题称为多标签分类。 文本分类是一个典型的监督学习任务,其... -
NLP学习(八)文本向量化word2vec及案例实现-Python3实现
2020-08-28 17:18:38最早的以词语为基本处理单元的文本向量化方法 方法: 基于出现的词语构建词典(唯一索引) 统计每个单词出现的词频构成向量 存在的问题 维度灾难 无法保留语序信息 存在语义鸿沟的问题 神经网络语言模型(NNLM)... -
自然语言处理——文本分类概述
2018-11-05 19:50:59内容提要分类概述分类流程数据采集爬虫技术页面处理文本预处理英文处理中文处理停用词去除文本表示特征选择 分类概述 分类(Classification)是指自动对数据进行标注。人们在日常生活中通过经验划分类别。但是要... -
《自然语言处理实战入门》NLP 可视化 ---- 词向量可视化
2020-09-20 23:37:31《自然语言处理实战入门》NLP 可视化 ---- 文本内容可视化 词向量简介 比较全面的一个可视化词向量下载:北师大:Chinese Word Vectors 中文词向量 模型加载及使用,使用gensim 进行加载 from gensim.models i