一入编程深似海,时光荏苒,不知不觉已从事软件行业五年。作为一个懒人,未为社区做半分贡献,账号已荒芜多年。若不是参与DataWhale社区的组团训练营,怕是我的账号仍旧一片白板。废话少说,进入正题。
训练营本期的练手项目是阿里天池上面的新闻分类任务,传送门:零基础入门NLP - 新闻文本分类 有兴趣的同学也可以参与一下。首日的任务对赛题进行剖析
- 要求:对14个类别的新闻进行分类建模
- 标准:以F1分数作为评估模型优良的标准
- 目标:在测试集上的F1越大越好
- 未知:源文本,语言类别是英文还是中文
- 已知:新闻源文本被Mapping成数字,标注的训练数据20W条,无标注测试数据5W条。
DataWhale提供了四种解题思路导引:
- 思路1:TF-IDF + 机器学习分类器
- 思路2:FastText
- 思路3:WordVec + 深度学习分类器
- 思路4:Bert词向量
对于这个题目,TF-IDF+机器学习分类器个人认为效果应该不会太好。并不是博主对TF-IDF抱有偏见,而是对于匿名数字文本,我们无从得知源文本是何语种,停用词是否已经过处理,这些信息目前我们无从得知。如果停用词不经过处理,对于训练样本来说,噪音就有点多了,效果应该不会太好。如果效果过好,对于这样的数据我们就该担心它的泛化能力了。当然,博主只是NLP入门小白,如有不足之处,请大佬指正。老实说鉴于这道新闻分类的题目,如果源文本为明文,我倒也想试试最近在NLP圈子中网红级别的TextHero工具包,简直不要太香。
FastText这个说实话,我第一次知道这个模型。以前在学习吴恩达的机器学习课程时,在序列模型的章节里听闻过FastRNN,对于序列模型统治的NLP领域,我也只是初次涉足,目前正在研究。官方传送门:FastText文档 FastText针对的是Linux和MacOS操作系统,对于我这种Windows党来说不太友好,如果想正常运行,目测需要在Windows上安装一个完全支持C++11的编译器。知乎上有一篇讲解FastText的文章,可以借鉴一下,可以自己DIY一个FastText搞一下了,哈哈,传送门fastText原理及实践
WordVec,emm,经典的RNN以及LSTM,这后面的解题思路在技术层面上是越来越深入了。LSTM相对于RNN来说,多了记忆单元,LSTM会根据权重抛弃不重要的信息,在记忆单元中存储上下文信息。而RNN的串行结构注定无法进行并行运算,结构性限制运算速度。于是出现了文本变形金刚transformer,transformer又进化成了上下文联系性更好带有多个header双向编码的Bert模型。对于思路3和4,bert可以直接用来做迁移学习,预想效果应该还不错吧。