autoliuweijie / K-BERT

Source code of K-BERT (AAAI2020)
https://ojs.aaai.org//index.php/AAAI/article/view/5681
949 stars 212 forks source link

NER标签还原实体问题 #71

Open Kittyuzu1207 opened 3 years ago

Kittyuzu1207 commented 3 years ago

您好!非常感谢您的工作分享~想请教一下NER任务得到了预测的BIO标签之后应该怎么还原得到实体呢?我目前是在run_kbert_crf.py里根据evaluate函数里找start和end的逻辑把预测到的实体框出来,但是发现这样做会基于KG添加的图谱里的实体也框进去,比如原文是北京(B I),在添加了图谱信息后预测出来的可能是北京首都(B I ENT ENT),甚至会出现(B ENT ENT I I)这种情况,我也有尝在抽取时直接忽略掉标签为ENT的,有很多情况下会抽出来单字(只有B就截断了)。请问这种处理逻辑有问题吗,或者您有什么建议吗?感谢!

Vincent4zzzz commented 3 years ago

楼主现在解决了吗 我也有类似问题

Kittyuzu1207 commented 3 years ago

楼主现在解决了吗 我也有类似问题

还没有,想请问下你训练出来的效果怎么样呢。我目前按照保留图谱扩充后的标签序列抽实体和只用原输入文本的标签序列抽实体(把segment tag不为0的都去掉,用剩下的标签序列)抽实体来进行evaluate,性能都很差。截出来单字那种是因某些预测结果里B和I中间甚至有O,就直接截断了,而且这种case还挺多的

Vincent4zzzz commented 3 years ago

我是通过在tensor张量里寻找和label对应的那个数字之后反映射回来找的,之后删掉了ent和unk,目前结果还没出来。你用的是什么知识图谱啊

Kittyuzu1207 commented 3 years ago

我是通过在tensor张量里寻找和label对应的那个数字之后反映射回来找的,之后删掉了ent和unk,目前结果还没出来。你用的是什么知识图谱啊

我用的是类似于 A 类别 B这种图谱,效果不太好,也尝试过用HowNet之类的,总体性能都还达不到Bert+CR。加了CRF层会稍微好点,如果不加的话能比Bert的F1少10%-20%,不知道哪里出问题了