問(wèn)題:如何通過(guò)一個(gè)POI(地圖上的點(diǎn))的名稱(chēng)得到POI的分類(lèi)?
嘗試一:基于TextCNN的POI分類(lèi)
效果:訓(xùn)練速度快(在普通CPU上就可以跑)、效果不錯(cuò),在500分類(lèi)中的準(zhǔn)確率為75%
嘗試二:基于BiLSTM+ATTENTION的POI分類(lèi)
效果:與TextCNN相比準(zhǔn)確率差不多,但是訓(xùn)練速度較慢
嘗試三:基于Bert的POI分類(lèi)
? ? 使用的是keras_bert,與keras不同的點(diǎn):1.tokenizer使用bert自帶的vocab,bert輸入的起始和結(jié)尾的符號(hào)在tokenizer中都會(huì)處理好,使用tokenizer.encode的方法,會(huì)返回兩個(gè)embbeding,因?yàn)榉庋b的bert模型有兩個(gè)輸入 2.keras_bert的load_trained_model_from_checkpoint導(dǎo)入bert模型,具體的可借鑒https://github.com/bojone/bert_in_keras/blob/master/sentiment.py
效果:待后續(xù)更新
具體步驟:
1.通過(guò)已有的POI名稱(chēng)和類(lèi)型,構(gòu)造訓(xùn)練樣本
問(wèn)題:1.樣本傾斜,有很多類(lèi)別的樣本數(shù)量太少,有些太多
? ? ? ? ? ?2.只有POI名稱(chēng),導(dǎo)致很有有二意性的名稱(chēng)無(wú)法區(qū)分,如蘋(píng)果店(水果店or手機(jī)店)
2.使用數(shù)據(jù)訓(xùn)練模型,調(diào)參得到較好的效果
3.反饋問(wèn)題,優(yōu)化模型和訓(xùn)練樣本
4.使用到的Trick:
? ? 由于是多分類(lèi),而且很多是多個(gè)類(lèi)別都合適,使用了Label Smooth,提升了2%的準(zhǔn)確率