使用CNN做文本分类已经有一段时间了,之前在封闭式测试集中模型的表现还是不错的。但是,拿到实际环境汇总测试,问题就来了。模型过拟合严重,泛化能力弱。最终带来的结果是,用户体验不佳。
改进的方面:
1)改变字符向量为词向量。实际发现,以字符为单元的模型,在数据量少的情况下(10W以下),更容易过拟合,词向量因具有最小语义单元的特性,能客服该问题
2)加入预处理工作。主要是去表情符,以“/微笑”等形式的文本如果不处理干净,非常影响短文本的长度,带来模型性能下降
3)优化jieba分词的用户自定义字典。观察jieba分词后的语料,还是有很多分错的词,在垂直领域有很多特定词汇,我们需要根据任务将这些特定词汇加入分词词典,以使之分词正确
4)提升模型精度。
模型优化调参是重要的一个部分。在我的过程中影响最大的还是预训练词向量,迭代次数(稍不注意就会模型过拟合),batch size的大小(尽可能的大一些,模型收敛会更平稳)。
谨慎地细心的扩充数据源。增加数据往往是一个很好的思路,这样可以数据可以“告诉”我们更多的信息,而不是仅仅依靠假设和弱相关性来构建模型,更多的数据无疑能带来更好更精确的模型。 比较好的正负样本是1:5.
以上是近期的一个模型优化感悟,现在发现,针对短文本聊天内容分类,这个任务还是很难做的。希望对你有帮助。