Bert应用于POI类型分类

问题:如何通过一个POI(地图上的点)的名称得到POI的分类?

尝试一:基于TextCNN的POI分类

效果:训练速度快(在普通CPU上就可以跑)、效果不错,在500分类中的准确率为75%

尝试二:基于BiLSTM+ATTENTION的POI分类

效果:与TextCNN相比准确率差不多,但是训练速度较慢

尝试三:基于Bert的POI分类

    使用的是keras_bert,与keras不同的点:1.tokenizer使用bert自带的vocab,bert输入的起始和结尾的符号在tokenizer中都会处理好,使用tokenizer.encode的方法,会返回两个embbeding,因为封装的bert模型有两个输入 2.keras_bert的load_trained_model_from_checkpoint导入bert模型,具体的可借鉴https://github.com/bojone/bert_in_keras/blob/master/sentiment.py

效果:待后续更新


具体步骤:

1.通过已有的POI名称和类型,构造训练样本

问题:1.样本倾斜,有很多类别的样本数量太少,有些太多

           2.只有POI名称,导致很有有二意性的名称无法区分,如苹果店(水果店or手机店)

2.使用数据训练模型,调参得到较好的效果

3.反馈问题,优化模型和训练样本

4.使用到的Trick:

    由于是多分类,而且很多是多个类别都合适,使用了Label Smooth,提升了2%的准确率

你可能感兴趣的:(Bert应用于POI类型分类)