如何使用Python做舆情分析

前言

互联网每天都产生海量文本:新闻资讯、公告、评论、社交媒体发言。舆情分析就是从这些非结构化文本里,自动提取观点、情绪、热点,判断公众对事件、产品、公司的态度。

Python凭借丰富的爬虫、文本处理、大模型/机器学习库,是做舆情分析最主流的工具。本文带你从原理、完整案例、落地坑点一次性讲清楚。

提示:本文代码仅用于技术学习;采集网络数据请遵守网站robots协议、相关法律法规,严禁违规爬取。

一、Python舆情分析整体流程

一套完整舆情系统,一共分为6步:

  1. 数据采集:抓取新闻、评论、公告等原始文本;
  2. 文本清洗:去除无用字符、表情、广告、换行,过滤无效内容;
  3. 文本预处理:中文分词、停用词过滤;
  4. AI语义分析:情感判断、关键词提取、主题归类、实体识别;
  5. 统计聚合:统计正面/负面占比、热度排行;
  6. 可视化输出:词云、趋势图,生成舆情简报。

二、核心依赖库介绍

  • 数据采集:requests、BeautifulSoup,用于网页文本抓取
  • 文本清洗分词:jieba中文分词、re正则表达式
  • 词云可视化:wordcloud
  • AI情感分析两种方案:
    1. 传统机器学习:snownlp、textblob(轻量,无需调用API,精度一般)
    2. 大模型API:调用通义千问、文心一言等,语义理解更强,适合复杂长文本
  • 数据统计:pandas

三、案例1:轻量本地情感分析(SnowNLP,无需联网API)

适合简单短文本,例如评论、简短留言,开箱即用,不需要申请大模型密钥。

python 复制代码
import pandas as pd
from snownlp import SnowNLP

# 待分析评论数据
comments = [
    "这家公司产品质量很好,服务响应很快,非常满意",
    "售后处理太慢,出现问题一直没人解决,体验很差",
    "产品中规中矩,没有特别出彩的地方",
    "新品发布会内容一般,没有超出预期",
    "财报数据亮眼,市场普遍看好后续发展"
]

result_list = []
for text in comments:
    s = SnowNLP(text)
    # sentiment 0~1,越接近1代表越正面
    score = s.sentiments
    if score > 0.6:
        sentiment = "正面"
    elif score < 0.4:
        sentiment = "负面"
    else:
        sentiment = "中性"
    result_list.append({"text": text, "score": round(score,3), "sentiment": sentiment})

df = pd.DataFrame(result_list)
print(df)

✅优点:本地运行,速度快,不需要网络、API费用

❌缺点:中文语料偏口语,对财经、行业专业文本效果差,长文本容易判断错误

四、案例2:调用大模型API做专业舆情判断(推荐正式使用)

SnowNLP这类简易模型很难看懂行业新闻、公告。大模型能理解复杂长文,支持自定义输出格式,适合企业、财经类舆情。

python 复制代码
import requests
import json

def llm_sentiment_analysis(content: str, subject: str):
    api_key = "YOUR_API_KEY"
    url = "[https://xxx-api.com/v1/chat/completions](https://xxx-api.com/v1/chat/completions)"
    headers = {
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json"
    }
    prompt = f"""
任务:舆情分析,分析下面文本对于【{subject}】的舆论倾向。
输出严格JSON,包含字段:
sentiment:正面/负面/中性
sentiment_score:-1到1之间,-1极度负面,1极度正面
key_words:提取3个核心关键词列表
summary:一句话简述舆情观点
文本内容:{content}
"""
    payload = {
        "model": "qwen-turbo",
        "messages": [{"role": "user", "content": prompt}],
        "temperature": 0.1
    }
    resp = requests.post(url, headers=headers, json=payload)
    return resp.json()["choices"][0]["message"]["content"]


if __name__ == "__main__":
    news_text = "公司收到监管问询函,要求说明业务收入真实性,股价当日大幅下跌。"
    res = llm_sentiment_analysis(news_text, subject="该上市公司")
    print("舆情分析结果:\n", res)

五、案例3:生成词云,直观展示热点关键词

舆情分析做完,经常需要可视化,词云是最常用的展示方式。

python 复制代码
import jieba
from wordcloud import WordCloud

