zjunlp / IEPile

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

您好,我想请问一下,如果我想抽取完整的三元组,有没有对应的prompt模版?我只看到实体、事件等单独的抽取方式 #17

Closed LeonNerd closed 5 months ago

LeonNerd commented 5 months ago

如题

LeonNerd commented 5 months ago

另外整个使用方式上一定需要显示指定schema: [地理位置, 人物, 组织机构]才可以使用么?

guihonghao commented 5 months ago

你好,三元组抽取的prompt模版是 RE + 'zh': "你是专门进行关系抽取的专家。请从input中抽取出符合schema定义的关系三元组,不存在的关系返回空列表。请按照JSON字符串的格式回答。",

guihonghao commented 5 months ago

我们主要关注基于schema的信息抽取,因此必须在指令中显式指定schema。当然我们也正在探索不指定schema的开放抽取,预计OneKE2.0将支持这一功能。

LeonNerd commented 5 months ago

懂了,也就是说关系抽取就是三元组的抽取方法,我是想用他做知识图谱的信息抽取模型抽出来的三元组用来构建图谱。您觉得可行么? 另外模型的输出在结构上是固定的是吧。类似,影视作品_上映时间_Date": [{"subject": "银河护卫队3", "object": "2023年5月5日"},"人物_母亲_人物": [], 那模型输出的结构能否调整呢?类似下面。楚留香新传-主演-张智尧 "head": "楚留香新传", "head_type": "影视作品", "relation": "主演", "tail": "张智尧", "tail_type": "人物"

guihonghao commented 5 months ago

推荐使用我们最新发布的信息抽取大模型OneKE https://github.com/zjunlp/DeepKE/blob/main/example/llm/OneKE.md ,数据输出格式一般固定在json格式不太好修改成其他格式。 头、尾实体的类型约束以及其他约束可以通过增加下面的schema解释实现。

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

此外,OneKE还包含实体属性抽取指令,更适配于知识图谱构建

{
  "instruction": "你是一个图谱实体知识结构化专家。根据输入实体类型(entity type)的schema描述,从文本中抽取出相应的实体实例和其属性信息,不存在的属性不输出, 属性存在多值就返回列表,并输出为可解析的json格式。", 
  "schema": [
    {
      "entity_type": "人物",
      "attributes": {
        "中文名": "人物中文名字", 
        "英文名": "人物的英文名", 
        "祖籍": "人物的祖籍地址",
        "出生日期": "生日、出生年月日", 
        "出生地点": "出生的地点、行政区",
        "职业": "人物的职业、职务、身份",
        "毕业学校": "就读毕业的中学、大学、高校",
        "作品": "专辑、歌曲、小说、出版书籍、参演影视作品等",
        "奖项": "人物所获得的各种奖项和荣誉称号"}
    }
  ], 
  "input": "周杰伦(Jay Chou),1979年1月18日出生于台湾省新北市,祖籍福建省泉州市永春县,华语流行乐男歌手、音乐人、演员、导演、编剧,毕业于淡江中学。2000年,发行个人首张音乐专辑《Jay》。2001年,凭借专辑《范特西》奠定其融合中西方音乐的风格。2002年,举行“The One”世界巡回演唱会;同年,凭借歌曲《爱在西元前》获得第13届台湾金曲奖最佳作曲人奖。"
}
LeonNerd commented 5 months ago

感谢!期待你们OnekE2.0发布

LeonNerd commented 5 months ago

有一个问题想请教一下,目前模型的使用方式,依赖细致性的schema,这样有很高的精度,对于不需要的内容有很好的解答效果。但是也存在一些实际落地使用上的问题,比如,需要预先提供较长的schema list模版。因此,我再想能否将schema实现成粗粒度和细粒度结合的方式。 比如,我想抽取和人的有关的三元组信息。直接将“人”作为一个更加宽泛的schema,来抽取预定义的所有关系。这样是否更好? 读了您的论文,您提到InstructUIE YAYI-UIE是一种粗粒度的方式,我没仔细研究过两种方法,只看到论文也提到schema,不确定该方式和我说的是否一致。 谢谢!

guihonghao commented 5 months ago

你好,我们在论文中提到的InstructUIE、YAYI-UIE只是说他们在处理schema形成指令的时候比较粗放,即如果一个数据集拥有49个schema,他们会在一条指令中要求模型回答这49的schema的答案。一次性回答所有难度大、无法让模型很好的区分语义相近容易混淆的schema(这些容易混淆的schema才是模型容易出错的关键)、存在询问长度泛化问题。因此我们提出了难负样本构造和轮询式指令生成。 现在也存在一些根据宽泛的需求抽取关键信息的半开放信息抽取的工作,例如:Instruct and Extract: Instruction Tuning for On-Demand Information Extraction 他的做法可能类似于你说的粗粒度抽取,比如,对于一篇人物相关的文章,使用指令“请你帮我抽取下面文章中与人物相关的关键信息”。不需要在指令中指定的属性、关系值。

zxlzr commented 5 months ago

请问您还有其他问题吗