Python 3.x 运行Spacy实体链接示例时出错

Python 3.x 运行Spacy实体链接示例时出错,python-3.x,nlp,spacy,entity-linking,Python 3.x,Nlp,Spacy,Entity Linking,我正在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

我正在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
用它来训练实体链接器,并用它生成实体链接器的知识库

我可以使用可用的en_core\u web\u 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)
#python“entity linker.py”。/pret_kb/kb./pret_kb/vocab
已使用“pret_kb\vocab”中的vocab创建空白“en”模型
已从“pret_kb\kb”加载知识库
回溯(最近一次呼叫最后一次):
文件“entity linker.py”,第156行,在
位置呼叫(主)
文件“C:\Users\manimaran.p\AppData\Local\Continuum\anaconda3\envs\spacy\lib\site packages\plac\u core.py”,第328行,在调用中
cmd,result=parser.consume(arglist)
文件“C:\Users\manimaran.p\AppData\Local\Continuum\anaconda3\envs\spacy\lib\site packages\plac\u core.py”,第207行,在“使用”中
return cmd,self.func(*(args+varargs+extraopts),**kwargs)
文件“entity linker.py”,第113行,在main中
sgd=优化器,
文件“C:\Users\manimaran.p\AppData\Local\Continuum\anaconda3\envs\spacy\lib\site packages\spacy\language.py”,更新中第515行
过程更新(单据、黄金、新加坡元=获得分数、损失=损失,**kwargs)
spacy.pipeline.pipes.EntityLinker.update中的文件“pipes.pyx”,第1219行
KeyError:(0,12)
我确实按照规定的指示做了。我使用了en_core_web_md来创建知识库,因为我没有预先训练过的模型


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

这是spaCy的GitHub上询问并回答的

在实体链接管道重构后,脚本似乎不再工作,因为它现在希望管道中有一个统计或基于规则的NER组件

例如,将这样的
EntityRuler
添加到管道中。即

#添加自定义组件以将“Russ Cochran”识别为示例培训数据的实体。
#请注意,在实际应用中,应使用实际的NER算法。
标尺=整个标尺(nlp)
模式=[{“标签”:“人”,“模式”:[{“下层”:“罗斯”},{“下层”:“科克伦”}]}]
标尺。添加_图案(图案)
nlp.添加_管道(标尺)
但是,这可以用您自己的统计模型代替