首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Spacy3.0的nlp.update问题: TypeError:[E978] Language.update方法接受示例对象的列表,但得到的是:{}

Spacy3.0的nlp.update问题: TypeError:[E978] Language.update方法接受示例对象的列表,但得到的是:{}
EN

Stack Overflow用户
提问于 2021-02-24 07:03:37
回答 1查看 1.3K关注 0票数 2

在Spacy3.0版中,nlp.update似乎有一些变化。我完全被这个简单的代码搞糊涂了:

代码语言:javascript
复制
examples = TRAIN_DATA
random.shuffle(examples)
losses = {}
    
for batch in minibatch(examples, size=8):
    nlp.update(batch, sgd=optimizer, drop=0.35, losses=losses)

当我输入( batch )时,它表明batch的类型是list。但是错误消息说它是一个元组。我还尝试将其转换为列表,但没有成功。我做错了什么?

确切的错误是:

小批量批处理(示例,size=8) 22 23中的批次回溯(最近一次调用):-> 24 nlp.update( TypeError,sgd=optimizer,drop=0.35,losses=losses) 25 26 print("Losses ({}/{})".format(epoch + 1,epochs),losses)~/nlp_更新中的learn/statbot/.statbot/lib/python3.8/site-packages/spacy/language.py (self,examples,_,drop,sgd,losses,component_配置,排除) 1090 if len(示例) == 0: 1091 return losses -> 1092验证_examples( examples,"Language.update") 1093个examples=_复制_示例(示例) 1094如果sgd为None:

~/nlp_spacy.training.example.validate中的learn/statbot/.statbot/lib/python3.8/site-packages/spacy/training/example.pyx_示例()TypeError:E978Language.update方法接受示例对象的列表,但得到:{}

这里是第一列火车_以数据为例:('Auf Bauer Lehmanns Hof wird an beiden Pfingsttagen im Backofen gebacken.',{'entities':(10,18,'PER')})

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-24 12:58:52

您需要转换TRAIN_DATAExample类型。可能最简单的方法是使用Example.from_dict()方法。

代码语言:javascript
复制
TRAIN_DATA = # your data
random.shuffle(TRAIN_DATA)
losses = {}
for batch in minibatch(TRAIN_DATA, size=8):
    for text, annotations in batch:
        doc = nlp.make_doc(text)
        example = Example.from_dict(doc, annotations)
        nlp.update([example], drop=0.35, sgd=optimizer, losses=losses)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66342359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档