【问题标题】:Relationship Extraction (RE) using Stanford API使用斯坦福 API 进行关系提取 (RE)
【发布时间】:2016-06-21 13:16:05
【问题描述】:

我创建了一个自定义命名实体识别 (NER) 分类器和一个自定义关系提取 (RE) 分类器。在 RE 的训练数据中,我给了它一组 10 个句子,其中我给出了确切的实体以及它们之间的关系。

当我运行代码时,我得到了 10 个句子中 6 个的正确关系。但是,我没有在所有句子中得到正确的关系。我想了解为什么即使我在训练数据中给出了完全相同的句子,RE 代码也无法识别句子中的正确关系?

比如下面这句话:

该基金的目标是帮助我们的会员实现最好的 RetOue。

在训练数据中,给出的关系是

资助 RetOue 建设

下面是句子中找到的所有RelationMentions,可以看出“Fund”和“RetOut”之间的关系是_NR,概率为(_NR,0.6074190677382846)和实际关系(build,0.26265263651796966) ) 的概率较低。以下列表中的第二个:

RelationMention [type=_NR, start=1, end=9, {_NR, 0.8706606065870188; build, 0.04609463244214589; reply, 0.014127678851794745; cause, 0.01412618987143006; deliver, 0.014028667880335159; calculate, 0.014026673364224201; change, 0.013888249765034161; collaborate, 0.01304730123801706}
    EntityMention [type=RESOURCE, objectId=EntityMention-10, hstart=1, hend=2, estart=1, eend=2, headPosition=1, value="Fund", corefID=-1]
    EntityMention [type=ROLE, objectId=EntityMention-11, hstart=8, hend=9, estart=8, eend=9, headPosition=8, value="members", corefID=-1]
]

RelationMention [type=_NR, start=1, end=14, {_NR, 0.6074190677382846; build, 0.26265263651796966; collaborate, 0.029635339573025835; reply, 0.020273680468829585; cause, 0.020270355199687763; change, 0.020143296854960534; calculate, 0.019807048865472295; deliver, 0.01979857478176975}
    EntityMention [type=RESOURCE, objectId=EntityMention-10, hstart=1, hend=2, estart=1, eend=2, headPosition=1, value="Fund", corefID=-1]
    EntityMention [type=RESOURCE, objectId=EntityMention-12, hstart=13, hend=14, estart=13, eend=14, headPosition=13, value="RetOue", corefID=-1]
]

RelationMention [type=_NR, start=1, end=9, {_NR, 0.9088620248226259; build, 0.029826907381364745; cause, 0.01048834533846858; reply, 0.010472406713467062; change, 0.010430417119225247; deliver, 0.010107963031033371; calculate, 0.010090071219976819; collaborate, 0.009721864373838134}
    EntityMention [type=ROLE, objectId=EntityMention-11, hstart=8, hend=9, estart=8, eend=9, headPosition=8, value="members", corefID=-1]
    EntityMention [type=RESOURCE, objectId=EntityMention-10, hstart=1, hend=2, estart=1, eend=2, headPosition=1, value="Fund", corefID=-1]
]

RelationMention [type=_NR, start=8, end=14, {_NR, 0.6412212367693484; build, 0.0795874107991397; deliver, 0.061375929752833555; calculate, 0.061195561682179045; cause, 0.03964100603702037; reply, 0.039577811103586304; change, 0.03870906323316812; collaborate, 0.038691980622724644}
    EntityMention [type=ROLE, objectId=EntityMention-11, hstart=8, hend=9, estart=8, eend=9, headPosition=8, value="members", corefID=-1]
    EntityMention [type=RESOURCE, objectId=EntityMention-12, hstart=13, hend=14, estart=13, eend=14, headPosition=13, value="RetOue", corefID=-1]
]

RelationMention [type=_NR, start=1, end=14, {_NR, 0.8650327055005457; build, 0.05264799740623545; collaborate, 0.01878896136615606; reply, 0.012762167223115933; cause, 0.01276049397449083; calculate, 0.012671777715382195; change, 0.012668721250994311; deliver, 0.012667175563079464}
    EntityMention [type=RESOURCE, objectId=EntityMention-12, hstart=13, hend=14, estart=13, eend=14, headPosition=13, value="RetOue", corefID=-1]
    EntityMention [type=RESOURCE, objectId=EntityMention-10, hstart=1, hend=2, estart=1, eend=2, headPosition=1, value="Fund", corefID=-1]
]

RelationMention [type=_NR, start=8, end=14, {_NR, 0.8687007489440899; cause, 0.019732766828364688; reply, 0.0197319383076219; change, 0.019585387681083893; collaborate, 0.019321463597270272; deliver, 0.018836262558606865; calculate, 0.018763499991179922; build, 0.015327932091782685}
    EntityMention [type=RESOURCE, objectId=EntityMention-12, hstart=13, hend=14, estart=13, eend=14, headPosition=13, value="RetOue", corefID=-1]
    EntityMention [type=ROLE, objectId=EntityMention-11, hstart=8, hend=9, estart=8, eend=9, headPosition=8, value="members", corefID=-1]
]

我想了解我应该注意的原因。

Q.1 我的假设是,准确识别实体类型将有助于准确识别关系。对吗?

Q.2 如何改进我的训练数据以确保我得到准确的关系作为结果?

Q.3 我定义的每种实体类型有多少条记录是否重要?我应该为每种关系类型维护相同数量的定义吗?例如:在我的训练数据中,如果我有 10 个关系“构建”的示例,那么我是否应该为每个其他关系类型定义 10 个关系以及“原因”、“回复”等?

Q.4 我的假设是实体的正确 NER 分类会对关系提取产生影响。对吗?

【问题讨论】:

    标签: stanford-nlp


    【解决方案1】:

    您认为良好的 NER 信息会有所帮助的假设是正确的,但您可能需要超过 10 个训练示例。您应该更多地考虑数千个示例,最好是数万/数十万个示例。

    但是,您可能仍然应该记住训练集。你的训练例子是什么?您使用的是默认功能吗?

    【讨论】:

    • 感谢您的回复。是的,我正在使用默认功能。我浏览了这些功能,发现有很多可以调整的功能。无法决定我应该如何列出我应该采用的功能。我还想了解如何计算实体之间每种关系的概率。任何指针都会有所帮助。
    【解决方案2】:

    RE可以使用很多特性来提高关系分类的准确性,需要详细分析。

    回答我的问题: A.1。是的,准确识别实体类型将有助于准确识别关系。 A2。据我所知,训练数据需要手动注释和改进。 A.3。据我所知,是的,实体之间定义的记录数量很重要。 A.4。 NER 准确度会影响 RE 准确度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-16
      • 2016-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多