背景:文本分类,我们项目中自己标注了一些语句文本,希望将来可以自动对语句实现分类功能
最早的模型就是简单的bert+mlp将语句通过bert转换为向量后,通过全连接层进行分类
后来为了提高精度,尝试将语句分词后,将每个词通过bert转换为向量,然后通过lstm+pooling+mlp做分类,这里bert相当于导入训练好的词向量(具体实现的时候,embedding这一层导入训练好的词向量即可)
进一步尝试使用BiLSTM+Attention+pooling+MLP的网络结构,其中用到attention机制,当然你可以自己找已经实现好的attention代码来做,
我这里直接用tensorflow 2.0已经封装好的层来实现
这里记录一下遇到的问题:
我本地环境是win10+pycharm,要使用attention,首先你的tensorflow要升级到2.0.0rc2版本,截至2019.10.9最新,切记升级到2.0.0a0仍然不可以
升级后,keras也需要升级到最新版本,否则会出现报错
升级完成后,运行代码,以下为示例,获取完整代码请访问https://github.com/ares5221/Implementation-of-Text-Classification/blob/master/18bert_bilstm_attation_polling_mlp_in_Moral_data/train_bert_bilstm_attention_mlp_model_tf1_Linux.py
记得star哦。
网友评论