新闻详情

新闻详情

首页 / 资讯中心 / 详情

用Python给新闻做情绪打分:舆情热度到底能不能预测涨跌?(附完整代码)

发布时间:2026/9/26 18:54:49来源:尧图网络
用Python给新闻做情绪打分:舆情热度到底能不能预测涨跌?(附完整代码)
风险提示本文仅用于技术学习与策略验证不构成任何投资建议。股市有风险投资需谨慎。舆情与情感打分仅为分析工具不具备预测能力历史相关性不代表因果关系更不能据此交易请独立审慎决策。前言AI投研五大场景里最神秘也最容易被讲玄的就是舆情情绪分析。今天我不讲玄学直接给你一套能跑的通透方案用Python读取新闻标题 → 给每条打分 → 合成当日情绪值 → 和行情对比看看有没有关联。这套代码跑完你就明白情绪分析到底是怎么回事以及它到底靠不靠谱。一、思路拆解舆情打分是怎么做到的一句话把一段中文文本拆成词然后查每个词是积极还是消极最后加权求个总分。流程如下分词用jieba把标题切成词语情感字典准备一张积极/消极词典给每个词打正负分累计打分把所有词的分加起来得到该条新闻的情感值聚合一天所有新闻得分平均得到当日市场情绪二、环境准备pipinstalljieba pandas情感字典用开源通用词典如知网Hownet情感词典你也可以替换成金融领域情感词典。三、完整代码可直接复制运行importjiebaimportpandasaspd# ---------- 1. 极简情感词典演示用可替换为完整词典 ----------POSITIVE{大涨,涨停,利好,增长,突破,超预期,回暖,复苏,增持,分红,中标,盈利,加速,创新高,}NEGATIVE{大跌,跌停,利空,下滑,亏损,低于预期,暴雷,减持,处罚,退市,违约,商誉减值,下调,造假,}defscore_text(text):对单条文本做情感打分返回(得分, 积极词数, 消极词数)wordsjieba.lcut(text)score0pos_cnt,neg_cnt0,0forwinwords:ifwinPOSITIVE:score1pos_cnt1elifwinNEGATIVE:score-1neg_cnt1returnscore,pos_cnt,neg_cnt# ---------- 2. 合成当日市场情绪 ----------defdaily_sentiment(news_list): 输入当日新闻标题列表 输出当日情绪均值、积极占比、消极占比 rows[score_text(t)fortinnews_list]dfpd.DataFrame(rows,columns[score,pos,neg])df[positive](df[score]0).astype(int)df[negative](df[score]0).astype(int)return{新闻条数:len(df),平均情绪分:round(df[score].mean(),3),积极占比:round(df[positive].mean(),3),消极占比:round(df[negative].mean(),3),情绪倾向:积极ifdf[score].mean()0else消极,}# ---------- 3. 与行情做简单关联验证 ----------defcorrelation_check(sentiment_series,return_series): 输入多日情绪分序列、多日指数收益率序列 输出相关系数越接近1正相关越接近-1负相关0则无关 dfpd.DataFrame({sentiment:sentiment_series,ret:return_series})corrdf[sentiment].corr(df[ret])returnround(corr,3)# ---------- 4. 主流程演示 ----------if__name____main__:today_news[央行释放流动性利好 市场情绪回暖,多只个股涨停 板块加速上攻,某公司业绩下滑 股价大跌,行业利空 多家机构下调评级,]print( 当日市场情绪分析 )print(daily_sentiment(today_news))# 多日情绪与涨跌相关系数演示数值仅供示意真实需接入历史数据sentiment[0.8,0.2,-0.5,0.6,-0.3,0.1]returns[0.02,0.005,-0.03,0.01,-0.01,0.0]print(\n 情绪与涨跌相关系数(演示) )print(correlation_check(sentiment,returns))四、代码逐段解读情感词典目前是极简版。真正的金融舆情分析会用几百上千词的领域词典甚至用BERT类模型。score_textjieba分词 → 查词典 → 累计正负分。核心逻辑就这么简单。daily_sentiment把一天的新闻合并成一个情绪指标方便和行情对齐。correlation_check算情绪分和收益率的相关性——这是情绪有没有用的客观检验。五、关键结论舆情情绪到底靠不靠谱很多人神话舆情分析我直接给你客观结论短期相关性存在但很弱情绪分与当日/次日涨跌有轻度相关绝不是看了情绪就稳赚。它更适合做过滤与风控比如情绪极度悲观时降低仓位比用它追涨更稳。单条新闻无意义聚合才有信号看的是整体情绪的温度不是某条新闻的对错。容易踩坑词典不完备、样本偏差、情绪滞后都会让结论失真。结论舆情分析是辅助温度计不是水晶球。把它当作一个风控参考因子而不是交易指令。六、往真正的AI舆情进阶换更强模型用snownlp或HuggingFace的中文情感模型替代词典法。接入实时数据抓取公告、研报、股吧评论做全市场情绪指数。多因子结合情绪分 资金流 技术指标一起进模型才有意义。结尾互动你觉得市场情绪到底能不能指导交易跑通代码的评论区扣个1下一期安排资金流分析与主力追踪。风险提示本文为技术学习内容不构成任何投资建议。舆情分析存在局限与失效风险股市有风险入市需谨慎。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

