当前位置: 首页 > web >正文

DataWhale AI夏令营 Task2笔记

首先学习理解了一遍代码:

原始代码从商品识别、情感分类、主题聚类三个阶段解决问题。

本质上是一条从原始文本到商业洞察的自动化流水线,它的核心任务是把看似杂乱无序的带货视频和评论数据,转化为企业可以直接拿来用的决策参考。整个过程分成三个大阶段,每个阶段都像是一个独立的车间,前一个车间的输出是后一个车间的原材料,环环相扣。

第一阶段是商品识别。在这一步,机器要解决的问题是:这条视频到底在卖什么?它先拿视频描述和标签拼成一段“文字画像”,然后用中文分词工具把这段话拆成一个个关键词,再用TF-IDF算法挑出最有代表性的词,最后用线性分类器比对已知商品,猜出这条视频对应的商品名称。这一步是整个流程的地基,如果商品识别错了,后面的分析就全跑偏了。

第二阶段是情感与意图分类。当机器知道视频在卖什么之后,它要读懂用户在评论区里到底表达了什么。这一步分四件事:判断用户是夸还是骂(情感倾向),是否在描述使用场景(用户场景),是否在提问(用户疑问),是否在提建议(用户建议)。机器用同样的方法——分词、向量化、训练分类器——给每条评论打上标签。这些标签就像一个个路标,告诉企业用户到底在意什么。

第三阶段是主题聚类。有了情感标签和意图标签,机器还要把相似的评论聚成一堆,再提炼出每堆评论的关键词,形成“用户最关心的话题”。比如,正面评论可能聚出“性价比高”“物流快”,负面评论可能聚出“质量差”“客服慢”。这一步机器用了KMeans聚类算法,把评论分成若干组,然后从每组里挑出权重最高的10个词作为主题词。这些主题词就是企业最想听的“用户心声”。

主要优化点

  1. 商品识别优化

    • 使用更强大的文本表示方法(如BERT或Sentence-BERT)替代TF-IDF

    • 增加特征工程(如视频描述长度、标签数量等)

  2. 情感分类优化

    • 使用预训练语言模型(如RoBERTa)进行细粒度情感分析

    • 对类别不平衡问题进行处理(如过采样/欠采样)

  3. 聚类优化

    • 动态选择最佳聚类数量(基于轮廓系数)

    • 使用更先进的聚类算法(如DBSCAN或HDBSCAN)

    • 改进主题词提取方法(如使用TF-IDF加权或关键词提取算法)

  4. 其他优化

    • 更好的数据预处理(如去除停用词、词形还原等)

    • 使用集成方法

    • 增加交叉验证

部分优化代码:

数据预处理:

def preprocess_text(text):if not isinstance(text, str):return ""# 去除特殊字符和标点text = re.sub(r'[^\w\s]', '', text)# 分词words = jieba.lcut(text)# 去除停用词(可根据实际情况扩充)stopwords = set(['的', '了', '和', '是', '我', '你', '在', '有', '这', '那'])words = [word for word in words if word not in stopwords]return ' '.join(words)

分类任务优化 

for col in ['sentiment_category', 'user_scenario', 'user_question', 'user_suggestion']:# 只在有标注的数据上训练train_idx = ~comments_data[col].isnull()# 计算类别权重处理不平衡classes = comments_data[train_idx][col]sample_weights = compute_sample_weight('balanced', classes)# 使用更大的特征空间和更好的模型predictor = make_pipeline(TfidfVectorizer(tokenizer=jieba.lcut, max_features=1000, ngram_range=(1, 2)),LinearSVC(class_weight='balanced'))predictor.fit(comments_data[train_idx]["comment_text"],classes,**{'linearsvc__sample_weight': sample_weights})# 预测所有评论comments_data[col] = predictor.predict(comments_data["comment_text"])

聚类优化函数 

def optimized_clustering(texts, min_clusters=5, max_clusters=8):best_score = -1best_n = min_clustersbest_labels = Nonebest_model = None# 向量化vectorizer = TfidfVectorizer(tokenizer=jieba.lcut, max_features=500)X = vectorizer.fit_transform(texts)# 尝试不同的聚类数量for n in range(min_clusters, max_clusters + 1):model = KMeans(n_clusters=n, random_state=42)labels = model.fit_predict(X)# 计算轮廓系数(仅在样本量不太大时)if len(texts) < 10000:score = silhouette_score(X, labels)if score > best_score:best_score = scorebest_n = nbest_labels = labelsbest_model = model# 如果没有计算轮廓系数(数据量大),使用默认值if best_model is None:best_n = 5best_model = KMeans(n_clusters=best_n, random_state=42)best_labels = best_model.fit_predict(X)# 提取主题词top_n_words = 10feature_names = vectorizer.get_feature_names_out()cluster_centers = best_model.cluster_centers_cluster_themes = []for i in range(best_n):top_feature_indices = cluster_centers[i].argsort()[::-1][:top_n_words]top_words = [feature_names[idx] for idx in top_feature_indices]cluster_themes.append(' '.join(top_words))return best_labels, cluster_themes

 

得分情况:

成功上分。

http://www.xdnf.cn/news/15501.html

相关文章:

  • asyncio.Task` 的工作机制与高级应用
  • 嵌入式硬件篇---单稳态多谐施密特电路
  • 【WRFDA实操第一期】服务器中安装 WRFPLUS 和 WRFDA
  • 2025年睿抗机器人开发者大赛CAIP-编程技能赛本科组(省赛)解题报告 | 珂学家
  • Python `WeakValueDictionary` 用法详解
  • Kotlin委托
  • python的小学课外综合管理系统
  • MFC UI大小改变与自适应
  • ICMP隧道工具完全指南:原理、实战与防御策略
  • SwiftUI 全面介绍与使用指南
  • 【Docker基础】Dockerfile指令速览:健康检查与启动指令详解
  • Spark SQL 之 UT
  • Linux操作系统从入门到实战(七)详细讲解编辑器Vim
  • C++-多态
  • 现场设备无法向视频汇聚EasyCVR视频融合平台推流的原因排查与解决过程
  • Java Integer包装类缓存机制详解
  • python中正则相关:正则概述,匹配数字,匹配单词,匹配字符开头与结尾,单词的边界检测
  • MySQL数据实时同步到Elasticsearch的高效解决方案
  • aspnetcore Mvc配置选项中的ModelMetadataDetailsProviders
  • Ubuntu服务器安装Miniconda
  • 鸿蒙应用开发: 鸿蒙项目中使用私有 npm 插件的完整流程
  • 华为MateBook D 16 SE版 2024款 12代酷睿版i5集显(MCLF-XX,MCLF-16)原厂OEM预装Win11系统
  • vscode 打开项目时候,有部分外部依赖包找不到定义或者声明,但是能使用cmake正常编译并且运行
  • 【前端】【Iconify图标库】【vben3】createIconifyIcon 实现图标组件的自动封装
  • AWS RDS PostgreSQL可观测性最佳实践
  • Linux操作系统从入门到实战(八)详细讲解编译器gcc/g++编译步骤与动静态库链接
  • S7-1200 中 AT 覆盖参数的应用:灵活访问数据区域的实用指南
  • 银河麒麟KYSEC安全机制详解
  • Java设计模式(java design patterns)
  • 【linux V0.11】boot