windrises / ml_contest

ml课程作业

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

整理一下最近的工作,附上代码和准备的ppt

情感分析比赛源数据是Stanford整理的那个imdb数据,原数据是25k train + 25k test + 50k unsup,区别在于课程数据里去掉了25k的test,然后从train里抽出了5k的数据当做test

这里简单做了几个实验,准确率都在90%附近,没做进一步的调参,不过估计难有比较大的提升(代码没有经过认真整理,所以可能会有点乱):

  • TF-IDF是最简单也是运行速度最快的模型,分类器可以用SVM、LogReg、NaiveBayes、MLP等等,不过效果应该差不多

  • Deep_learning,这里用Keras写了一个CNN的模型。在做词嵌入时只是简单用了texts_to_sequences,并且为了降低数据维度,只取了部分词频高的单词,而且还对句子做了截断,这都是可能的优化方向。还可以考虑换成词嵌入加深度模型,比如Word2vec或Glove。除了CNN,Keras还提供了LSTM,CNN+LSTM,Bi_LSTM等模型,我都试过了,由于数据量比较小,效果差别不大 当然还可以尝试加入Attention

  • Sentence_embedding 是直接对句子做了嵌入,优点在于不用考虑上面提到的维度过大的问题,比单纯地对单句所有单词做向量平均要好,还可以利用上unsup数据。然后可以直接拿SVM,LR或者MLP等作分类器

  • N-gram 主要是参考了fast-text的做法,实验后发现n设为2比较好

一些调研:

state of the art的算法错误率在5%左右,但是要么没有源代码,要么难以复现。而且只有比较少的论文利用上了unsup数据。比如:

还有一些专在imdb数据集上做sentiment analysis的论文,比如:

  • Sentiment Analysis with Deeply Learned Distributed Representations of Variable Length Texts,Stanford的,论文里说用句子嵌入+两层MLP准确率能达到94.5%

  • Deep learning for sentiment analysis of movie reviews,也是Stanford的,没细看

还有一些综述性的博客:

https://blog.paralleldots.com/data-science/breakthrough-research-papers-and-models-for-sentiment-analysis/

http://nlpprogress.com/english/sentiment_analysis.html

等等


课上看了一下别的组的方法,其实大家的思路和方法都差不多。不少组很重视预处理和集成学习,这是值得学习的。

About

ml课程作业


Languages

Language:Jupyter Notebook 100.0%