当前位置:网站首页 >  教程

从零搭建智能算法商品标签体系 手把手零门槛落地实操指南

时间:2026年06月14日 08:38:13 来源:易频IT社区

前期准备

本方案基于Python无监督聚类实现,不需要标注数据,零门槛即可运行,只需提前准备以下内容:

  • Python环境版本≥3.8,自带pip包管理工具
  • 整理好的商品基础数据,包含商品ID、商品名称、商品描述三个核心字段

直接执行以下命令安装所有依赖,固定版本避免兼容问题:

``` pip install pandas==1.5.3 scikit-learn==1.2.2 jieba==0.42.1 ```

下载通用中文停用词表,保存到代码同目录,命名为stopwords.txt,直接下载地址:https://raw.githubusercontent.com/goto456/stopwords/master/cn_stopwords.txt

第一步:商品文本数据预处理

预处理的核心是把非结构化商品文本转换成算法可识别的格式化数据,步骤如下:

1.1 整理商品数据格式

在代码同目录新建文件,命名为goods.csv,按照下表格式填入你的商品数据,示例:

goods_idgoods_namegoods_desc
1纯棉白色短袖T恤夏季宽松纯棉男士白色短袖休闲T恤
2夏季牛仔短裤男士薄款直筒休闲牛仔五分短裤
3无线降噪蓝牙耳机续航超长无线入耳式降噪蓝牙运动耳机
410000mAh超薄充电宝便携小巧苹果安卓通用快充移动电源

直接替换成你的商品数据即可,字段顺序不能修改。

1.2 文本分词与清洗

新建Python文件命名为gen_goods_tag.py,复制粘贴以下预处理代码,自动完成分词和停用词过滤:

``` import pandas as pd import jieba from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.cluster import KMeans 加载停用词表 with open("stopwords.txt", "r", encoding="utf-8") as f: stopwords = [line.strip() for line in f.readlines()] 加载商品数据 df = pd.read_csv("goods.csv", encoding="utf-8") 文本清洗分词函数 def process_text(text): words = jieba.cut(str(text)) filtered = [word for word in words if word not in stopwords and word.strip() != ""] return " ".join(filtered) 合并名称和描述,统一处理文本 df["processed_text"] = df["goods_name"] + " " + df["goods_desc"] df["processed_text"] = df["processed_text"].apply(process_text) ```

第二步:训练算法生成智能标签

从零搭建智能算法商品标签体系 手把手零门槛落地实操指南

我们使用TF-IDF提取文本特征,K-Means对商品自动分组,最后提取每个分组的核心关键词作为标签,全程不需要人工标注。

2.1 提取文本特征

在刚才的代码后追加以下内容,将文本转换成算法可用的特征矩阵:

``` 初始化TF-IDF转换器,过滤出现频率过低的无效词 tfidf = TfidfVectorizer(min_df=2) features = tfidf.fit_transform(df["processed_text"]) 获取所有特征词列表 feature_names = tfidf.get_feature_names_out() ```

2.2 聚类分组商品

继续追加以下代码,只需要修改代码中TAG_NUM的值为你需要生成的标签总数即可,其他不用改

``` -- 这里修改为你需要的标签总数 TAG_NUM = 8 -- 训练K-Means聚类模型 kmeans = KMeans(n_clusters=TAG_NUM, random_state=42, n_init="auto") kmeans.fit(features) 给每个商品打上聚类分组ID df["cluster_id"] = kmeans.labels_ ```

2.3 提取核心关键词生成标签

继续追加以下代码,自动提取每个分组权重最高的3个关键词作为最终标签:

``` 每个聚类取top3关键词生成标签 cluster_tag_map = {} 对聚类中心的词权重从高到低排序 sorted_centers = kmeans.cluster_centers_.argsort()[:, ::-1] for cluster_id in range(TAG_NUM): 取前3个权重最高的关键词拼接成标签 top_keywords = [feature_names[ind] for ind in sorted_centers[cluster_id, :3]] cluster_tag_map[cluster_id] = ",".join(top_keywords) 给每个商品匹配最终的智能算法标签 df["alg_goods_tag"] = df["cluster_id"].map(cluster_tag_map) ```

第三步:导出结果直接使用

最后追加一行代码,导出带标签的结果文件:

``` df.to_csv("goods_with_tags.csv", encoding="utf-8-sig", index=False) ```

打开命令行执行python gen_goods_tag.py,运行完成后,代码同目录会生成goods_with_tags.csv,打开即可看到每个商品对应的智能标签,可直接导入业务系统使用。

标签效果快速优化

如果生成的标签不符合预期,按照以下操作调整即可,不需要修改核心代码:

  • 标签太泛/太碎:标签太泛则调大TAG_NUM,标签太细碎则调小TAG_NUM,重新运行即可
  • 出现无效关键词:把无效关键词复制到stopwords.txt末尾,每个关键词占一行,重新运行即可
  • 同类商品分错组:统一商品名称和描述的格式,补充缺失的商品描述后重新运行即可
  • 标签词太少:修改代码中sorted_centers[cluster_id, :3]的3为你需要的数量,比如改成5就会生成5个关键词标签

整个流程从数据准备到生成结果,10分钟即可完成,所有代码可直接复制运行,不需要额外配置复杂环境。

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图