将NER空间格式转换为IOB格式 [英] Convert NER SpaCy format to IOB format

查看:15
本文介绍了将NER空间格式转换为IOB格式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有已经以拼写格式标记的数据。例如:

("Who is Shaka Khan?", {"entities": [(7, 17, "PERSON")]}),
("I like London and Berlin.", {"entities": [(7, 13, "LOC"), (18, 24, "LOC")]})

但我想尝试使用任何其他NER模型来训练它,例如Bert-ner,它需要IOB标记。有没有Spacy数据格式到IOB的转换代码?

谢谢!

推荐答案

这篇文章与https://stackoverflow.com/a/59209377/461847密切相关,并且主要抄袭自https://stackoverflow.com/a/59209377/461847,也请参阅评论中的注释:

import spacy
from spacy.gold import biluo_tags_from_offsets

TRAIN_DATA = [
    ("Who is Shaka Khan?", {"entities": [(7, 17, "PERSON")]}),
    ("I like London and Berlin.", {"entities": [(7, 13, "LOC"), (18, 24, "LOC")]}),
]

nlp = spacy.load('en_core_web_sm')
docs = []
for text, annot in TRAIN_DATA:
    doc = nlp(text)
    tags = biluo_tags_from_offsets(doc, annot['entities'])
    # then convert L->I and U->B to have IOB tags for the tokens in the doc

这篇关于将NER空间格式转换为IOB格式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