【问题标题】:Reference other entities in entity_ruler在 entity_ruler 中引用其他实体
【发布时间】:2021-11-11 09:22:29
【问题描述】:

我正在尝试使用 entity_ruler 构建“命名实体”的自定义列表,同时遵循 APIs

但是我遇到了一个问题:我可以构建一个命名实体来引用另一个也在 entity_ruler 中定义的实体吗?

举个例子,假设我想将实体Agreement构建为一些固定表达式,并将实体AgreementDate构建为Agreement,后跟另一个表达式: 以下剪断可以正确设置spacy吗?因为输出不是我所期望的。

patterns = [
    {'label': 'Agreement', 'pattern': [{'LOWER': 'license agreement'}]},
    {'label': 'Agreement', 'pattern': [{'LOWER': 'agreement'}]},
    {'label': 'Agreement', 'pattern': [{'LOWER': 'commencement'}]},
    {'label': 'Agreement', 'pattern': [{'LOWER': 'parties'}]},
    {'label': 'AgreementDate', 'pattern': [{'ENT_TYPE': 'Agreement'}, {'LOWER': 'date'}]},
]
nlp = spacy.load('en_core_web_sm')
entity_ruler = nlp.add_pipe('entity_ruler', config={
    'validate': True,
    'overwrite_ents': True
})
entity_ruler.initialize(lambda: [], nlp=nlp, patterns=patterns)
for ent in nlp('''Commencement Date
license agreement date''').ents:
    print(f'{ent.text:40} {ent.label_:40}')
Commencement                             Agreement                               
agreement                                Agreement                               

【问题讨论】:

    标签: spacy named-entity-recognition named-entity-extraction


    【解决方案1】:

    实体标尺模式仅与实体标尺组件开始运行之前设置的注释匹配,但如果您将最终模式移动到第二个实体标尺中(使用自定义组件名称),您可以做到这一点。

    【讨论】:

    • 所以想法是“拆分”命名实体并将它们分配给多个独立的实体统治者?你能指出一些例子吗?有什么方法可以“自动”实现吗?在设置结束时,我不确定我最终会得到“多少级别”的引用
    • 就像程序中的代码一样,您需要考虑规则的执行顺序。没有办法自动完成。
    猜你喜欢
    • 2014-08-30
    • 2018-08-08
    • 1970-01-01
    • 2011-10-28
    • 1970-01-01
    • 1970-01-01
    • 2023-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多