TFIDF | 有权重的计算文本情感得分

2021暑期 | Python数据挖掘暑假工作坊

腾讯课堂 | Python网络爬虫与文本分析

在论文

Kai Li, Feng Mai, Rui Shen, Xinyan Yan, Measuring Corporate Culture Using Machine Learning, The Review of Financial Studies,2020

中,

  • 除了使用词向量人工构建五大类文化词典,

  • 还使用了tfidf作为权重,计算企业每条文档五大类文化的得分情况。

情感分析

  • 无权重。直接计算文本中正、负情感词出现的次数

  • 有权重。tf-idf, tf是词频,idf是权重。


Tfidf法

scikit库除了CountVectorizer类,还有TfidfVectorizer类。TF-IDF这个定义相信大家应该已经耳熟能详了:

  • TF 词语出现越多,这个词越有信息量

  • IDF 词语越少的出现在文本中,词语越有信息量。


原始数据

import pandas as pd


corpus = ["hello, i am glad to meet you",
           "it is wonderful",
           "i hate you",
           "i am sad"]

df1 = pd.DataFrame(corpus, columns=['Text'])
df1


构造tfidf

from sklearn.feature_extraction.text import TfidfVectorizer


def createDTM(corpus):
    """构建文档词语矩阵"""
    vectorize = TfidfVectorizer()
    #注意fit_transform相当于fit之后又transform。
    dtm = vectorize.fit_transform(corpus)
    #vectorize.fit(corpus)
    #dtm  = vectorize.transform(corpus) 
    #打印dtm
    return pd.DataFrame(dtm.toarray(), 
                        columns=vectorize.get_feature_names()) 

df2 = createDTM(df['text'])
df2

合并df1和df2

df = pd.concat([df1, df2], axis=1)
df

#积极词典
pos_words = ['glad', 'hello', 'wonderful']

#消极词典
neg_words = ['sad', 'hate']

#积极词典
df[pos_words]

df[pos_words].sum(axis=1)
0    0.873439
1    0.577350
2    0.000000
3    0.000000
dtype: float64
df['Pos'] = df[pos_words].sum(axis=1)
df

经过以上操作,很简便的对文本的正面情感进行了计算。同理,也可以对负面情感进行计算,此处省略。


输出

最后保存,输出为csv文件。

df.to_csv('output/tfidf有权重的情感分析.csv')

2021暑期 | Python数据挖掘暑假工作坊

腾讯课堂 | Python网络爬虫与文本分析

近期文章

腾讯课堂 | Python网络爬虫与文本分析

B站视频 | Python自动化办公
读完本文你就了解什么是文本分析

文本分析在经管领域中的应用概述

综述:文本分析在市场营销研究中的应用

中文金融情感词典发布啦 | 附代码

wordexpansion包 | 新增词向量法构建领域词典

语法最简单的微博通用爬虫weibo_crawler
大邓github汇总, 觉得有用记得star
hiResearch 定义自己的科研首页
whatlies包 | 简单玩转词向量可视化
Jaal 库 轻松绘制动态社交网络关系图
SciencePlots | 科研样式绘图库
使用streamlit上线中文文本分析网站
Clumper | dplyr式的Python数据操作包

Clumper库 | 常用的数据操作函数

Clumper库 | Groupby具体案例用法

Clumper库 | 其他数据分析

plydata库 | 数据操作管道操作符>>
plotnine: Python版的ggplot2作图库
plotnine: Python版的ggplot2作图库
Wow~70G上市公司定期报告数据集
YelpDaset: 酒店管理类数据集10+G
漂亮~pandas可以无缝衔接Bokeh  

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
TF-IDF(Term Frequency-Inverse Document Frequency)是一种计算权重的经典方式。它通过统计一个词在文档中的频率(TF)和在整个语料库中的逆文档频率(IDF)来确定词的重要性。 TF表示一个词在特定文档中出现的次数。常用的计算方法是将词频归一化,即使用该词在文档中的频率除以文档中所有词的总数。通过计算TF,我们可以知道一个词在某个文档中的重要性。 IDF表示一个词在整个语料库中的稀有程度。DF(Document Frequency)指的是包含该词的文档数量,而IDF就是通过计算DF的倒数来得到的。即使在语料库中出现次数很多的词,如果在大部分文档中都出现,那么它的IDF值会很低。相反,如果一个词只在少数文档中出现,那么它的IDF值会很高。因此,IDF值能够帮助我们排除常见但没有实际意义的词。 TF-IDF的计算方式是将TF和IDF相乘,得到词的权重。这个权重值可以用于文本相似性计算、搜索引擎排名等应用中。在实际应用中,常常需要使用更复杂的公式来处理各种特殊情况,比如考虑文档长度、调整IDF的平滑等。 Java是一种面向对象的编程语言,非常适合用来实现和应用TF-IDF算法。Java拥有丰富的数据处理和算法库,例如Apache Lucene和NLTK等,可以帮助我们高效地计算TF-IDF。同时,Java还具有优秀的文本处理和并发处理能力,可以快速处理大规模的文本数据集。 总而言之,TF-IDF是一种经典的词权重计算方式,能够帮助我们确定词的重要性。结合Java的优势,我们可以在大规模的文本数据集中高效地实现和应用TF-IDF算法

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值