Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

模型微调的训练数据处理 #7

Open
QiankunPi opened this issue Jun 23, 2024 · 4 comments
Open

模型微调的训练数据处理 #7

QiankunPi opened this issue Jun 23, 2024 · 4 comments

Comments

@QiankunPi
Copy link

您好!这篇论文的工作对DocRE方向起到了非常好的指导性工作。但有一个问题请问一下:对于RE-DocRED数据集,您在使用训练数据进行模型微调时,labels中的是三元组信息是怎么转换的呢?例如对于labels中的一组信息[h:11,r:P1580,t:6],这里r:P1580很好理解它是代表id为P1580的关系,但对于h:11,它表示是实体编号为11的那个实体,但如果该实体有多个提及,我应该取哪个提及呢,还是说默认取第一个?还是所有提及都取一次?这个问题一直困惑着我,因为如果不确定取哪个提及的话,那提供的训练数据在微调时可能会存在很大问题。还请您百忙之中能帮助解答一下这个问题,非常感谢!

@bigdante
Copy link
Collaborator

您好!这篇论文的工作对DocRE方向起到了非常好的指导性工作。但有一个问题请问一下:对于RE-DocRED数据集,您在使用训练数据进行模型微调时,labels中的是三元组信息是怎么转换的呢?例如对于labels中的一组信息[h:11,r:P1580,t:6],这里r:P1580很好理解它是代表id为P1580的关系,但对于h:11,它表示是实体编号为11的那个实体,但如果该实体有多个提及,我应该取哪个提及呢,还是说默认取第一个?还是所有提及都取一次?这个问题一直困惑着我,因为如果不确定取哪个提及的话,那提供的训练数据在微调时可能会存在很大问题。还请您百忙之中能帮助解答一下这个问题,非常感谢!

这里可以详见我处理数据制作训练集的代码。我是将所有的提及名称都进行了去重并且组合,也就是N*M,论文中我提到,在评测时候只要是命中了其中一个,就算是命中了这个三元组,然后这个三元组的其他提及组合即使预测对了,也不会再进行统计,而一旦预测错误了,即使是错误三元组的其他提及组合,都进行统计。以此来保证我评测的合理性。(也就是对的只统计一个,错误的我都进行统计,而错误的里面也有很多是数据集未标注的,因此模型实际上的效果应该是更好一些)。

Best~

@QiankunPi
Copy link
Author

您好!这篇论文的工作对DocRE方向起到了非常好的指导性工作。但有一个问题请问一下:对于RE-DocRED数据集,您在使用训练数据进行模型微调时,labels中的是三元组信息是怎么转换的呢?例如对于labels中的一组信息[h:11,r:P1580,t:6],这里r:P1580很好理解它是代表id为P1580的关系,但对于h:11,它表示是实体编号为11的那个实体,但如果该实体有多个提及,我应该取哪个提及呢,还是说默认取第一个?还是所有提及都取一次?这个问题一直困惑着我,因为如果不确定取哪个提及的话,那提供的训练数据在微调时可能会存在很大问题。还请您百忙之中能帮助解答一下这个问题,非常感谢!

这里可以详见我处理数据制作训练集的代码。我是将所有的提及名称都进行了去重并且组合,也就是N*M,论文中我提到,在评测时候只要是命中了其中一个,就算是命中了这个三元组,然后这个三元组的其他提及组合即使预测对了,也不会再进行统计,而一旦预测错误了,即使是错误三元组的其他提及组合,都进行统计。以此来保证我评测的合理性。(也就是对的只统计一个,错误的我都进行统计,而错误的里面也有很多是数据集未标注的,因此模型实际上的效果应该是更好一些)。

Best~

非常感谢您的解答。您提到的处理数据制作训练集的代码具体是哪个文件下的呢,我找了一圈没有找到,非常抱歉。还有就是我理解的您的意思是在构造训练集的标签时,假如三元组[h,r,t]中h有两个不同的提及h1和h2,那么最终给与的训练标签就是[h1,r,t]和[h2,r,t]。我看有的论文也将实体列表放入提示里,您当时有实验过吗,我看您的论文中是没有将实体列表放入提示中的。如果您能帮助解答,我将非常感谢!!!

@bigdante
Copy link
Collaborator

