【玩转数据系列十七】机器学习实现双十一购物清单的自动商品标签归类

背景

双十一购物狂欢节马上又要到来了,最近各种关于双十一的爆品购物列表在网上层出不穷。如果是网购老司机,一定清楚通常一件商品会有很多维度的标签来展示,比如一个鞋子,它的商品描述可能会是这样的“韩都少女英伦风系带马丁靴女磨砂真皮厚底休闲短靴”。如果是一个包,那么它的商品描述可能是“天天特价包包2016新款秋冬斜挎包韩版手提包流苏贝壳包女包单肩包”。

每个产品的描述都包含非常多的维度,可能是时间、产地、款式等等,如何按照特定的维度将数以万计的产品进行归类,往往是电商平台最头痛的问题。这里面最大的挑战是如何获取每种商品的维度由哪些标签组成,如果可以通过算法自动学习出例如 地点相关的标签有“日本”、“福建”、“韩国”等词语,那么可以快速的构建标签归类体系,本文将借助PAI平台的文本分析功能,实现一版简单的商品标签自动归类系统。

数据说明

数据是在网上直接下载并且整理的一份2016双十一购物清单,一共2千多个商品描述,每一行代表一款商品的标签聚合,如下图:

我们把这份数据导入PAI进行处理,具体数据上传方式可以查阅PAI的官方文档:help.aliyun.com/product/303…

实验说明

数据上传完成后,通过拖拽PAI的组件,可以生成如下实验逻辑图,每一步的具体功能已经标注:

下面分模块说明下每个部分的具体功能:

1.上传数据并分词

将数据上传,由shopping_data代表底层数据存储,然后通过分词组件对数据分词,分词是NLP的基础操作,这里不多介绍。

2.增加序号列

因为上传的数据只有一个字段,通过增加序号列为每个数据增加主键,方便接下来的计算,处理后数据如下图:

3.统计词频

展示的是每一个商品中出现的各种词语的个数。

4.生成词向量

使用的是word2vector这个算法,这个算法可以将每个词按照意义在向量维度展开,这个词向量有两层含义。

  • 向量距离近的两个词他们的真实含义会比较相近,比如在我们的数据中,“新加坡”和“日本”都表示产品的产地,那么这两个词的向量距离会比较近。
  • 不同词之间的距离差值也是有意义的,比如“北京”是“中国”的首都,“巴黎”是“法国”的首都,在训练量足够的情况下。|中国|-|北京|=|法国|-|巴黎|

经过word2vector,每个词被映射到百维空间上,生成结果如下图展示:

5.词向量聚类

现在已经产生了词向量,接下来只需要计算出哪些词的向量距离比较近,就可以实现按照意义将标签词归类。这里采用kmeans算法来自动归类,聚类结果展示的是每个词属于哪个聚类簇:

结果验证

最后通过SQL组件,在聚类簇中随意挑选一个类别出来,检验下是否将同一类别的标签进行了自动归类,这里选用第10组聚类簇。

看一下第10组的结果:

通过结果中的“日本”、“俄罗斯”、“韩国”、“云南”、“新疆”、“台湾”
等词可以发现系统自动将一些跟地理相关的标签进行了归类,但是里面混入了“男士内裤”、“坚果”等明显与类别不符合的标签,这个很有可能是因为训练样本数量不足所造成的,如果训练样本足够大,那么标签聚类结果会非常准确。

其它

本文案例已经集成到了PAI首页的模板,请注册使用PAI:data.aliyun.com/product/lea…
在模板中点击创建即可使用,包含逻辑以及数据:


你可能感兴趣的:(【玩转数据系列十七】机器学习实现双十一购物清单的自动商品标签归类)