文本特征提取3|学习笔记

简介: 快速学习文本特征提取3

开发者学堂课程【高校精品课-华东师范大学 - Python 数据科学基础与实践文本特征提取3】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/1067/detail/15503


文本特征提取3

 

下面我们继续做文本特征提取与向量化的实验,现在开始用TFIDF来进行特征提取,前面已经把词都拆分好了,拆分好的文本不能直接扔进去建模,还需要把文本转化成稀疏矩阵,矩阵单元格里面的特征值即是特征词的权重。

image.png现在来看此图,将数据框这一列转换成一个列表。大家注意,本来它是在数据框里面一列,然后通过一个函数叫tolist把它转成一个列表terms。接下来看一下terms里面的第一条,它是一个列表,中间的元素就是用空格隔开的一个个词。

image.png然后再用sklearn的特征提取模块里面的一个类叫TFIV,然后下面就要用TFIV这个类来做处理。这个类里面有很多参数,需要同学们去看一些帮助来了解这个操作的含义,min_df=3是最小的文档频率等于三,就是最少要在三个记录里面出现,然后才能做一个特征的要求;ngram算法就是一个统计语言模型,n如果取(1,2),那么一串中文可能就取(1,2)(2,3)(3,4)这样两个曲交错的。我们先把这个函数(类)实例化做一个对象,实例化以后用这个对象来处理刚刚的文本数据,刚刚转成列表的terms给它fit一下,相当于理合训练,再通过transform转换成我们需要的权重TFIDF的格式,当然我们可以用一部函数来做,用里面带的函数叫fit_transform,把fit和transform结合在一起的。

image.png执行完之后,那个粉色的是一个warning,不需要管,结果放在X_all里面,从里面取一条记录来转换成list看一下,它还是一个内存的对象,不方便看里面的内容,所以我们下面用一个列表解析式,这也是Python最重要的一个特点——列表解析式。

其中中括号代表一个列表,i.data是一个表达式,后面是一个循环迭代,就是在X_all[1],第一条里面把它拿出来显示一下,i是迭代的元素,我们不直接显示这个元素,我们用表达式元素里面的一个数据属性来显示。

image.png显示完以后,这就是一条评论里面每个词的权重,就是TFIDF值。这就是一个特征提取,我们提取了特征词的量化表示,这是用TFIDF,我们用的是sklearn包里面的。

image.png下面也可以用gensim包里带的一个模块来做TFIDF,它里面有一个模块,有TfidfModel这个类,这个我们用语料简单一点,主要是演示一下。

现在我们自己做一下语料,就是列表里面放几句话再加载停用词,然后我们再来把停用词从文件里面读下来,下面做分词,这个分词我们用jieba.cut,分完词以后我们再把里面的结果再处理一下,就是这个结果本来放在seg_list里面,不在停用词表里面,因此就是下面的分词结。“我在北京天安门”,其‘在’没有分出来,因为它在停用词表里面。

image.png我们再来做词袋模型,用gensim。在它里面有一个corpora语料,语料里面有一个语料词典dictionary,然后把刚刚分好词的放到语料词典里面,放在这个变量里面;语料词典功能很强大,它里面有个属性叫token2id,就是把分好的每一个词,给它一个编号,现在显示一下分行的每一个词对应的编号,‘北京’:0;‘天安门’:1,后面的数字是它的编号。

就是那几句话等于整体语料,然后里面的每一个词都给它一个编号。整个相当于把所有文档里面的词放在一起,每个词都有自己的编号,这就是词袋模型。

image.png然后来再来计算tfidf,这个用gensim里面models模块,models模块里面有TfidfModel这个类,现在就创建一个对象把语料放进去,再把这个模型保存下来,保存完以后可以通过它里面的load加载进来;那么我们做一个列表来看里面做好的权重,然后做一个循环,它里面的就是做好的权重,现在显示一下,下面显示的它已经是词的编号了,词袋模型的编号对应的tfidf值,运行一下看看结果。

接下来是特征提取用词向量word2vec,这是一种著名的词嵌入方式,它可以计算每个单词在其给定语料库环境下的分布式词向量,词向量表示可以在一定程度上刻画每个单词的语义。

image.png训练词向量也是gensim.models里面的一个class,它里面有Word2Vec大写的函数,后面括号里有很多参数。

