z814081807/DeepNER

求伪标签过程

ume-technology opened this issue · 15 comments

求大牛提供一下伪标签的处理过程. 想知道 500 条测试数据是如何被标注的, 跪求 ! !!!!!

求大牛提供一下伪标签的处理过程. 想知道 500 条测试数据是如何被标注的, 跪求 ! !!!!!

简单来说就是使用已标注数据训练一个模型,对测试数据进行预测得到的标注。但这样噪音会比较大,提升会比较小,比较好的做法是训练一个多模融合的模型降噪,使用不同的阈值投票得到不同的标注,看哪个在最终测试集上表现最好。

求大牛提供一下伪标签的处理过程. 想知道 500 条测试数据是如何被标注的, 跪求 ! !!!!!

简单来说就是使用已标注数据训练一个模型,对测试数据进行预测得到的标注。但这样噪音会比较大,提升会比较小,比较好的做法是训练一个多模融合的模型降噪,使用不同的阈值投票得到不同的标注,看哪个在最终测试集上表现最好。

大佬. 我一开始只是想的是单纯的用模型去做一次伪标签, 我有两个问题, 第一个是大佬你是用的哪种方法. 不管是哪种. 大佬能把您处理伪标签的代码开源出来不. 我在天池官网看了 baseline 的过程. 但是美中不足的就是没有给出伪标签的过程代码. 跪求大佬了. 您这段解释我已经感激不尽了. 因为您给出的哪种更好的做法的思路是我从来没想到过的. 所以还是恳请大佬能把伪标签的代码分享出来.

求大牛提供一下伪标签的处理过程. 想知道 500 条测试数据是如何被标注的, 跪求 ! !!!!!

简单来说就是使用已标注数据训练一个模型,对测试数据进行预测得到的标注。但这样噪音会比较大,提升会比较小,比较好的做法是训练一个多模融合的模型降噪,使用不同的阈值投票得到不同的标注,看哪个在最终测试集上表现最好。

求求老哥了.................

求大牛提供一下伪标签的处理过程. 想知道 500 条测试数据是如何被标注的, 跪求 ! !!!!!

简单来说就是使用已标注数据训练一个模型,对测试数据进行预测得到的标注。但这样噪音会比较大,提升会比较小,比较好的做法是训练一个多模融合的模型降噪,使用不同的阈值投票得到不同的标注,看哪个在最终测试集上表现最好。

求求老哥了.................

你去了解一下模型融合,就是模型融合的预测结果当做伪标签,代码里有BERT-CRF、BERT-SPAN的5折融合方法

求大牛提供一下伪标签的处理过程. 想知道 500 条测试数据是如何被标注的, 跪求 ! !!!!!

简单来说就是使用已标注数据训练一个模型,对测试数据进行预测得到的标注。但这样噪音会比较大,提升会比较小,比较好的做法是训练一个多模融合的模型降噪,使用不同的阈值投票得到不同的标注,看哪个在最终测试集上表现最好。

求求老哥了.................

你去了解一下模型融合,就是模型融合的预测结果当做伪标签,代码里有BERT-CRF、BERT-SPAN的5折融合方法

得嘞~ 这就去看. 之前看代码的时候没有往这个方面去想. 有不懂的还会来请教. 多谢多谢~

希望您不要把这个 issue close 掉. 我不清楚为什么大家都没有提出来伪标签的过程. 天池上也没有. 我希望有人能有相同的困惑的时候能来这里讨论一下.

求大牛提供一下伪标签的处理过程. 想知道 500 条测试数据是如何被标注的, 跪求 ! !!!!!

简单来说就是使用已标注数据训练一个模型,对测试数据进行预测得到的标注。但这样噪音会比较大,提升会比较小,比较好的做法是训练一个多模融合的模型降噪,使用不同的阈值投票得到不同的标注,看哪个在最终测试集上表现最好。

求求老哥了.................

你去了解一下模型融合,就是模型融合的预测结果当做伪标签,代码里有BERT-CRF、BERT-SPAN的5折融合方法