您好!这篇论文的工作对DocRE方向起到了非常好的指导性工作。但有一个问题请问一下:对于RE-DocRED数据集,您在使用训练数据进行模型微调时,labels中的是三元组信息是怎么转换的呢?例如对于labels中的一组信息[h:11,r:P1580,t:6],这里r:P1580很好理解它是代表id为P1580的关系,但对于h:11,它表示是实体编号为11的那个实体,但如果该实体有多个提及,我应该取哪个提及呢,还是说默认取第一个?还是所有提及都取一次?这个问题一直困惑着我,因为如果不确定取哪个提及的话,那提供的训练数据在微调时可能会存在很大问题。还请您百忙之中能帮助解答一下这个问题,非常感谢!

这里可以详见我处理数据制作训练集的代码。我是将所有的提及名称都进行了去重并且组合,也就是N*M,论文中我提到,在评测时候只要是命中了其中一个,就算是命中了这个三元组,然后这个三元组的其他提及组合即使预测对了,也不会再进行统计,而一旦预测错误了,即使是错误三元组的其他提及组合,都进行统计。以此来保证我评测的合理性。(也就是对的只统计一个,错误的我都进行统计,而错误的里面也有很多是数据集未标注的,因此模型实际上的效果应该是更好一些)。
Best~

非常感谢您的解答。您提到的处理数据制作训练集的代码具体是哪个文件下的呢,我找了一圈没有找到,非常抱歉。还有就是我理解的您的意思是在构造训练集的标签时,假如三元组[h,r,t]中h有两个不同的提及h1和h2,那么最终给与的训练标签就是[h1,r,t]和[h2,r,t]。我看有的论文也将实体列表放入提示里,您当时有实验过吗,我看您的论文中是没有将实体列表放入提示中的。如果您能帮助解答,我将非常感谢!!!

https://github.com/THUDM/AutoRE/blob/main/AutoRE/utils/pre_process_data.py
这里面有各个模式的详细数据制作。另外,参考template.py,我确实没有将任何的实体列表(或者是关系列表)作为预先知道的放入到提示词中,目的是不带任何的先验知识。其他类似的做法,我认为目的是为了降低任务的难度(选择比预测简单),因此我是通过训练,让模型具备直接预测的能力,更加符合真实end2end的生活场景。

@QiankunPi
Copy link
Author

您好!这篇论文的工作对DocRE方向起到了非常好的指导性工作。但有一个问题请问一下:对于RE-DocRED数据集,您在使用训练数据进行模型微调时,labels中的是三元组信息是怎么转换的呢?例如对于labels中的一组信息[h:11,r:P1580,t:6],这里r:P1580很好理解它是代表id为P1580的关系,但对于h:11,它表示是实体编号为11的那个实体,但如果该实体有多个提及,我应该取哪个提及呢,还是说默认取第一个?还是所有提及都取一次?这个问题一直困惑着我,因为如果不确定取哪个提及的话,那提供的训练数据在微调时可能会存在很大问题。还请您百忙之中能帮助解答一下这个问题,非常感谢!

这里可以详见我处理数据制作训练集的代码。我是将所有的提及名称都进行了去重并且组合,也就是N*M,论文中我提到,在评测时候只要是命中了其中一个,就算是命中了这个三元组,然后这个三元组的其他提及组合即使预测对了,也不会再进行统计,而一旦预测错误了,即使是错误三元组的其他提及组合,都进行统计。以此来保证我评测的合理性。(也就是对的只统计一个,错误的我都进行统计,而错误的里面也有很多是数据集未标注的,因此模型实际上的效果应该是更好一些)。
Best~

非常感谢您的解答。您提到的处理数据制作训练集的代码具体是哪个文件下的呢,我找了一圈没有找到,非常抱歉。还有就是我理解的您的意思是在构造训练集的标签时,假如三元组[h,r,t]中h有两个不同的提及h1和h2,那么最终给与的训练标签就是[h1,r,t]和[h2,r,t]。我看有的论文也将实体列表放入提示里,您当时有实验过吗,我看您的论文中是没有将实体列表放入提示中的。如果您能帮助解答,我将非常感谢!!!

https://github.com/THUDM/AutoRE/blob/main/AutoRE/utils/pre_process_data.py 这里面有各个模式的详细数据制作。另外,参考template.py,我确实没有将任何的实体列表(或者是关系列表)作为预先知道的放入到提示词中,目的是不带任何的先验知识。其他类似的做法,我认为目的是为了降低任务的难度(选择比预测简单),因此我是通过训练,让模型具备直接预测的能力,更加符合真实end2end的生活场景。

好的,非常感谢您的解答!我再去仔细研读下您的文章和相关数据处理的代码。祝您生活愉快,工作顺心!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants