微博情感分析代码,随取随用
2023-03-14 22:40:22 时间
情感分析有三种方式。
一是自建模型训练,这种费时费力精度大概率不高。
二是使用百度等在线接口,使用 requests 等请求库调用,精度应该最高,但是这种有并发限制。
三是使用一些开源的模型,比如 SnowNLP 这种,可以直接 pip install,这种精度没有百度的高应该,但是没有接口并发等限制。
其中这三种本质上都是训练好的模型在起作用,第二种是 web sdk,第三种是 local sdk。
本文使用的第三种,需要先 pip 安装 SnowNLP 和 pandas 这两个库。
from snownlp import SnowNLP
import pandas as pd
def sentiment_score(input_file, text_col = 'text'):
df = pd.read_csv(input_file)
sentiment_score_col = 'sentiment_score'
is_scored_col = 'has_scored'
df[is_scored_col] = [False for _ in range(df.shape[0])]
for index, row in df.iterrows():
print(f'{index + 1}/{df.shape[0]}')
if row[is_scored_col] == True:
continue
text = row[text_col]
# 去除 html 标签
text = filter_html(text)
if len(text) == 0 or text == None:
# 本行没有文本
sentiment = -1
else:
sentiment = SnowNLP(text).sentiments
df.loc[index, sentiment_score_col] = sentiment
df.loc[index, is_scored_col] = True
df.to_csv(input_file, index=False, encoding='utf-8-sig')
上面这个函数的作用是,输入一个 csv 文件名,并且其文本列名为 text,自动输出一个给文本打好情感分的同名 csv 文件。情感分所在列名为 sentiment_score,其值介于 0-1 之间,值小于 0.2 可以判为消极,大于 0.6 可以判为积极。
比如我有一个 12345678.csv 文件,其内容列为 content,可以这样给这个文件打分。
sentiment_score(input_file='12345678.csv', text_col='content')
其中 filter_html 函数 对 html 标签作了过滤。
import re
def filter_html(text):
# text为包含html标签内容
content = re.sub("<[^>]*?>", "", text)
return content
以上所有代码,复制到 py 文件中即可用~
相关文章
- 在 Go 里用 CGO?这 7 个问题你要关注!
- 9款优秀的去中心化通讯软件 Matrix 的客户端
- 求职数据分析,项目经验该怎么写
- 在OKR中,我看到了数据驱动业务的未来
- 火山引擎云原生大数据在金融行业的实践
- OpenHarmony富设备移植指南(二)—从postmarketOS获取移植资源
- 《数据成熟度指数》报告:64%的企业领袖认为大多数员工“不懂数据”
- OpenHarmony 小型系统兼容性测试指南
- 肯睿中国(Cloudera):2023年企业数字战略三大趋势预测
- 适用于 Linux 的十大命令行游戏
- GNOME 截图工具的新旧截图方式
- System76 即将推出的 COSMIC 桌面正在酝酿大变化
- 2GB 内存 8GB 存储即可流畅运行,Windows 11 极致精简版系统 Tiny11 发布
- 迎接 ecode:一个即将推出的具有全新图形用户界面框架的现代、轻量级代码编辑器
- loongarch架构介绍(三)—地址翻译
- Go 语言怎么解决编译器错误“err is shadowed during return”?
- 敏捷:可能被开发人员遗忘的部分
- Denodo预测2023年数据管理和分析的未来
- 利用数据推动可持续发展
- 在 Vue3 中实现 React 原生 Hooks(useState、useEffect),深入理解 React Hooks 的