在不? 我又仔细走了一遍代码的流程. 我发现在把数据处理成喂入模型的阶段. 我看到您的代码是直接把 train data 和 伪标签数据进行了拼接成一个大的列表喂入了模型. 但是我在走这个阶段的时候, 我是只有源数据的. 没有伪标签数据. 我根据代码的过程, 理解到是在对数据做了切分后, 切分后的数据完成了一部分数据增强的工作(希望我的这个理解没错, 因为我看到代码确实是这样走的). 因此我不清楚您在代码里直接使用的伪标签的文本是如何生成的. 这是我的第一个疑问. 第二点就是, 我还是没能看明白您在代码中使用的 KFold 过程如何实现了数据增强. 也就是说我看不到 KFold 处理后的数据如何被使用了. 因为我在代码中看到的是您直接把 1000 条训练数据进行了 85% 比例的切分, 然后就是我上面第一点理解的数据增强的过程了. 可能是我对于 KFold 的理解还不深刻, 我又去查了周志华老师的<机器学习>关于交叉验证的介绍. 还是没能明白您在代码中的 KFold 是如何使用的.

说的有点多. 不知道您能不能明白. 我一直都对 KFold 的过程存在一些疑惑. 尤其是您提到用了 KFold 做数据增强(我这个理解可能有误). 还希望您看到以后不吝赐教.

求大牛提供一下伪标签的处理过程. 想知道 500 条测试数据是如何被标注的, 跪求 ! !!!!!

简单来说就是使用已标注数据训练一个模型,对测试数据进行预测得到的标注。但这样噪音会比较大,提升会比较小,比较好的做法是训练一个多模融合的模型降噪,使用不同的阈值投票得到不同的标注,看哪个在最终测试集上表现最好。

求求老哥了.................

你去了解一下模型融合,就是模型融合的预测结果当做伪标签,代码里有BERT-CRF、BERT-SPAN的5折融合方法

在不? 我又仔细走了一遍代码的流程. 我发现在把数据处理成喂入模型的阶段. 我看到您的代码是直接把 train data 和 伪标签数据进行了拼接成一个大的列表喂入了模型. 但是我在走这个阶段的时候, 我是只有源数据的. 没有伪标签数据. 我根据代码的过程, 理解到是在对数据做了切分后, 切分后的数据完成了一部分数据增强的工作(希望我的这个理解没错, 因为我看到代码确实是这样走的). 因此我不清楚您在代码里直接使用的伪标签的文本是如何生成的. 这是我的第一个疑问. 第二点就是, 我还是没能看明白您在代码中使用的 KFold 过程如何实现了数据增强. 也就是说我看不到 KFold 处理后的数据如何被使用了. 因为我在代码中看到的是您直接把 1000 条训练数据进行了 85% 比例的切分, 然后就是我上面第一点理解的数据增强的过程了. 可能是我对于 KFold 的理解还不深刻, 我又去查了周志华老师的<机器学习>关于交叉验证的介绍. 还是没能明白您在代码中的 KFold 是如何使用的.

说的有点多. 不知道您能不能明白. 我一直都对 KFold 的过程存在一些疑惑. 尤其是您提到用了 KFold 做数据增强(我这个理解可能有误). 还希望您看到以后不吝赐教.

K折是更充分利用数据然后可以做模型融合,并不能算数据增强, 具体的代码是main.py里面的stacking函数, 需要更改配置参数;另一个问题是在加载数据的时候不加载伪标签即可,简单修改一下代码。学习一下debug 一步步走下去,这样整个流程都会非常明白了。

求大牛提供一下伪标签的处理过程. 想知道 500 条测试数据是如何被标注的, 跪求 ! !!!!!

简单来说就是使用已标注数据训练一个模型,对测试数据进行预测得到的标注。但这样噪音会比较大,提升会比较小,比较好的做法是训练一个多模融合的模型降噪,使用不同的阈值投票得到不同的标注,看哪个在最终测试集上表现最好。

求求老哥了.................

你去了解一下模型融合,就是模型融合的预测结果当做伪标签,代码里有BERT-CRF、BERT-SPAN的5折融合方法