给大家列了一些比较重要的和网上的博客,大家可以参考。

image.png下面看看word2vec怎么用,我们在gensim.models里面加载几个模块,在data目录下有一个训练数据,然后用word2vec里面的LineSentence(file_path)把文件读进来,用Word2Vec处理一下,参数很多,但是几个重要参数要知道一下:sentences—要处理的文本,要做词向量的文本;hs=1是采用方式(Hierarchical Softmax模型),参数为1表示使用,0表示不使用。然后可以设一些参数,比如窗口的大小,还有个关键就是自己做的词向量的大小,每一个词用128词向量表示,代表一个向量里面有128个词来表示一个词,模型做完以后保存一下,用的时候可以加载。现在运行一下,因为语料不多所以做词向量很快的,词向量做好了以后来看看它的值。

image.png获取单词word2vec值,大家看里面有一个‘apple’,显示一下,它是128个数字构成的向量,这就是词向量。Tfidf每一个词只有一个权重值,而在词向量里面一个词有128位值。Word2vec综合考虑到上下文的语意,所以它的词向量表达语义能力更强,从文本里面利用这个权重去挖掘文本、词和词之间的关系、词的特征词就更准确了。

image.png接下来看词向量非常直接的一个应用,就是计算两个单词的语义相似度。

做好的词向量模型里面有similarity,可以把两个词放进去,它就告诉我们它们相似度的值,运行看一下相似度的值,它应该基于两个向量计算,因为每个词都有128个向量,所以完全基于词向量计算相似度,word2vector的简单实验就到这里。

image.png

最后还有一些资料留在这里,大家有兴趣的可以去看一下。

相关文章
|
9天前
MUMU:用文本、图像引导,多模态图像生成模型
【9月更文挑战第19天】随着人工智能技术的发展,多模态模型因其能处理文本、图像、音频等多种信息而备受关注。在图像生成领域,一种名为MUMU的新模型展现出巨大潜力。MUMU可接收文本和图像提示并生成相应图像,如根据“一个<图片:男人>男人和他的<图片:狗>狗在一个<图片:卡通>动画风格中”生成图像。通过训练包含文本-图像数据集的视觉-语言编码器及扩散解码器,MUMU能实现风格转换和角色一致性等任务,并在图像编辑和合成方面展示出潜力。然而,其仍受限于复杂场景处理能力和计算资源需求。论文详情见链接:https://arxiv.org/abs/2406.18790。
14 1
|
1月前
|
数据采集 机器学习/深度学习 自然语言处理
VLE基于预训练文本
8月更文挑战第21天
|
人工智能 数据挖掘 PyTorch
VLE基于预训练文本和图像编码器的图像-文本多模态理解模型:支持视觉问答、图文匹配、图片分类、常识推理等
VLE基于预训练文本和图像编码器的图像-文本多模态理解模型:支持视觉问答、图文匹配、图片分类、常识推理等
VLE基于预训练文本和图像编码器的图像-文本多模态理解模型:支持视觉问答、图文匹配、图片分类、常识推理等
|
4月前
|
存储 编解码 数据库
基于文本嵌入和 CLIP 图像嵌入的多模态检索
基于文本嵌入和 CLIP 图像嵌入的多模态检索
325 0
|
机器学习/深度学习 文字识别 计算机视觉
文本识别 CRNN
文本识别 CRNN
295 0
|
机器学习/深度学习 自然语言处理 索引
DALL-E和Flamingo能相互理解吗?三个预训练SOTA神经网络统一图像和文本
DALL-E和Flamingo能相互理解吗?三个预训练SOTA神经网络统一图像和文本
154 0
|
机器学习/深度学习 并行计算 PyTorch
循环神经网络实战案例——实现文本情感分类
循环神经网络实战案例——实现文本情感分类
152 0
|
机器学习/深度学习 自然语言处理
扩散模型在文本生成领域的应用
扩散模型在文本生成领域的应用
232 0
|
自然语言处理 数据挖掘 开发者
文本特征提取 2|学习笔记
快速学习文本特征提取 2
文本特征提取 2|学习笔记
|
自然语言处理 算法 数据库
文本特征提取-下|学习笔记
快速学习文本特征提取-下
文本特征提取-下|学习笔记