zjunlp / IEPile

[ACL 2024] IEPile: A Large-Scale Information Extraction Corpus
http://oneke.openkg.cn/
Other
157 stars 14 forks source link

InstructIE数据集转化为SPO格式 #5

Closed l-besiege-l closed 5 months ago

l-besiege-l commented 5 months ago

请问一下,我可以直接使用convert_func.py脚本,将InstructIE数据集转化为SPO格式的任务吗?我看代码里实际上是包含对SPO任务数据进行处理的,我在脚本里加了个模板就可以直接运行convert_func.py脚本 image

guihonghao commented 5 months ago

可以转换成SPO格式的任务,但是IEPILE模型是在RE格式的数据上训练的,因此对于SPO格式的任务效果可能不会太好(DuIE2.0从RE的75降到SPO上的55)。因此如果需要支持SPO格式的任务,还需要进行二次继续训练。

l-besiege-l commented 5 months ago

感谢大佬的回复,我准备使用生成的SPO数据微调模型,我看数据里生成的样本中,schema大多与input不太相关,导致样本的output很多都是空列表,请问这个负例的生成比例可以调整吗,显卡算力不太够想减少点样本量😂 image

guihonghao commented 5 months ago

https://github.com/zjunlp/IEPile/blob/main/README_CN.md#41%E8%AE%AD%E7%BB%83%E6%95%B0%E6%8D%AE%E8%BD%AC%E6%8D%A2

我们更新了难负样本生成的代码,并上传了IEPILE中涉及的所有数据集的难负样本字典。 难负样本即那些处于相同主题、语义相近容易混淆的schema。通过难负样本生成可以有效减少样本量。 后续若样本量还是很大,还可以根据output进行下采样。

image
l-besiege-l commented 5 months ago

好的,十分感谢

vv521 commented 5 months ago

可以转换成SPO格式的任务,但是IEPILE模型是在RE格式的数据上训练的,因此对于SPO格式的任务效果可能不会太好(DuIE2.0从RE的75降到SPO上的55)。因此如果需要支持SPO格式的任务,还需要进行二次继续训练。

大佬您好,请问IEPILE和instructkgc两个项目中,哪个抽取模型对于spo抽取效果较好呀? task支持直接设置spo进行微调训练吗?

guihonghao commented 5 months ago

两个项目中的模型均只考虑了RE任务,其中 https://github.com/zjunlp/DeepKE/blob/main/example/llm/OneKE.md 支持在指令中增加schema解释,因此你可以尝试将SPO任务中的头、尾实体类型的信息加到schema解释中来实现。

{
    "instruction": "你是专门进行关系抽取的专家。请从input中抽取出符合schema定义的关系三元组,不存在的关系返回空列表。请按照JSON字符串的格式回答。",
    "schema": {
        "民族": "民族",
        "毕业院校": "该关系类型描述的是人物和其毕业学院之间的关系,人物是主体,毕业学院是客体。通过识别出文本中的人物名称和学校名称,然后通过词语的组合、上下文情境等信息,分析出人物和学院之间的毕业关系。",
        "主演": "这是一个描述影视作品与其主要演员之间关系的类型,主体是影视作品,客体是演员。在一个有效的'主演'关系中,演员(客体)在影视作品(主体)中担任重要的角色。",
        "父亲": "这个关系类型用来表示人物关系中的父亲和子女之间的亲属关系,即父亲是子女的出生或抚养者。在关系三元组中,'父亲'这个关系类型的主体是子女,客体是父亲。"
    },
    "input": "古往今来,能饰演古龙小说人物“楚留香”的,无一不是娱乐圈公认的美男子,2011年,36岁的张智尧在《楚留香新传》里饰演楚留香,依旧帅得让人无法自拔"
}
vv521 commented 5 months ago

将SPO任务中的头、尾实体类型的信息加到schema解释中来实现。

{

好的感谢您,还想请教您一个问题:目前大模型的spo抽取效果是否没有传统实体关系联合抽取模型通过标注的效果佳呢?