gpt4 book ai didi

spacy - 如何将简单的训练风格数据转换为 spaCy 的命令行 JSON 格式?

转载 作者:行者123 更新时间:2023-12-05 00:13:10 29 4
gpt4 key购买 nike

我在 "Training an additional entity type" 中有新 NER 类型的训练数据spaCy 文档的部分。

TRAIN_DATA = [
("Horses are too tall and they pretend to care about your feelings", {
'entities': [(0, 6, 'ANIMAL')]
}),

("Do they bite?", {
'entities': []
}),

("horses are too tall and they pretend to care about your feelings", {
'entities': [(0, 6, 'ANIMAL')]
}),

("horses pretend to care about your feelings", {
'entities': [(0, 6, 'ANIMAL')]
}),

("they pretend to care about your feelings, those horses", {
'entities': [(48, 54, 'ANIMAL')]
}),

("horses?", {
'entities': [(0, 6, 'ANIMAL')]
})
]

我想使用 spacy 在这些数据上训练一个 NER 模型 command line application .这需要 spaCy 的 JSON format 中的数据.如何以这种 JSON 格式编写上述数据(即带有标记字符偏移量跨度的文本)?

查看该格式的文档后,我不清楚如何以这种格式手动写入数据。 (例如,我是否将所有内容划分为段落?)还有一个 convert从非spaCy 数据格式转换为spaCy 格式的命令行实用程序,但它不采用像上面那样的spaCy 格式作为输入。

我了解使用“简单训练风格”的 NER 训练代码示例,但我希望能够使用命令行实用程序进行训练。 (尽管从我的 previous spaCy question 中可以明显看出,我不清楚您何时应该使用该样式以及何时应该使用命令行。)

有人可以以“spaCy 的 JSON 格式”向我展示上述数据的示例,或者指向解释如何进行此转换的文档。

最佳答案

spaCy 有一个内置函数这将使您获得大部分途径:

from spacy.gold import biluo_tags_from_offsets

它接受您在那里拥有的“偏移”类型注释并将它们转换为逐个标记的标记 BILOU格式。

要将 NER 注释放入最终的训练 JSON 格式,您只需要对它们进行更多的包装以填充数据所需的其他插槽:
sentences = []
for t in TRAIN_DATA:
doc = nlp(t[0])
tags = biluo_tags_from_offsets(doc, t[1]['entities'])
ner_info = list(zip(doc, tags))
tokens = []
for n, i in enumerate(ner_info):
token = {"head" : 0,
"dep" : "",
"tag" : "",
"orth" : i[0].string,
"ner" : i[1],
"id" : n}
tokens.append(token)
sentences.append(tokens)

确保在使用此数据进行训练之前禁用非 NER 管道。
我在使用 spacy train 时遇到了一些问题在仅限 NER 的数据上。见 #1907并查看 this discussion在 Prodigy 论坛上了解一些可能的解决方法。

关于spacy - 如何将简单的训练风格数据转换为 spaCy 的命令行 JSON 格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48916768/

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