【问题标题】:Error running Spacy entity linking example运行 Spacy 实体链接示例时出错
【发布时间】:2020-03-21 20:23:53
【问题描述】:

我正在尝试 spacy 中的实体链接示例。

这是我系统中有关 spaCy 的信息。

============================== Info about spaCy ==============================

spaCy version    2.2.2
Location         C:\Users\manimaran.p\AppData\Local\Continuum\anaconda3\envs\spacy\lib\site-packages\spacy
Platform         Windows-8.1-6.3.9600-SP0
Python version   3.7.3
Models

使用此example 训练实体链接器并使用此example 生成相同的知识库。

我可以使用可用的 en_core_web_md 创建一个知识库,这是相同的输出。

# python "create kb.py" -m en_core_web_md -o pret_kb
Loaded model 'en_core_web_md'

2 kb entities: ['Q2146908', 'Q7381115']
1 kb aliases: ['Russ Cochran']

Saved KB to pret_kb\kb
Saved vocab to pret_kb\vocab

Loading vocab from pret_kb\vocab
Loading KB from pret_kb\kb
2 kb entities: ['Q2146908', 'Q7381115']
1 kb aliases: ['Russ Cochran']

当我尝试使用上面的知识库训练实体链接器时,出现此错误。

# python "entity linker.py" ./pret_kb/kb ./pret_kb/vocab
Created blank 'en' model with vocab from 'pret_kb\vocab'
Loaded Knowledge Base from 'pret_kb\kb'
Traceback (most recent call last):
  File "entity linker.py", line 156, in <module>
    plac.call(main)
  File "C:\Users\manimaran.p\AppData\Local\Continuum\anaconda3\envs\spacy\lib\site-packages\plac_core.py", line 328, in call
    cmd, result = parser.consume(arglist)
  File "C:\Users\manimaran.p\AppData\Local\Continuum\anaconda3\envs\spacy\lib\site-packages\plac_core.py", line 207, in consume
    return cmd, self.func(*(args + varargs + extraopts), **kwargs)
  File "entity linker.py", line 113, in main
    sgd=optimizer,
  File "C:\Users\manimaran.p\AppData\Local\Continuum\anaconda3\envs\spacy\lib\site-packages\spacy\language.py", line 515, in update
    proc.update(docs, golds, sgd=get_grads, losses=losses, **kwargs)
  File "pipes.pyx", line 1219, in spacy.pipeline.pipes.EntityLinker.update
KeyError: (0, 12)

我确实按照here 指定的说明进行操作。因为我没有预训练模型,所以我使用 en_core_web_md 创建知识库。

我没有编写任何自定义代码只是试图运行这个示例,有人可以指出正确的方向吗?

【问题讨论】:

    标签: python-3.x nlp spacy entity-linking


    【解决方案1】:

    这是在 spaCy 的 GitHub 上的 the following issue 中提出并回答的。

    在重构实体链接管道后,该脚本似乎不再工作,因为它现在需要管道中的统计或基于规则的 NER 组件。

    The new script 将这样一个EntityRuler 添加到管道中作为示例。即,

    # Add a custom component to recognize "Russ Cochran" as an entity for the example training data.
    # Note that in a realistic application, an actual NER algorithm should be used instead.
    ruler = EntityRuler(nlp)
    patterns = [{"label": "PERSON", "pattern": [{"LOWER": "russ"}, {"LOWER": "cochran"}]}]
    ruler.add_patterns(patterns)
    nlp.add_pipe(ruler)
    

    但是,这可以替换为您自己的统计 NER 模型。

    【讨论】:

      猜你喜欢
      • 2023-04-02
      • 2020-02-20
      • 1970-01-01
      • 1970-01-01
      • 2020-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-13
      相关资源
      最近更新 更多