情感分析之tf-idf算法

author author     2023-04-07     587

关键词:

参考技术A http://mini.eastday.com/bdmip/180414224336264.html

在这篇文章中,主要介绍的内容有:

1、将单词转换为特征向量

2、TF-IDF计算单词关联度

文本的预处理和分词。

如何将单词等分类数据转成为数值格式,以方便我们后面使用机器学习来训练模型。

一、将单词转换为特征向量

词袋模型(bag-of-words model):将文本以数值特征向量的形式来表示。主要通过两个步骤来实现词袋模型:

1、为整个文档集(包含了许多的文档)上的每个单词创建一个唯一的标记。

2、为每个文档构建一个特征向量,主要包含每个单词在文档上的出现次数。

注意:由于每个文档中出现的单词数量只是整个文档集中很少的一部分,因此会有很多的单词没有出现过,就会被标记为0。所以,特征向量中大多数的元素就会为0,就会产生稀疏矩阵。

下面通过sklearn的CountVectorizer来实现一个词袋模型,将文档转换成为特征向量

通过count.vocabulary_我们可以看出每个单词所对应的索引位置,每一个句子都是由一个6维的特征向量所组成。其中,第一列的索引为0,对应单词"and","and"在第一和二条句子中没有出现过,所以为0,在第三条句子中出现过一些,所以为1。特征向量中的值也被称为原始词频(raw term frequency)简写为tf(t,d),表示在文档d中词汇t的出现次数。

注意:在上面词袋模型中,我们是使用单个的单词来构建词向量,这样的序列被称为1元组(1-gram)或单元组(unigram)模型。除了一元组以外,我们还可以构建n元组(n-gram)。n元组模型中的n取值与特定的应用场景有关,如在反垃圾邮件中,n的值为3或4的n元组可以获得比较好的效果。下面举例说明一下n元组,如在"the weather is sweet"这句话中,

1元组:"the"、"weather"、"is"、"sweet"。

2元组:"the weather"、"weather is"、"is sweet"。

在sklearn中,可以设置CountVecorizer中的ngram_range参数来构建不同的n元组模型,默认ngram_range=(1,1)。

sklearn通过CountVecorizer构建2元组

二、TF-IDF计算单词关联度

在使用上面的方法来构建词向量的时候可能会遇到一个问题:一个单词在不同类型的文档中都出现,这种类型的单词其实是不具备文档类型的区分能力。我们通过TF-IDF算法来构建词向量,从而来克服这个问题。

词频-逆文档频率(TF-IDF,term frequency-inverse document frequency):tf-idf可以定义为词频×逆文档频率

其中tf(t,d)表示单词t在文档d中的出现次数,idf(t,d)为逆文档频率,计算公式如下

其中,nd表示文档的总数,df(t,d)表示包含单词t的文档d的数量。分母中加入常数1,是为了防止df(t,d)=0的情况,导致分母为0。取log的目的是保证当df(t,d)很小的时候,不会导致idf(t,d)过大。

通过sklearn的TfidfTransformer和CountVectorizer来计算tf-idf

可以发现"is"(第二列)和"the"(第六列),它们在三个句子中都出现过,它们对于文档的分类所提供的信息并不会很多,所以它们的tf-idf的值相对来说都是比较小的。

注意:sklearn中的TfidfTransformer的TF-IDF的计算与我们上面所定义TF-IDF的公式有所不同,sklearn的TF-IDF计算公式

通常在计算TF-IDF之前,会对原始词频tf(t,d)做归一化处理,TfidfTransformer是直接对tf-idf做归一化。TfidfTransformer默认使用L2归一化,它通过与一个未归一化特征向量L2范数的比值,使得返回向量的长度为1,计算公式如下:

下面通过一个例子来说明sklearn中的TfidfTransformer的tf-idf的计算过程,以上面的第一句话"The sun is shining"为例子

1、计算原始词频

a、单词所对应的下标

b、计算第三句话的原始词频tf(t,d)

c、计算逆文档频率idf(t,d)

注意:其他的词在计算tf-idf都是0,因为原始词频为0,所以就不需要计算idf了,log是以自然数e为底。

d、计算tf-idf

所以,第一个句子的tf-idf特征向量为[0,1,1.29,1.29,0,1,0]

e、tf-idf的L2归一化

现有的情感分析算法都有哪些?

】现有的情感分析算法都有哪些?【英文标题】:WhataretheexistentSentimentAnalysisAlgorithm?现有的情感分析算法有哪些?【发布时间】:2012-05-2809:03:11【问题描述】:我和一群人正在开发一种情绪分析算法。我想知道现有的有哪些,因... 查看详情

Python中的情感分析代码使用了啥算法?

】Python中的情感分析代码使用了啥算法?【英文标题】:WhatalgorithmthatwasusedonthesentimentanalysiscodeinPython?Python中的情感分析代码使用了什么算法?【发布时间】:2018-09-0702:04:30【问题描述】:我有一个关于情绪分析的问题。我有一... 查看详情

基于朴素贝叶斯算法的情感分类(代码片段)

