1.写在前面
- 寒假开始看RE,3月正好看到百度的比赛,在导师的支持下报名参加。
- 看论文学习和动手实践还是有区别的,第一次参加NLP的比赛,第一次使用bert,动手能力还是比较捉急,看代码,跑模型,摸爬滚打花了好多时间。
- 本次比赛还是有许多不足,会一一总结。一开始对于任务数据理解不够深刻,选用了pipeline方法,就决心一路走到底吧
- 从结果来看不是很理想,由于时间设备关系,也没怎么炼丹,去追求最好的结果。过程来说动手能力得到了锻炼。
- 本文档单纯做个记录
2.数据部分
- 数据存在关系类别不平衡、长短句数量不平衡、实体类型数量不平衡的问题
- 实体中存在一些生僻字,通用的bert不是很契合。
针对以上两个问题,使用了数据增强以及语言模型深度预训练的做法。
数据增强:EDA
深度预训练:How to Fine-Tune BERT for Text Classification?
未能处理好的问题
数据中存在噪声,具体体现:
- 在实体标注不全
- 句子中三元组标注不完整
- 文本中有许多特殊字符、表情
三元组标注不完整,其实可以考虑在训练集上做类似于交叉验证的做法。比如5份数据集,每次用4份训练,得到5个模型,在训练集上跑5份结果,然后进行投票,5份都预测到却没在训练集中的实体进入模型。
实体标注不全和文本中的噪声则需要一些文本清洗,正则表达式的做法,碍于捉急的动手能力,等到发现的时候,已经没时间,只能标注时全部丢掉。
- 反思:对于数据理解不够充分。虽然是NLP任务,也需要进行描述性分析,也需要用肉眼看数据,才能更好地理解数据,这部分工作没做到位。
3.解决方案
Pipeline的思路应该是有两种做法:
- 先预测句子可能的类别(多分类多标签),再对该类别下的句子抽取头尾实体。
P ( s , p , o ∣ s e n t e n c e ) = P ( p ∣ s e n t e n c e ) P ( s , o ∣ p , s e n t e n c e ) P(s,p,o| sentence) = P(p | sentence) P(s,o|p,sentence) P(s,p,o∣sentence)=P(p∣sente

本文分享了关系抽取任务的实践经验,包括命名体识别与关系分类的挑战、解决方案及模型预测流程。探讨了数据不平衡、噪声处理、BERT预训练及模型融合等关键问题。
最低0.47元/天 解锁文章
11万+

被折叠的 条评论
为什么被折叠?



