文本分类模型

  • 常用的文本分类方法有,TF-IDF、Word2Vec、NB、SVM、LR、RNN、CNN等
  • 传统的文本分类模型需要大量的特征工程,而基于神经网络的模型,通过向量化词语,可以省去大量的特征工程。往往有比较好的效果
  • 使用RNN模型可以捕捉文本的上下文信息,CNN模型的效果受window大小的影响比较大,window的大小定义了模型的“视野”的大小,所以这里我们使用RNN模型,常见的实现有LSTM/GRU等
  • 通常双向的RNN比单向的效果更好
  • 由于地址的长度不是固定的,RNN模型可以选择动态的RNN或者padding句子长度后进入静态的RNN。动态的RNN的好处是输入的句子长度可以不固定;可以节省memory,可以长度长度不固定的语句。实验证明动态的RNN效果更好
  • 一定要使用dropout, dropout的作用主要相当于做bagging,可以提升模型的泛化能力。通常0.5效果比较好
  • 词向量的问题。Word2vec通常有两种方法。1.CBOW;2.skip-gram。对于大数据集,skip-gram效果更好
  • 词向量加入训练模型的效果可以获得可观的提升
  • 多任务loss之间的比例关系,主要靠调参来尝试解决
  • fine tuning可以获得可观的提升
  • 激活函数的选择,在某些情况下,比如学习步数太大的时候,可能会导致神经元的坏死,从而使得模型的效果有损失。在概率类的模型中使用tanh更好

三、线上模型

  1. MultiTask
  • 共享表示提高泛化能力
  • 至于为什么MultiTask能够提高多个任务的效果,参考http://ruder.io/multi-task/
  • 本任务中,由于前面的RNN部分主要为了获得一种泛化的地址向量化的表示方式,所以使用shared-layer方法
  1. 单层的RNN模型
  • draw.io evaluation version Dense1:256 LSTM-layer:1 (256) LSTM-layer:0 (256) output2:42 output1:9 Dense2:128 Dense3:128
  • 如图使用的为单向RNN
  1. 双向RNN模型
  • draw.io evaluation version Dense1:512 static-bi-directional-LSTM-layer:1 (256) static-bi-directional-LSTM-layer:0 (256) output2:42 output1:9 Dense2:256 Dense3:256
  • 如图使用的为静态的双向RNN,第二层LSTM输出为(-1,512)的shape的状态
  1. TextRNN+CNN模型
  • TextRNN+CNN的模型结构。其中convolutional-layer采用Bi-directional LSTM来实现。