reference:
摘自机智的叉烧的知乎回答和微信推文
https://www.zhihu.com/people/ceng-guan-rong-72/answers
https://mp.weixin.qq.com/s/xdJcQZgHUeGjZLzxUAp36g
1. NLP二分类任务,为什么各种模型最后的训练结果(F1,ACC)都相差甚微(使用Glove词向量)?
1)分析问题:遇到问题首先,要知道症在哪,要知道的核心就在于你要足够理解病症问题,对于算法问题,大到看数据整体分布,看数据整体特点,小到看bad case情况,尝试去归因(这个是真的难,每个人看问题的角度不同)。
问自己几个问题:
- 什么场景,这个场景有什么特点。
- 训练集测试集数据量多少,正负样本比例多少。
- 训练集测试集本身的质量怎么样,准确率咋样。
- 分类句子长度分布怎么样,平均最长最短中位数。
- 目标准招是多少,现在多少,预期多少合理?
- 各个模型的bad case是什么样的,有什么特点,特点的占比怎样。
- 甚微是多甚微,那对错,各个模型有没有什么优势和劣势?
2)从知识库中挑选方法/模型:平时,要注意积累自己手里的方法,同时也要足够理解这些方法,因地制宜的一个前提是得有足够的方法供你选,第二个前提是知道方法的优缺点,才知道怎么选。说白了,就是两个词,一个是积累,另一个是理解。
然后就是找到合适的方法解决这个问题了。举个例子,短句10来字比较多,textcnn比较合理,长文本问题那就试试lstm之类的rnn系列方法,如果关键词类,知识类依赖多那bert之类的是可以尝试的,如果是类似黄反识别,文化作品这种对文本词汇比较敏感的,建议用文本匹配的方式去做。相比一把梭,不去花时间多分析分析问题,然后解决问题,而且做过的问题