Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何导出“来自spaCy的实体文档”以在doccano中使用_Python_Json_Spacy_Doccano - Fatal编程技术网

Python 如何导出“来自spaCy的实体文档”以在doccano中使用

Python 如何导出“来自spaCy的实体文档”以在doccano中使用,python,json,spacy,doccano,Python,Json,Spacy,Doccano,我想用doccano或其他开源文本注释工具来训练我的模型,并不断改进我的模型 因此,我的理解是,我可以将带注释的数据以如下所述的格式导入doccano: 因此,第一步我加载了一个模型并创建了一个文档: text = "Test text that should be annotated for Michael Schumacher" nlp = spacy.load('en_core_news_sm') doc = nlp(text) 我知道我可以从doccano导出带有文本和注释标签的j

我想用doccano或其他开源文本注释工具来训练我的模型,并不断改进我的模型

因此,我的理解是,我可以将带注释的数据以如下所述的格式导入doccano:

因此,第一步我加载了一个模型并创建了一个文档:

text = "Test text that should be annotated for Michael Schumacher" 
nlp = spacy.load('en_core_news_sm')
doc = nlp(text)
我知道我可以从doccano导出带有文本和注释标签的jsonl格式,并使用它训练模型,但我想知道如何从python中的spaCy文档导出该数据,以便将其导入doccano


提前感谢。

Spacy不支持这种开箱即用的精确格式,但您应该能够相当轻松地编写自定义函数。看一看,它显示了一个类似于JSON的转换。

Spacy不支持这种开箱即用的精确格式,但您应该能够相当轻松地编写自定义函数。看一看,它显示了一个类似的JSON转换。

我最近有一个类似的任务,下面是我如何完成的:

进口空间 nlp=空间。加载“核心新闻” def text_至_DOCCONTEXT: :text str:源文本 返回列表dict:deccano格式的json djson=list doc=nlptext 对于已发送的doc.sents: 标签=列表 对于e in sent.ents: labels.append[e.start\u char,e.end\u char,e.label\u] 追加{'text':sent.text,labels:labels} 返回djson 根据你的例子

text=应为Michael Schumacher注释的测试文本。 djson=文本到文本 普林特森 。。。将打印:

[{'text': 'Test text that should be annotated for Michael Schumacher.', 'labels': [[39, 57, 'PERSON']]}]
另一方面,当您将结果保存到文件中时,用于保存json的标准json.dump方法将不起作用,因为它会将其写入一个用逗号分隔的条目列表。好吧,doccano希望每行有一个条目,后面没有逗号。在解决此问题时,以下代码段的工作方式与charm类似:

导入json openfilepath,'w'。write\n.join[json.dumpse for e in djson]
/干杯

我最近有一个类似的任务,下面是我是如何完成的:

进口空间 nlp=空间。加载“核心新闻” def text_至_DOCCONTEXT: :text str:源文本 返回列表dict:deccano格式的json djson=list doc=nlptext 对于已发送的doc.sents: 标签=列表 对于e in sent.ents: labels.append[e.start\u char,e.end\u char,e.label\u] 追加{'text':sent.text,labels:labels} 返回djson 根据你的例子

text=应为Michael Schumacher注释的测试文本。 djson=文本到文本 普林特森 。。。将打印:

[{'text': 'Test text that should be annotated for Michael Schumacher.', 'labels': [[39, 57, 'PERSON']]}]
另一方面,当您将结果保存到文件中时,用于保存json的标准json.dump方法将不起作用,因为它会将其写入一个用逗号分隔的条目列表。好吧,doccano希望每行有一个条目,后面没有逗号。在解决此问题时,以下代码段的工作方式与charm类似:

导入json openfilepath,'w'。write\n.join[json.dumpse for e in djson]
/Cheers

当你说doc时,你是指在脚本运行时加载的文档还是包含空间数据的模型?我的意思是,如代码中所示,doc是NLPTEXT的返回值。doc是一个空间对象,填充了从处理文本输入中收集的数据。你确定这就是你需要的吗?用不同的语言来表达。我想导出模型已经知道的关于我的文本或者更好的一堆文本。然后在doccano中导入这些,如图所示,然后更正这些注释,可能还会添加新的注释。然后从doccano导出并用这些数据训练我的spaCy模型。你看到更好的方法了吗?当你说doc时,你指的是你在脚本运行时加载的那个,或者是包含空间数据的模型?我的意思是,如代码中所示,doc是nlptext的返回值。doc是一个空间对象,填充了从处理文本输入中收集的数据。你确定这就是你需要的吗?用不同的语言来表达。我想导出模型已经知道的关于我的文本或者更好的一堆文本。然后在doccano中导入这些,如图所示,然后更正这些注释,可能还会添加新的注释。然后从doccano导出并用这些数据训练我的spaCy模型。你认为有更好的办法吗?