text = """公司营收增长 订单充足 利润下滑 监管问询 产品质量 研发投入 股价波动 市场预期"""
# 分词
words = jieba.lcut(text)
cut_text = " ".join(words)

wc = WordCloud(
    font_path="C:/Windows/Fonts/simhei.ttf", # 黑体字体,解决中文乱码
    background_color="white",
    width=800, height=400
).generate(cut_text)

# 保存图片
wc.to_file("wordcloud.png")
print("词云图片已生成 wordcloud.png")

六、进阶方案:批量采集+舆情聚合

实际项目中不会只分析单条文本,完整流程:

  1. requests批量抓取新闻列表,bs4解析正文;
  2. 清洗文本,过滤重复内容;
  3. 循环调用AI接口,批量打情感标签;
  4. pandas聚合统计:正面占比、负面占比,每日热度趋势;
  5. 存入SQLite/MySQL,定时每日自动跑任务;
  6. 生成每日舆情简报。

重点提醒:爬虫务必控制请求频率,加延时,禁止高频暴力请求,避免违反网站规则。

七、舆情分析常见坑

  1. 简易模型理解能力弱:SnowNLP只适合简单口语评论,专业财经、法律文本尽量使用大模型;
  2. 上下文缺失误判:单条新闻容易断章取义,需要结合多篇报道综合判断;
  3. 反讽识别困难:讽刺、阴阳怪气的文本,AI很容易识别错误;
  4. 数据噪音多:网页会夹杂广告、导航文字,不清洗会严重干扰分析结果;
  5. 大模型幻觉:关键词、摘要偶尔编造,重要舆情结论需要人工复核原文;
  6. 重复内容:同一条新闻多家媒体转载,统计热度时要做文本去重。

八、学习路线

  1. 入门:学会requests+BeautifulSoup简单抓取,jieba分词、词云;
  2. 初级:SnowNLP做简单评论情感打分,Pandas批量处理文本;
  3. 中级:调用大模型API,批量舆情打标,结构化输出JSON;
  4. 进阶:文本相似度去重、命名实体识别NER、时序热度统计;
  5. 工程化:定时任务自动采集,数据库存储,Streamlit搭建舆情看板。

小结

Python做舆情分析,核心就是机器负责批量处理海量文本,AI负责读懂情绪和观点 。轻量场景用本地小模型快速验证;正式业务场景优先大模型,语义理解更强。

舆情工具只能作为辅助,关键事件的结论不能完全交给AI,人工复核必不可少。

相关推荐
@嵌入式扫地僧2 分钟前
实战教程:NVIDIA Jetson Nano 8GB 搭建本地 RAG 大语言模型知识库完整指南
人工智能·ai·jetson nano·1024程序员节·rag
效率工作实验室4 分钟前
商业智能报告趋势解析:标准化报告为何正被个性化分析取代
数据分析·agent·商业智能报告·标准化报告·个性化分析
JustNow_Man4 分钟前
【Harness】本地文本向量化搜索解决方案--qmd
git·python·算法
小林ixn4 分钟前
用 FastAPI + SQLAlchemy 从零手搓一个博客系统:一套能落地、能讲清楚的 RESTful 后端
后端·python·fastapi
全栈探索者4 分钟前
出图模型怎么选?同一只猫的四场实测:Z-Image、Qwen-Image 2.1、SD1.5 三维对决
人工智能·macos·aigc·stablediffusion·comfyui
小年糕是糕手5 分钟前
【AI】用 Python 做一个 AI 截图检索助手:把收藏夹里的截图找回来
linux·人工智能·python·chatgpt·agent·codex·deepseek
特立独行的猫a7 分钟前
用仓颉写桌面应用的“薄壳框架”cj-tauri ,以及它的 AI 对话客户端 ai-chat
人工智能·harmonyos·tauri·仓颉·鸿蒙pc·cj-tarui·ai客户端
乐动心情9 分钟前
AI推理性能优化的关键技术即演进路径
人工智能·性能优化
努力努力再努力FFF10 分钟前
普通人适合考什么AI证书?不同基础和学习目标怎么选
人工智能·学习
愤怒火龙果15 分钟前
AI 渗透测试智能体架构综述:从单兵到蜂群的演进图谱
人工智能·网络安全·架构