video-use:用ffmpeg和Claude Code搭建自动化视频处理流水线 2026/9/26 19:42:49

video-use:用ffmpeg和Claude Code搭建自动化视频处理流水线

1. 从“video-use”这个标题说起:它到底想解决什么问题第一次看到“video-use”这个标题,我脑子里蹦出来的不是某个具体工具,而是一类需求:用代码和命令行把视频处理这件事自动化起来。结合热搜词里高频出现的 Claude Code、ffmpe…

阅读更多 →
Substrate区块链开发框架入门:从核心概念到本地链实操 2026/9/26 19:42:43

Substrate区块链开发框架入门:从核心概念到本地链实操

1. 从零认识 Substrate:它到底是什么,能解决什么问题第一次听到 Substrate 这个词,很多人会以为是某个前端框架或者构建工具。其实不是。Substrate 是一个用于构建区块链的开发框架,由 Parity Technologies 团队打造,最…

阅读更多 →
DeepOpen × Banking77 复现指南:Laya 决策引擎的 77 类银行意图分类实战 2026/9/26 19:42:30

DeepOpen × Banking77 复现指南:Laya 决策引擎的 77 类银行意图分类实战

【免费下载链接】deepopen 非自回归System 1决策引擎,专为结构化类型决策场景设计 DeepOpen Multilingual, non-autoregressive System 1 decision engine. 项目地址: https://gitcode.com/gh_mirrors/de/deepopen 点击查看 免费下载 本指南完整讲解在…

阅读更多 →
Arthas 已接入 MCP:用 JSON-RPC 打通 JVM 线上问题定位链路 2026/9/26 19:42:17

Arthas 已接入 MCP:用 JSON-RPC 打通 JVM 线上问题定位链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
AI 说得很流畅,不代表它说得对-CSDN博客 2026/9/26 19:42:11

AI 说得很流畅,不代表它说得对-CSDN博客

首屏导读 本教程配套付费专栏: 大模型工程师修炼手记 19.9 元(AI 编程 / Agent 实战 | 本文同主题系统课程) AI时代程序员的自我提升 49.9 元(AI 时代成长方法论)。 单篇不过瘾?订阅解锁全量源…

阅读更多 →
CRM系统选型与落地:从通信集成到客户管理实战 2026/9/26 19:41:58

CRM系统选型与落地:从通信集成到客户管理实战

前因我在一次销售运营复盘会上第一次注意到 DeskcommCRM。当时团队的数据是这样的:外呼量上去了,商机数却没涨,翻客户跟进记录时,电话内容在手机通话记录里,邮件往来散落在个人邮箱,报价单和合同在另一个文…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