昨天第十届服务外包创新创业大赛公布了全国三等奖和晋级决赛的名单,获得了三等奖。这基本上结束了我个人本科阶段的比赛,因为马上就要去IBM实习了。这篇文章一方面是对这次比赛进行一个总结,另一方面也是想将FastText的使用给大家介绍一下,因为国内资料较少。
首先声明:我对Python的了解完全是因为要参加这次比赛了解到Python在机器学习和数据处理等方面的优势才选择学习的,因此只学习了基本的语法,可以根据自己想做的事情在网上查询相关的代码实现,所以关于代码有任何的改进意见欢迎指出,但不接受批评。此外,在机器学习方面的内容也是我在选了这道题目之后才进行了解的,完成题目的过程和思路可能有些问题,欢迎指出并优化。
最后,这也是我写的第一篇非记录式的文章,如果对促进你的工作或学习起到了作用,请给我点赞:)
任务介绍
来自不同网上零售平台的商品500万个,其中有50万个带有商品的标签信息,剩余的450万个无标签信息。建立一种分类模型,利用50万个商品包含的标签信息,对剩余的450万个商品进行合理的标签判定。
赛方提供的数据集格式如下:
# train.tsv
ITEM_NAME TYPE
腾讯QQ黄钻三个月QQ黄钻3个月季卡官方自动充值可查时间可续费 本地生活--游戏充值--QQ充值
# test.tsv
ITEM_NAME
腾讯QQ蓝钻贵族34个月直充
题目完成过程
大致过了一遍Python的基础教程和机器学习有监督分类相关的算法之后。首先尝试了一些简单的分类算法,如朴素贝叶斯,随机森林,K-means,支持向量机等,但是效果都不太好,有的算法准确率还可以但是训练时间过长,综合来看只有贝叶斯效果好一些,但是只停在了70%左右。后来无意中了解到了FastText,看了介绍和其它博主的文章后决定尝试一下。
* 如果需要Python的学习资料请与我联系
FastText介绍以及环境搭建问题
简介
FastText是Facebook在2016年开源的一个词向量与文本分类工具,典型应用场景是“带监督的文本分类问题”。FastText结合了自然语言处理和机器学习中最成功的理念。这些包括了使用词袋以及n-gram袋表征语句,还有使用子字(subword)信息,并通过隐藏表征在类别间共享信息,另外采用了一个softmax层级(利用了类别不均衡分布的优势)来加速运算过程。
FastText最惊艳的地方在于,和最前沿深度神经网络模型相比,它在分类精度等指标毫不逊色的情况下,把训练和推断速度降低了几个数量级。Facebook的报告指出,在普通多核CPU上,10亿词的文本训练时间小于10分钟,50万句子分到31.2万类别用时小于1分钟。
* 这些是我从网上抄下来的,原理啥的咱也不懂,只会用一用