Datawhale AI 夏令营:基于带货视频评论的用户洞察挑战赛(1)
Datawhale AI 夏令营:基于带货视频评论的用户洞察挑战赛(1)
赛事任务
赛事任务主要分为三个阶段:
-
【商品识别】精准识别推广商品;
-
【情感分析】对评论文本进行多维度情感分析,涵盖维度见数据说明;
-
【评论聚类】按商品对归属指定维度的评论进行聚类,并提炼类簇总结词。
我们先着手解决第一个任务:商品识别。
数据
商品识别的数据集内容如下:
| 序号 | 变量名称 | 变量格式 | 解释 |
|---|---|---|---|
| 1 | video_id | string | ID,用于标识样本,无实际意义 |
| 2 | video_desc | string | 视频描述,重要信息 |
| 3 | video_tags | string | 视频标签,缺失值较多,重要信息 |
| 4 | product_name | string | 推广商品名称,预测目标 |
总共85个样本,只有前20个给出了标签,剩下的均需要预测。先来看看baseline的做法。
任务思路
baseline
baseline将video_desc和video_tags直接拼接成新的文本,并放置在text列:
video_data["text"] = video_data["video_desc"].fillna("") + " " + video_data["video_tags"].fillna("")
然后分词后转化成TF-IDF矩阵使用SGD分类器进行分类:
product_name_predictor = make_pipeline(
TfidfVectorizer(tokenizer=jieba.lcut, max_features=50), SGDClassifier()
)
product_name_predictor.fit(
video_data[~video_data["product_name"].isnull()]["text"],
video_data[~video_data["product_name"].isnull()]["product_name"],
)
video_data["product_name"] = product_name_predictor.predict(video_data["text"])
按此方法取得的分数在80分左右,效果差强人意。
分析
-
这个任务的第一个矛盾在于文字的拼写。如:ai voice recorder 和 AiVoiceRecorder,分词器并不能将粘连在一起的词分开,从而导致模型将这些含义接近的词当成一个全新的词,使得分类性能下降。
-
第二个矛盾是符号。baseline中没有对非文本内容做出处理,某些符号可能在一个文本里多次出现,但没有在其他文本里大规模出现(如笑脸表情、全角感叹号或问号等),都可能导致TF-IDF值较高,影响预测结果。
-
第三个矛盾,也是最主要的矛盾在于样本量过少,且数据集中包含多种语言,若测试集中的语言没有在训练集里出现,那么分类效果将很不理想。
可以尝试的解决方法
-
对于分词问题,可以不仅仅使用
jieba分词工具,也可以自定义规则,将粘连拼写的词分开。 -
Recorder和Translator是与最终结果强相关的两个单词,可以在分类时考虑进去。 -
同时,TfidfVectorizer是大小写敏感的,若单词拼写相同,但大小写不同也会当成完全不同的词,统一使用小写可能是个更好的操作。
-
通常来说,符号或表情主要为文本语法和情绪服务,对
product_name这个标签没有太多关联,因此过滤该内容或许可以有更好的分类效果。 -
训练样本量过少可以尝试将这些样本翻译为其他语言以完成增广。
-
使用大模型生成新数据或标注。
最后
我尝试使用上述方法对文本进行处理,但没有使用增广操作,最后分数也能达到95以上,可见做好预处理对结果的提升是非常明显的。

浙公网安备 33010602011771号