环境win8,python3.7,jupyternotebook正文什么是情感分析?(以下引用百度百科定义)情感分析(Sentimentanalysis),又称倾向性分析,意见抽取(Opinionextraction),意见挖掘(Opinionmining),情感挖掘(Sentimentmining),主观分析(Subjectivityanalysi... 查看详情

pt之transformer:基于pytorch框架利用transformer算法针对imdb数据集实现情感分类的应用案例代码解析(代码片段)

...:基于PyTorch框架利用Transformer算法针对IMDB数据集实现情感分类的应用案例代码解析目录基于PyTorch框架利用Transformer算法针对IMDB数据集实现情感分类的应用案例思路设计(1)、数据准备(2)、数据预处理(3)、模型构建(4)、模型训... 查看详情

nlp情感分析和可视化|python实现评论内容的文本清洗语料库分词去除停用词建立tf-idf矩阵获取主题词和主题词团(代码片段)

1文本数据准备首先文本数据准备,爬取李佳琦下的评论,如下: 2提出文本数据、获得评论内容#内容读取importxlrdimportpandasaspdwb=xlrd.open_workbook("评论数据.xlsx")sh=wb.sheet_by_index(0)col=sh.ncolsrow=sh.nrow 查看详情

大数据分析案例-基于逻辑回归算法构建微博评论情感分类模型

查看详情

2022搜狐校园nlp算法大赛情感分析第一名方案理解和复现(代码片段)

...baseline的方案    在知乎上看到2022搜狐校园NLP算法大赛情感分析第一名方案分享分享,觉得方案非常简单优雅,同时又有点promptl 查看详情

paddlenlp之uie分类模型以情感倾向分析新闻分类为例含智能标注方案)(代码片段)

...tudio直接fork我的项目就可以复现Paddlenlp之UIE分类模型【以情感倾向分析新闻分类为例】含智能标注方案)0前言首先回顾上一个项目:Paddlenlp之UIE模型实战实体抽取任务【打车数据、快递单】会存在以下问题:自己样 查看详情

py:数据挖掘之对个人微信朋友圈好友的性别区域昵称签名信息进行情感分析——jasonniu

#Py:数据挖掘之对微信朋友圈好友的性别、区域、昵称、签名信息进行情感分析——Jasonniuimportosimportreimportcsvimporttimeimportjsonimportjiebafromjiebaimportanalyseimportitchatimportbase64fromsnownlpimportSnowNLPimportrequestsimportsysfrom 查看详情

tf-idf算法原理及其使用详解

...TermFrequency-inverseDocumentFrequency)是一种针对关键词的统计分析方法用 查看详情

r语言︱情感分析—词典型代码实践(最基础)

R语言︱情感分析—基于监督算法R语言实现笔记。可以与博客 R语言︱词典型情感分析文本操作技巧汇总(打标签、词典与数据匹配等)对着看。 词典型情感分析大致有以下几个步骤:训练数据集、neg/pos情感词典、分词+... 查看详情

spark3.0-5.mlpipeline实战之电影影评情感分析(代码片段)

目录一.引言二.Stage1-数据准备1.数据样式2.读取数据3.平均得分与Top54.训练集、测试集划分三.Stage-2-Comment分词1.Tokenizer 🙅🏻‍♀️2.JieBa分词 🙆🏻‍♀️2.1Jieba分词示例2.2自定义Jieba分词Transformer四.Stage-3HashingTF... 查看详情

推荐系统之tf-idf算法实现(代码片段)

推荐系统之TF-IDF算法实现词频-逆文档频率(TF-IDF)是一种用于资讯检索与文本挖掘的常加权技术。该技术是一种统计方法,用以评估一个字词对于一个文件集或一个语料库中一个文件的重要程度。字词的重要性随着它在文件中... 查看详情

基于双向lstm的影评情感分析算法设计学习记录

引言需求分析,技术可行性(目前的研究进度),主流怎么做?我要如何做?随着互联网技术的飞速发展及联网的便捷,越来越多的人在网上表达自己的意见。其中,电影评论受到广泛关注。很多... 查看详情

如何解决情感分析中的歧义?

】如何解决情感分析中的歧义?【英文标题】:Howtosolveambiguityinsentimentanalysis?【发布时间】:2018-10-2419:12:43【问题描述】:我对文本挖掘还很陌生,今天我正在挑战自己进行情绪分析。但是我在进行情感分析时遇到了一些问题。... 查看详情

情感分析到底是个啥

基于目前是个小白,小白星先粗俗的谈下情感分析这个东东最简单的情感分析方法是利用词语的正负属性来判定。句子中的每个单词都有一个得分,乐观的单词得分为+1,悲观的单词则为-1。然后我们对句子中所有单词得分进行... 查看详情

阿旭机器学习实战33中文文本分类之情感分析--朴素贝叶斯knn逻辑回归(代码片段)

【阿旭机器学习实战】系列文章主要介绍机器学习的各种算法模型及其实战案例,欢迎点赞,关注共同学习交流。目录1.查看原始数据结构2.导入数据并进行数据处理2.1提取数据与标签2.2过滤停用词2.3TfidfVectorizer将文本向... 查看详情

均值||用于 Spark 的情感分析

】均值||用于Spark的情感分析【英文标题】:KMeans||forsentimentanalysisonSpark【发布时间】:2016-04-0913:58:22【问题描述】:我正在尝试编写基于Spark的情感分析程序。为此,我使用word2vec和KMeans聚类。从word2Vec我在100维空间中收集了20k个... 查看详情