gpt4 book ai didi

python - 如何导出 "Document with entities from spaCy"以在 doccano 中使用

转载 作者:太空宇宙 更新时间:2023-11-04 11:12:18 24 4
gpt4 key购买 nike

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

为此,我的理解是,我可以按照此处描述的格式将带注释的数据导入 doccano: doccano import

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

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 .

提前致谢。

最佳答案

我最近有一个类似的任务,这是我是如何做到的:

import spacy
nlp = spacy.load('en_core_news_sm')

def text_to_doccano(text):
"""
:text (str): source text
Returns (list (dict)): deccano format json
"""
djson = list()
doc = nlp(text)
for sent in doc.sents:
labels = list()
for e in sent.ents:
labels.append([e.start_char, e.end_char, e.label_])
djson.append({'text': sent.text, "labels": labels})
return djson

基于你的例子......

text = "Test text that should be annotated for Michael Schumacher."
djson = text_to_doccano(text)
print(djson)

... 会打印出:

[{'text': 'Test text that should be annotated for Michael Schumacher.', 'labels': [[39, 57, 'PERSON']]}]

相关说明,当您将结果保存到文件时,用于保存 JSON 的标准 json.dump 方法将不起作用,因为它将把结果写成用逗号分隔的条目列表。 AFAIK,doccano 期望每行一个条目并且没有尾随逗号。在解决这个问题时,以下代码片段很有魅力:

import json

open(filepath, 'w').write("\n".join([json.dumps(e) for e in djson]))

/干杯

关于python - 如何导出 "Document with entities from spaCy"以在 doccano 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57902256/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com