Datawhale AI 夏令营 大模型方向学习记录
赛题及概要
参赛者需基于提供的带货视频文本及评论文本数据,完成以下三阶段分析任务:
-
【商品识别】精准识别推广商品;
-
【情感分析】对评论文本进行多维度情感分析,涵盖维度见数据说明;
-
【评论聚类】按商品对归属指定维度的评论进行聚类,并提炼类簇总结词。
【商品识别】
-
分析
![image]()
根据题目要求,需要从video_data.csv数据集内提取文本信息进行商品识别。其中"product_name"的取值必须是Xfaiyx Smart Translator/Xfaiyx Smart Recorder
问题:将视频描述和视频标签内容作为信息源,如何从中提取商品名称?
解决:尝试用大模型作为分析机器,输入视频信息,输出商品名称。 -
过程
参考资料:
Spark Ultra 4.0 HTTP调用文档
代码详情:- 首先,读入视频数据和评论数据
# 第一步,读入视频数据和评论数据 import pandas as pd video_data = pd.read_csv("origin_videos_data.csv") comments_data = pd.read_csv("origin_comments_data.csv") - 其次,将视频介绍和标签合为一个文本,方便给模型提问
# 将视频介绍和标签合为一个文本 video_data["text"] = video_data["video_desc"].fillna("") + " " + video_data["video_tags"].fillna("") print(video_data["text"][0]) - 接下来根据http调用手册进行模型调用与回答解析。其中,需要编写调用请求的函数以及解析回答的函数。
import requests import json def get_product_name(text): """从单条JSON格式的text中提取content作为产品名称""" try: # 解析JSON字符串 json_obj = json.loads(text) # 按照固定结构提取content:choices[0].message.content if "choices" in json_obj and len(json_obj["choices"]) > 0: choice = json_obj["choices"][0] if "message" in choice and "content" in choice["message"]: return choice["message"]["content"].strip() # 去除首尾空格 # 若结构不符,返回空或提示 return "" except (json.JSONDecodeError, TypeError): # 解析失败时返回空(或根据需求调整) return "" def get_response(text): url = "https://spark-api-open.xf-yun.com/v1/chat/completions" data = { "model": "4.0Ultra", # 指定请求的模型 "messages": [ { "role": "user", "content": "根据给出的文本介绍和标签返回主要的产品名称,回答的内容只能是商\ 品列表[Xfaiyx Smart Translator, Xfaiyx Smart Recorder]中的一个元素,规格化回答\ ,给出的回复只有“Xfaiyx Smart Translator”或“Xfaiyx Smart Recorder”,\ 注意回答必须完全匹配,只有英文字符,不能出现其他任何符号、细节内容或风险提示"+text } ] } header = { "Authorization": "Bearer dAikyuGIgnfDzisymIAd:WPwDVUxptKCdCoGqchJs" # 注意此处把“123456”替换为自己的APIPassword } response = requests.post(url, headers=header, json=data) name = get_product_name(response.text) print(name) return name - 接着对csv文件中的每一行视频信息进行轮询,不断请求模型回答,将经过处理后的商品名称合并到csv文件中。
def get_products_name(video_data): # 创建副本避免修改原始数据 result = video_data.copy() for index, row in result.iterrows(): if pd.isna(row['product_name']) or row['product_name'].strip() == '': name = get_response(row["text"]) result.at[index, 'product_name'] = name return result # 使用返回的新DataFrame modified_data = get_products_name(video_data)
- 首先,读入视频数据和评论数据
【情感分析】
- 1742条训练集
4735条测试集


浙公网安备 33010602011771号