【技术实战】我用Python+AI给G2评论做了一套“体检系统”,产品经理直呼内行!

32 阅读4分钟

最近花了些时间,终于把我构思了很久的一个小项目跑通了:一个针对G2平台评论的自动化分析与监控系统。

做这个的初衷很简单:我自己在做一些行业分析和竞品调研时,发现G2上的用户评论是真正的“富矿”,但手动收集和分析效率极低。市面上要么没有趁手的工具,要么就是天价的企业级解决方案。

于是,作为一个行动派,我决定自己动手搞一个。现在这个系统的MVP版本已经能稳定运行了,和大家分享一下技术思路,也看看有没有同样需求的朋友。

一、系统核心架构与技术选型 整个系统可以分成四个核心模块:

  1. 数据采集模块(最棘手的部分)
async def fetch_g2_reviews(product_slug: str):
    # 1. 动态请求头与会话管理
    # 2. 智能请求频率控制(防止触发反爬)
    # 3. 验证码识别与处理方案(此处是关键,采用了混合策略)
    # 4. 分布式代理IP池支持
    # 5. 数据增量更新与去重逻辑
    pass

难点攻克:G2的反爬机制比较完善,单纯的requests库加User-Agent轮换已经很难奏效。我最终采用 Playwright 模拟真实浏览器行为,并结合了一套自定义的请求调度算法,才实现了稳定、低错误率的采集。这部分是坑最多的地方,花了我最多时间调试。

  1. 数据清洗与存储模块

原始HTML通过BeautifulSoup和正则表达式提取结构化信息(评分、日期、Pros/Cons等)。

使用PostgreSQL进行存储,表结构设计考虑了高效的聚合查询(比如按时间范围查平均分、情感趋势)。

关键设计:不存储原始评论文本,而是存储处理后的特征向量和情感标签,一方面减少存储压力,另一方面也规避了潜在的版权风险,聚焦于“分析洞察”而非“数据本身”。

  1. AI分析引擎(价值所在) 这是系统的“大脑”,也是我觉得最有意思的部分。
def analyze_sentiment_batch(review_texts):
    # 方案A:本地部署的轻量模型(低成本,实时性好)
    # 使用 transformers 库加载 fine-tuned 的 RoBERTa 模型
    # 方案B:调用 OpenAI API(精度高,用于生成总结性描述)
    # 根据评论长度和需求动态选择方案
    return sentiment_scores, topics

情感分析:我微调了一个在电商评论上表现不错的预训练模型,专门针对G2评论中“It's great but the price...”这类转折句式进行优化,判断更准确。

主题自动聚类:用了BERTopic,自动把成千上万条评论归到“定价”、“UI/UX”、“客户支持”、“集成能力”等几个主题下,一目了然。

关键短语与痛点提取:用TF-IDF和TextRank算法抽取出用户最常提及的优缺点关键词。

  1. 可视化与报告生成

后端用FastAPI提供数据接口。

前端用React + ECharts画了一些交互性不错的图表:情感趋势图、竞品对比雷达图、主题词云。

报告模块可以用Jinja2模板+WeasyPrint自动生成PDF周报,包含核心指标和AI提炼的“本周用户最关心的三件事”。

二、系统能产出什么?(价值展示)

  1. 这套系统跑起来后,产出的不是一堆原始数据,而是可直接用于决策的洞察。比如:

  2. 情感健康仪表盘:一眼看清你的产品(或竞品)在过去30天里,用户的正/负面情绪变化曲线。突然出现负面高峰?系统会标红提示。

  3. 竞品对比报告:勾选2-3个竞品,一键生成功能维度、满意度维度的对比图。知道对手的软肋和长板在哪里。

  4. 自动化痛点警报:当“价格”、“Bug”、“难用”等关键词在短时间内的提及率异常升高时,系统可以自动发邮件或Slack通知。

  5. 可分享的洞察简报:每周一自动生成一份PDF简报,汇总上周最重要的用户反馈趋势,直接拿去开周会。

三、走过的弯路与经验总结

  • 别和反爬死磕:最开始想用纯Scrapy架构追求极限速度,结果账号和IP被封得怀疑人生。后来切换到“模拟真人+低速可靠”的策略,反而整体效率更高。
  • 成本控制很重要:全部用GPT-4做分析固然效果好,但成本吃不消。我的策略是:摘要总结等创造性任务用GPT,情感分类、主题聚类等用本地模型,混合调度。
  • 合规是生命线:系统设计之初就定下原则:只输出分析结果和聚合数据,不提供原始评论的批量导出。所有数据用于生成洞察图表和报告,这让我避免了法律上的灰色地带。 屏幕截图 2025-12-08 221801.png 屏幕截图 2025-12-08 221859.png 屏幕截图 2025-12-08 221910.png