Janus-Pro-7B入门教程:Python爬虫数据的情感分析与摘要生成

📅 发布时间:2026/7/3 12:46:00 👁️ 浏览次数:
Janus-Pro-7B入门教程:Python爬虫数据的情感分析与摘要生成
Janus-Pro-7B入门教程Python爬虫数据的情感分析与摘要生成你是不是经常在网上看到海量的用户评论比如电商平台上的产品评价感觉信息量巨大但又想快速了解大家的主流看法手动一条条看效率太低用传统方法分析又觉得不够智能。今天我们就来动手解决这个问题。我会带你用Python爬虫把网上的评论数据抓取下来然后交给一个叫Janus-Pro-7B的AI模型让它自动帮你分析每条评论是好评还是差评最后再生成一份言简意赅的产品评价摘要。整个过程你只需要一些基础的Python知识就能搭建起一套属于自己的智能数据处理流水线。通过这篇教程你将学会如何把爬虫技术和AI模型结合起来让机器帮你从杂乱的数据中提炼出有价值的信息。我们以电商评论为例但思路可以轻松迁移到社交媒体、新闻、论坛等各种文本数据分析场景。1. 环境准备与工具安装工欲善其事必先利其器。在开始写代码之前我们需要先把“厨房”收拾好把必要的“厨具”准备好。整个过程很简单跟着步骤走就行。1.1 安装Python与包管理工具首先确保你的电脑上安装了Python。推荐使用Python 3.8或以上的版本稳定性更好。打开你的命令行终端Windows上是CMD或PowerShellMac/Linux上是Terminal输入以下命令检查python --version # 或者 python3 --version如果显示了类似Python 3.8.10的版本信息那就没问题。如果没有安装可以去Python官网下载安装包记得在安装时勾选“Add Python to PATH”选项。接下来我们需要安装pip这是Python的包管理工具用来安装我们需要的第三方库。通常安装Python时会自带pip你可以用下面的命令检查并升级到最新版pip --version pip install --upgrade pip1.2 安装必需的Python库我们的项目需要用到几个关键的库requests 一个简单好用的HTTP库用来发送网络请求抓取网页数据。beautifulsoup4 一个HTML/XML解析库能帮我们从复杂的网页代码里轻松提取出我们想要的文字内容。pandas 数据分析的神器用来处理和保存我们爬取到的数据非常方便。在命令行中一次性安装它们pip install requests beautifulsoup4 pandas安装过程可能会花上一两分钟取决于你的网速。看到“Successfully installed”的字样就说明安装成功了。1.3 获取Janus-Pro-7B的API访问权限Janus-Pro-7B是一个功能强大的大语言模型我们不需要在本地部署它那需要很高的显卡配置而是通过调用其API服务来使用它的情感分析和摘要生成能力。通常你需要去提供该模型API服务的平台进行注册并获取一个API密钥API Key。这个密钥就像一把钥匙有了它你的程序才能获得使用模型的权限。获取到API Key后请妥善保存我们后面会用到。为了安全起见不要把它直接写在代码里然后上传到公开网站。假设你获取到的API基础地址Base URL是https://api.example-ai-platform.com/v1API Key是sk-your-secret-key-here。请用你实际获取的信息替换它们。2. 第一步用Python爬虫抓取电商评论现在我们开始动手写代码。第一个目标是从一个模拟的电商产品页面把用户评论抓取下来。为了教学目的我们不会去爬取真实的商业网站可能涉及反爬机制和法律法规而是自己创建一个简单的本地HTML文件来模拟。2.1 创建模拟数据文件在你的项目文件夹里新建一个名为product_page.html的文件用记事本或任何代码编辑器打开粘贴以下内容!DOCTYPE html html head title模拟产品页面/title /head body h1智能手机X/h1 div classreviews div classreview p手机收到了外观很漂亮运行速度飞快拍照效果比我之前的手机好太多了非常满意。/p /div div classreview p电池续航有点短一天要充两次电。其他方面还行吧。/p /div div classreview p物流速度太慢了等了一个星期。手机本身没问题屏幕显示很清晰。/p /div div classreview p完全不推荐用了两天就死机了客服处理问题的态度也很差。/p /div div classreview p性价比之王这个价位能买到这样的配置和做工真是物超所值。/p /div /div /body /html这个文件模拟了一个包含5条用户评论的产品页面。每条评论都在一个classreview的div标签里。2.2 编写爬虫脚本抓取评论接下来我们写一个Python脚本使用requests和BeautifulSoup来读取这个HTML文件并提取评论。新建一个scraper.py文件。import requests from bs4 import BeautifulSoup import pandas as pd def scrape_local_html(file_path): 从本地HTML文件爬取评论数据。 参数: file_path (str): HTML文件的路径。 返回: list: 包含所有评论文本的列表。 # 打开并读取本地HTML文件 with open(file_path, r, encodingutf-8) as file: html_content file.read() # 使用BeautifulSoup解析HTML soup BeautifulSoup(html_content, html.parser) # 找到所有class为review的div标签 review_divs soup.find_all(div, class_review) # 提取每个div标签内的段落(p)文本 reviews [] for div in review_divs: # 找到div内的第一个p标签获取其文本并去除首尾空格 review_text div.find(p).get_text().strip() if review_text: # 确保文本不为空 reviews.append(review_text) print(f成功爬取到 {len(reviews)} 条评论。) for i, review in enumerate(reviews, 1): print(f评论{i}: {review}) return reviews if __name__ __main__: # 指定本地HTML文件路径 html_file product_page.html # 执行爬取 comment_list scrape_local_html(html_file) # 将数据保存为CSV文件方便后续查看和使用 df pd.DataFrame(comment_list, columns[评论内容]) df.to_csv(crawled_comments.csv, indexFalse, encodingutf-8-sig) print(评论数据已保存到 crawled_comments.csv)运行这个脚本你会在终端看到爬取到的5条评论同时项目文件夹里会生成一个crawled_comments.csv文件。这就是我们爬虫部分的成果。小提示如果你想尝试爬取真实的网页只需要将scrape_local_html函数稍作修改使用requests.get(‘真实网址’)来获取网页内容即可。但务必遵守网站的robots.txt协议并控制请求频率避免给对方服务器造成压力。3. 第二步调用Janus-Pro-7B进行情感分析数据有了现在该请出我们的AI助手了。我们要把每一条评论都发送给Janus-Pro-7B模型让它判断这条评论表达的是正面、负面还是中性的情绪。3.1 构建API请求函数我们需要编写一个函数能够正确地将评论文本和问题指令打包发送给模型的API并解析返回的结果。新建一个sentiment_analyzer.py文件。import requests import json import time # 替换为你自己的API信息 API_BASE_URL https://api.example-ai-platform.com/v1/chat/completions # 示例端点 API_KEY sk-your-secret-key-here def analyze_sentiment_with_janus(comment_text): 调用Janus-Pro-7B API分析单条评论的情感倾向。 参数: comment_text (str): 需要分析的评论文本。 返回: str: 情感分析结果如‘正面’‘负面’‘中性’。 # 构建请求头包含认证信息 headers { Content-Type: application/json, Authorization: fBearer {API_KEY} } # 构建请求体Payload # 我们通过设计一个清晰的“系统提示”和“用户消息”来引导模型完成任务 payload { model: janus-pro-7b, # 指定模型名称根据平台实际名称调整 messages: [ { role: system, content: 你是一个专业的情感分析助手。请严格根据用户提供的文本内容判断其情感倾向。只输出以下三种分类之一‘正面’、‘负面’或‘中性’。不要输出任何其他解释或文字。 }, { role: user, content: f请分析以下评论的情感倾向\n\n{comment_text} } ], temperature: 0.1, # 较低的温度值使输出更确定、更一致 max_tokens: 10 # 限制生成的长度我们只需要一个词 } try: response requests.post(API_BASE_URL, headersheaders, datajson.dumps(payload)) response.raise_for_status() # 如果请求失败状态码不是200抛出异常 result response.json() # 从API返回的JSON结构中提取模型生成的文本内容 # 具体路径可能需要根据API的实际响应格式调整 sentiment result[choices][0][message][content].strip() return sentiment except requests.exceptions.RequestException as e: print(f请求API时发生错误: {e}) return 请求失败 except (KeyError, json.JSONDecodeError) as e: print(f解析API响应时发生错误: {e}) return 解析失败 # 测试一下这个函数 if __name__ __main__: test_comment 手机收到了外观很漂亮运行速度飞快拍照效果比我之前的手机好太多了非常满意。 print(f测试评论: {test_comment}) result analyze_sentiment_with_janus(test_comment) print(f情感分析结果: {result})运行这个测试你应该能看到模型将这条充满赞美之词的评论判断为“正面”。temperature参数控制着输出的随机性设为较低的值如0.1能让模型在分类任务上更稳定。3.2 批量处理爬取的评论现在我们把爬虫和情感分析连接起来批量处理之前抓取的所有评论。创建一个新的main_pipeline.py文件作为主流程。import pandas as pd from scraper import scrape_local_html from sentiment_analyzer import analyze_sentiment_with_janus import time def main(): print( 开始智能评论分析流水线 ) # 1. 爬取数据 print(\n1. 正在爬取评论数据...) html_file product_page.html comments scrape_local_html(html_file) # 2. 情感分析 print(\n2. 正在调用Janus-Pro-7B进行情感分析...) results [] for i, comment in enumerate(comments): print(f 正在分析第 {i1}/{len(comments)} 条评论...) sentiment analyze_sentiment_with_janus(comment) results.append({ 评论内容: comment, 情感倾向: sentiment }) time.sleep(1) # 每次请求间隔1秒避免对API服务器造成瞬时压力 # 3. 保存结果 print(\n3. 正在保存分析结果...) df_results pd.DataFrame(results) output_file comment_sentiment_analysis.csv df_results.to_csv(output_file, indexFalse, encodingutf-8-sig) print(f分析完成结果已保存至 {output_file}) # 4. 简单统计 print(\n4. 情感分布统计:) sentiment_counts df_results[情感倾向].value_counts() print(sentiment_counts.to_string()) # 计算正面评价比例 if 正面 in sentiment_counts: positive_ratio sentiment_counts[正面] / len(df_results) * 100 print(f正面评价占比: {positive_ratio:.1f}%) if __name__ __main__: main()运行这个主脚本你会看到程序依次执行爬取、分析、保存和统计的步骤。最终生成的comment_sentiment_analysis.csv文件里每条评论后面都多了一列“情感倾向”。4. 第三步生成产品评价摘要知道了每条评论的情感倾向我们还想有一个整体的把握。比如“这款手机总体来说怎么样主要的优点和缺点是什么” 这时我们可以让Janus-Pro-7B基于所有评论自动生成一段总结性摘要。4.1 编写摘要生成函数在sentiment_analyzer.py文件里我们增加一个新的函数。def generate_summary_with_janus(comments_list): 调用Janus-Pro-7B API基于所有评论生成产品评价摘要。 参数: comments_list (list): 包含所有评论文本的列表。 返回: str: 生成的评价摘要文本。 # 将所有评论拼接成一个文本块作为上下文提供给模型 all_comments_text \n.join([f- {comment} for comment in comments_list]) headers { Content-Type: application/json, Authorization: fBearer {API_KEY} } payload { model: janus-pro-7b, messages: [ { role: system, content: 你是一个电商数据分析专家。请根据用户提供的产品评论列表生成一段简洁、客观、全面的产品评价摘要。摘要应概括用户反馈的主要优点、缺点和总体印象。 }, { role: user, content: f请根据以下用户评论为该产品生成一段评价摘要\n\n{all_comments_text} } ], temperature: 0.7, # 稍高的温度让摘要生成更有创造性 max_tokens: 300 # 给予足够的长度来生成一段完整的摘要 } try: response requests.post(API_BASE_URL, headersheaders, datajson.dumps(payload)) response.raise_for_status() result response.json() summary result[choices][0][message][content].strip() return summary except requests.exceptions.RequestException as e: print(f请求API时发生错误: {e}) return 摘要生成失败 except (KeyError, json.JSONDecodeError) as e: print(f解析API响应时发生错误: {e}) return 摘要生成失败4.2 整合摘要生成到主流程最后我们更新main_pipeline.py在流水线的末尾加入摘要生成步骤。import pandas as pd from scraper import scrape_local_html from sentiment_analyzer import analyze_sentiment_with_janus, generate_summary_with_janus import time def main(): print( 开始智能评论分析流水线 ) # 1. 爬取数据 print(\n1. 正在爬取评论数据...) html_file product_page.html comments scrape_local_html(html_file) # 2. 情感分析 print(\n2. 正在调用Janus-Pro-7B进行情感分析...) results [] for i, comment in enumerate(comments): print(f 正在分析第 {i1}/{len(comments)} 条评论...) sentiment analyze_sentiment_with_janus(comment) results.append({ 评论内容: comment, 情感倾向: sentiment }) time.sleep(1) # 3. 保存情感分析结果 print(\n3. 正在保存情感分析结果...) df_results pd.DataFrame(results) sentiment_output_file comment_sentiment_analysis.csv df_results.to_csv(sentiment_output_file, indexFalse, encodingutf-8-sig) print(f情感分析完成结果已保存至 {sentiment_output_file}) # 4. 生成评价摘要 print(\n4. 正在生成产品评价摘要...) product_summary generate_summary_with_janus(comments) print(\n【产品评价摘要】) print(- * 30) print(product_summary) print(- * 30) # 5. 将摘要也保存到文件 summary_output_file product_summary.txt with open(summary_output_file, w, encodingutf-8) as f: f.write(product_summary) print(f评价摘要已保存至 {summary_output_file}) # 6. 简单统计 print(\n5. 情感分布统计:) sentiment_counts df_results[情感倾向].value_counts() print(sentiment_counts.to_string()) if 正面 in sentiment_counts: positive_ratio sentiment_counts[正面] / len(df_results) * 100 print(f正面评价占比: {positive_ratio:.1f}%) print(\n 流水线执行完毕 ) if __name__ __main__: main()再次运行更新后的main_pipeline.py。程序会在完成情感分析后将所有评论作为上下文发送给模型请求它生成一段摘要。你会看到在终端打印出的摘要内容同时也会被保存到product_summary.txt文件中。对于我们模拟的5条评论生成的摘要可能会是这样的风格“综合用户反馈该手机在外观设计、运行速度和拍照效果上获得了较多好评用户认为其物有所值。但电池续航能力不足是一个明显的短板部分用户表示需要频繁充电。此外物流服务和售后客服方面存在负面评价。总体而言产品在核心性能上表现突出但在续航和服务细节上有待改进。”5. 总结与扩展思路跟着走完这一套流程你应该已经成功搭建了一个从数据抓取、到智能分析、再到自动总结的小型系统。整个过程没有特别复杂的理论就是一步步把工具用起来让它们各司其职。用爬虫获取原始数据用大语言模型理解数据最后再把理解的结果呈现出来。这个简单的例子可以轻松扩展。比如你可以尝试去爬取真实电商网站某个商品页的评论注意遵守规则用成百上千条真实数据来跑这个流程看看模型总结出的优缺点是否准确。你也可以调整给模型的指令system和user消息让它进行更细粒度的分析比如区分是“对物流不满”还是“对产品质量不满”。情感分析和摘要生成只是Janus-Pro-7B能力的冰山一角。这套“爬虫AI API”的组合拳完全可以应用到新闻舆情监控、社交媒体话题分析、用户反馈自动归类等更多场景。关键在于想清楚你的数据从哪里来爬虫目标以及你想从数据中知道什么给AI的指令。刚开始可能会遇到API调用报错、返回格式不对、或者分析结果有偏差的情况这都很正常。多看看API文档调整一下请求的参数和提示词的写法问题通常都能解决。动手试错本身就是学习最快的方式。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。