Datawhale AI 夏令营 大模型方向学习记录

赛题及概要

赛题链接

参赛者需基于提供的带货视频文本及评论文本数据,完成以下三阶段分析任务:

  1. 【商品识别】精准识别推广商品;

  2. 【情感分析】对评论文本进行多维度情感分析,涵盖维度见数据说明;

  3. 【评论聚类】按商品对归属指定维度的评论进行聚类,并提炼类簇总结词。

【商品识别】

  1. 分析
    image

    根据题目要求,需要从video_data.csv数据集内提取文本信息进行商品识别。其中"product_name"的取值必须是Xfaiyx Smart Translator/Xfaiyx Smart Recorder

    问题:将视频描述和视频标签内容作为信息源,如何从中提取商品名称?
    解决:尝试用大模型作为分析机器,输入视频信息,输出商品名称。

  2. 过程
    参考资料:
    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条测试集
posted @ 2025-07-10 19:32  Fosi  阅读(18)  评论(0)    收藏  举报