在不? 我又仔细走了一遍代码的流程. 我发现在把数据处理成喂入模型的阶段. 我看到您的代码是直接把 train data 和 伪标签数据进行了拼接成一个大的列表喂入了模型. 但是我在走这个阶段的时候, 我是只有源数据的. 没有伪标签数据. 我根据代码的过程, 理解到是在对数据做了切分后, 切分后的数据完成了一部分数据增强的工作(希望我的这个理解没错, 因为我看到代码确实是这样走的). 因此我不清楚您在代码里直接使用的伪标签的文本是如何生成的. 这是我的第一个疑问. 第二点就是, 我还是没能看明白您在代码中使用的 KFold 过程如何实现了数据增强. 也就是说我看不到 KFold 处理后的数据如何被使用了. 因为我在代码中看到的是您直接把 1000 条训练数据进行了 85% 比例的切分, 然后就是我上面第一点理解的数据增强的过程了. 可能是我对于 KFold 的理解还不深刻, 我又去查了周志华老师的<机器学习>关于交叉验证的介绍. 还是没能明白您在代码中的 KFold 是如何使用的.
说的有点多. 不知道您能不能明白. 我一直都对 KFold 的过程存在一些疑惑. 尤其是您提到用了 KFold 做数据增强(我这个理解可能有误). 还希望您看到以后不吝赐教.

K折是更充分利用数据然后可以做模型融合,并不能算数据增强, 具体的代码是main.py里面的stacking函数, 需要更改配置参数;另一个问题是在加载数据的时候不加载伪标签即可,简单修改一下代码。学习一下debug 一步步走下去,这样整个流程都会非常明白了。

嗯. 我确实没有加载伪标签的数据. 因为我只有的是源数据. 因此我按照代码流程是看到把 1000 条数据进行了 85% 的切分之后. 在切分后的数据上做了文本分割. 这个过程是数据加强么? 我会去再去看您说的 main 中的 stacking 函数关于 KFold 的过程. 那么我还是想知道. 您那个伪标签数据是什么方法生成的呢?

这套模型我主要关注三个点: 1>模型融合; 2>KFold; 3>数据增强. 前两个问题我会再去研究. 但是第三个我还是希望您能给出一些更清晰的指点. 可能这三个问题在代码中是一脉相承的. 但是我因为我还没有完全理解. 所以只能分成这三个问题去理解. 所以还希望能给我一些指点. 谢谢了~

这套模型我主要关注三个点: 1>模型融合; 2>KFold; 3>数据增强. 前两个问题我会再去研究. 但是第三个我还是希望您能给出一些更清晰的指点. 可能这三个问题在代码中是一脉相承的. 但是我因为我还没有完全理解. 所以只能分成这三个问题去理解. 所以还希望能给我一些指点. 谢谢了~

那个并不是数据增强,因为文本长度>512 Bert处理不了 所以才要切

NER的伪标签要怎么去评估每一条的置信度呢,因为一条数据有不同的实体,但是去训练又要整条输入进去,简单的平均吗,还是有更好的方法?

NER的伪标签要怎么去评估每一条的置信度呢,因为一条数据有不同的实体,但是去训练又要整条输入进去,简单的平均吗,还是有更好的方法?

这个比赛中我们是用多模型融合提高置信度的,我记得有些半监督NER论文会提出自己的置信度评估方法,可以去找些顶会看一下

感谢您的回复,那您就是使用emsemble来提高置信度,那您有筛选置信度高的作为训练集吗,还是直接把所有预测的都作为训练集了。

---- 回复的原邮件 ---- | 发件人 | @.> | | 日期 | 2022年04月15日 10:19 | | 收件人 | @.> | | 抄送至 | @.@.> | | 主题 | Re: [z814081807/DeepNER] 求伪标签过程 (#7) | NER的伪标签要怎么去评估每一条的置信度呢,因为一条数据有不同的实体,但是去训练又要整条输入进去,简单的平均吗,还是有更好的方法? 这个比赛中我们是用多模型融合提高置信度的,我记得有些半监督NER论文会提出自己的置信度评估方法,可以去找些顶会看一下 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

直接用预测,因为多模融合的结果就是置信度高的,比如如果5个模型中4个都预测某个词是实体,那么其是实体的置信度自然就比较高,如果5个中只有1个预测是实体,那么置信度自然比较低。