我将添加新实体到自己的spacy数据模型“mymodel”。在使用此tutorial安装“mymodel”之前,它运行良好。当我想用“mymodel”来添加新的实体时,我有一个误解。请帮我Python Spacy错误:RuntimeError:语言不支持
这里是我的代码:
import plac
from spacy.en import English
from spacy.gold import GoldParse
import spacy
nlp = spacy.load('mymodel')
def main(out_loc):
nlp = English(parser=False) # Avoid loading the parser, for quick load times
# Run the tokenizer and tagger (but not the entity recognizer)
doc = nlp.tokenizer(u'Lions and tigers and grizzly bears!')
nlp.tagger(doc)
nlp.entity.add_label('ANIMAL') # <-- New in v0.100
# Create a GoldParse object. This should have a better API...
indices = tuple(range(len(doc)))
words = [w.text for w in doc]
tags = [w.tag_ for w in doc]
heads = [0 for _ in doc]
deps = ['' for _ in doc]
# This is the only part we care about. We want BILOU format
ner = ['U-ANIMAL', 'O', 'U-ANIMAL', 'O', 'B-ANIMAL', 'L-ANIMAL', 'O']
# Create the GoldParse
annot = GoldParse(doc, (indices, words, tags, heads, deps, ner))
# Update the weights with the example
# Here we iterate until we get it entirely correct. In practice this is probably a bad idea.
# Note that we've added a class to the existing model here! We "resume"
# training the previous model. Whether this is good or not I can't say, you'll have to
# experiment.
loss = nlp.entity.train(doc, annot)
i = 0
while loss != 0 and i < 1000:
loss = nlp.entity.train(doc, annot)
i += 1
print("Used %d iterations" % i)
nlp.entity(doc)
for ent in doc.ents:
print(ent.text, ent.label_)
nlp.entity.model.dump(out_loc)
if __name__ == '__main__':
plac.call(main)
**Error of output:**
Traceback (most recent call last):
File "/home/vv/webapp/dic_model.py", line 7, in <module>
nlp = spacy.load('mymodel')
File "/usr/local/lib/python3.5/dist-packages/spacy/__init__.py", line 26, in load
lang_name = util.get_lang_class(name).lang
File "/usr/local/lib/python3.5/dist-packages/spacy/util.py", line 27, in get_lang_class
raise RuntimeError('Language not supported: %s' % name)
RuntimeError: Language not supported: mymodel
我面临同样的问题,并很乐意收到一些澄清。我遵循这个脚本https://github.com/explosion/spaCy/blob/master/examples/training/train_ner.py和'save_model'方法,我创建了一个文件夹'spaCy_NER',其中包含'config.json'文件和'model',以及一个名为'vocab'的子文件夹。我尝试提供'path/to/spaCy_NER/model'和'path/to/spaCy_NER /'作为'python -m spacy link'的第一个参数。但在这两种情况下,我都会收到相同的RuntimeError。你有什么建议吗? –