大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源等领域有深厚造诣。
图书作者:《ESP32-C3 物联网工程开发实战》
图书作者:《SwiftUI 入门,进阶与实战》
超级个体:COC上海社区主理人
特约讲师:大学讲师,谷歌亚马逊分享嘉宾
科技博主:华为HDE/HDG
我的博客内容涵盖广泛,主要分享技术教程、Bug解决方案、开发工具使用、前沿科技资讯、产品评测与使用体验。我特别关注云服务产品评测、AI 产品对比、开发板性能测试以及技术报告,同时也会提供产品优缺点分析、横向对比,并分享技术沙龙与行业大会的参会体验。我的目标是为读者提供有深度、有实用价值的技术洞察与分析。
展菲:您的前沿技术领航员
👋 大家好,我是展菲!
📱 全网搜索“展菲”,即可纵览我在各大平台的知识足迹。
📣 公众号“Swift社区”,每周定时推送干货满满的技术长文,从新兴框架的剖析到运维实战的复盘,助您技术进阶之路畅通无阻。
💬 微信端添加好友“fzhanfei”,与我直接交流,不管是项目瓶颈的求助,还是行业趋势的探讨,随时畅所欲言。
📅 最新动态:2025 年 3 月 17 日
快来加入技术社区,一起挖掘技术的无限潜能,携手迈向数字化新征程!
文章目录
摘要
公共健康话题在社交媒体上随时都有“爆点”,但靠人工去追踪这些动态实在太慢了。有没有可能用 AI 来帮我们盯着这些内容,自动分析情绪、提取话题,还能画趋势图看看“热”在哪儿?这篇文章就来带你一步步用 LangChain + OpenAI(或 DeepSeek)搭建一个“AI 舆情雷达”,快速识别微博、公众号等平台上的健康相关话题,感知情绪走向,还能自动可视化趋势变化。
引言
做公益或者公共服务类项目时,常常会需要了解群众对某个健康议题的看法,比如“疫苗副作用”、“心理健康问题”、“癌症治疗骗局”等等。但是想要快速分析这些话题,不但需要收集数据,还要分析这些评论到底是正向的、负向的,甚至要判断有没有造谣、偏激言论。
这时候 AI 就可以派上大用场了,我们可以用自然语言处理模型加一点点逻辑和脚本,让它像个小助手一样,帮我们扫清这些杂乱无章的舆情信息。
整体方案设计
我们要实现的目标是:
-
自动抓取社交媒体上的健康话题内容(可用模拟文本或调用平台 API)
-
用大模型做话题提取、情感分析
-
整理分析结果并用图表可视化
-
最终输出一份“健康舆情简报”
我们会使用的技术栈包括:
-
Python 3.10+
-
LangChain
-
OpenAI 或 DeepSeek(API 接入)
-
Matplotlib(数据可视化)
-
Pandas(数据处理)
-
Streamlit(可选,用来快速部署成 Web 页面)
搭建项目环境
安装依赖
pip install langchain openai pandas matplotlib streamlit
如果你用的是 DeepSeek,可以替换 openai
部分,接入它的 API 即可。
核心功能实现
模拟数据抓取(或调用真实微博/公众号 API)
# mock_social_posts.py
mock_posts = [
"今天看到一个关于疫苗后遗症的帖子,好担心!",
"我觉得现在的心理咨询机构有点坑人……",
"最近频繁看到关于HPV疫苗的宣传,有点反感了",
"刚做完体检,医生说要注意高血压问题,吓到我了",
"癌症防治宣传周感觉还挺有意义的,希望大家重视"
]
调用大模型提取话题+情感
# ai_analysis.py
from langchain.chat_models import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
from mock_social_posts import mock_posts
llm = ChatOpenAI(temperature=0, model="gpt-3.5-turbo") # 或 deepseek-chat
template = """
你是一名公共健康舆情分析专家。请帮我从下面的社交媒体内容中:
1\. 提取出提到的“健康话题”;
2\. 判断整体情感(积极、中立、消极);
3\. 简要说明理由。
内容如下:{content}
"""
prompt = ChatPromptTemplate.from_template(template)
def analyze_post(content):
chain = prompt | llm
result = chain.invoke({"content": content})
return result.content
批量处理并结构化结果
# batch_analysis.py
import pandas as pd
from ai_analysis import analyze_post
from mock_social_posts import mock_posts
results = []
for post in mock_posts:
output = analyze_post(post)
print("原文:", post)
print("AI分析结果:", output)
results.append({"原文": post, "AI分析": output})
df = pd.DataFrame(results)
df.to_csv("舆情分析结果.csv", index=False)
情感趋势图表可视化
# visualize.py
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv("舆情分析结果.csv")
# 简单根据关键词判断情绪(实际可用 LLM 输出结果分类)
def get_sentiment(text):
if "积极" in text:
return "Positive"
elif "消极" in text:
return "Negative"
else:
return "Neutral"
df["情绪倾向"] = df["AI分析"].apply(get_sentiment)
sentiment_counts = df["情绪倾向"].value_counts()
sentiment_counts.plot(kind="bar", title="健康话题情感分布")
plt.xlabel("情感类别")
plt.ylabel("帖子数量")
plt.tight_layout()
plt.savefig("sentiment_chart.png")
plt.show()
可视化部署(可选)
用 Streamlit 可以把整个过程变成一个在线小工具,几行代码就能搞定:
# app.py
import streamlit as st
import pandas as pd
df = pd.read_csv("舆情分析结果.csv")
st.title("AI 健康舆情分析小工具")
st.write(df)
st.image("sentiment_chart.png", caption="情感趋势图")
运行命令:
streamlit run app.py
QA 环节
Q:可以接入真实微博 API 吗?
A:当然可以!可以使用 新浪微博开放平台 或爬虫抓取,文章中用的是模拟数据主要是为了简单演示逻辑。
Q:大模型调用会不会很慢?
A:如果只分析几十条内容是没问题的,超过几百条建议异步处理或批量发送。如果你是用 DeepSeek,也支持并发请求。
Q:怎么让分析更准确?
A:可以把 prompt 拆成两个阶段:先提话题,再提情绪;或者加 few-shot 示例让模型学得更好。
总结
这篇文章咱们从最初的“社交平台太吵,信息抓不住”,一步步搭出了一个 AI 帮忙做舆情分析的小工具,能分析情绪、提取话题,还能画趋势图。虽然只是一个小项目,但它的可扩展性很强,不管是要做公益传播、媒体监控、公共健康响应,它都能派上用场。