开发者学堂课程【高校精品课-华东师范大学 - Python 数据科学基础与实践:文本表示-下】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1067/detail/15494
文本表示-下
内容简介:
一、文本表示
二、文本表示实例
一、文本表示
我们接下来介绍的模型是文档概率模型,基于概率框架实现的,大家都比较熟悉,基于贝叶斯定理,还有一些概率的概念。
对一篇文档而言,文档中的各个词相互独立,则文档的概率就是每个词概率的乘积。
在文档检索里,它的基本模型是这样子的,将文档分为两个部分,第一个是和查询语句相关的,另一个是和查询非相关的,就是我们集合里面总有一部分是和查询相关的,另一部分是和查询无关的。下面这些细节就不和大家细说了,大家对概率更熟悉。
接下来是文本表示,文本表示就是将文本转换成数学上的向量表示,如何把字符串转换为向量,这就是文本表示的核心,还是特征词量化的概念,我们换一种角度讲它。
文本的表示一种是离散表示,我们列出一些常用的方法,一种是词袋模型,注意缩写是BOW bag of words。文档分成一个词,所以文档的话就像一个袋子里装很多词一样,叫做词袋模型。
每一个词都可以给他一个编号,如果有一万个词,那么每一个词都有一个它唯一的编号。之后就是刚学习的TF-IDF,one-hot编码,独热编码,之后会有这个的实例。
还有就是gram方法,进行连续的切词。比如BI-gram两个两个切,12,34,56,把文本切成这样一些片段,来构成表示。还有词-文档矩阵,单元格是词的权重。文本表示是一种离散的表示,把很多文档都用离散词的量化关系来表示,离散表示。
还有一种分布式表示,这个就不像离散表示一个一个词,他有可能是一组词,一个词用一个向量的词表示。方法一个是降维,对前面词的矩阵进行处理,这个不展开了。还有一个是用神经网络语言模型,现在比较热的模型来处理,得到分布式表示。比如前几年很热的word2vec.
二、文本表示实例
下面我们来看一下文本表示的实例,有这样一句话“你是一个好人”,然后我们分词,分成这样一些词,运用独日编码,每一个词给他一个向量表示,这个向量里只有一个数字为1,其他都为0,所以叫做独热编码。这个n就是语料词都数量,比如一万个词,每个词给他一个位置,给他一个编号,在转换成one-hot编码。整个长度就是你词典的长度,就是你语料里一万个词的长度。然后在看一下这个word2vec词向量的表示。词向量表示就是用one-hot编码,再用神经网络模型,通过上下文关系,经过时间网络模型处理的到一个此向量。这个词向量的维度远远小于独热的维度,可以大幅度降维,提高计算的效率
Word2vec给大家介绍一下,word2vec是google公司2013年向外界推出的一款词向量生成工具,将文本语料库作为输入,利用其内部的两个神经网络语言模型从语料库中学习词汇的向量表示,再以词向量作为输入。
它的语义更强,因为它综合上下文关系。而独热语义能力很弱,只是每个词给他一个编号,再用独热的编码方式来处理.
我们再看一下word2vec内部一些内容,他有两个模型,一个是CBOW,大家记得吧,磁带模型 c是continue,连续的磁带模型,那这个磁带模型可以通过上下文来预测一个词的概率。比如说隔壁老同学们想到的是隔壁老王。那另一个模型是skip-gram模型,可以通过一个词来预测它的上下文,比如说you are good man这四个词都有onehot编码,我们通过CBOW这个模型后,good可以通过前后左右的词来预测good词的值,如果是用skip-gram这个模型呢,就可以用good这个词来预测上下文,大家注意word2vec有两种模型的方法。
那我们接下来再看一下word2vec.再实际运用时,
我们先把词做成one-hot编码,再利用神经网络,一般是深度需求的神经网络,经过训练以后,再把词转换成一个词向量,embedding就是一个词向量的意思,它可以大幅度降低向量的维度,大幅度降维。提高以后计算的计算能力和计算效率。
所以要记住在时间的时候先one-hot获得一大批语料,分好词以后每一个词给他做一个词典,词典中的每一个词都有一个它的编号,处理到哦one-hot,再利用工具生成词向量。