如何在 spaCy 中获取令牌的 BILUO 标签?

Luk*_*keG 2 python nlp spacy

目前,在 spaCy 中,可以使用ent_iob_属性 ( docs )获取令牌的 IOB 标签。例如:

>>> import spacy
>>> nlp = spacy.load('en')
>>> doc = nlp(u'My name is George Washington Singer, and I am an Englishman')
>>> [i.ent_iob_ for i in doc]
[u'O', u'O', u'O', u'B', u'I', u'I', u'O', u'O', u'O', u'O', u'O', u'B']
Run Code Online (Sandbox Code Playgroud)

但是,在训练模型时,spacy 使用 BILUO ( docs )。有没有办法将现成的IOB标签转换成BILUO,或者直接获取BILUO标签?

空间版本 1.8

Luk*_*keG 6

要将IOB 转换为BILUO,spacy.gold 有一个iob_to_biluo功能。

>>> import spacy
>>> from spacy.gold import iob_to_biluo
>>> nlp = spacy.load('en')
>>> doc = nlp(u'My name is George Washington Singer, and I am an Englishman')
>>> iobs = [i.ent_iob_ for i in doc]
>>> iob_to_biluo(iobs)
[u'O', u'O', u'O', u'B-', u'I-', u'L-', u'O', u'O', u'O', u'O', u'O', u'U-']
Run Code Online (Sandbox Code Playgroud)

在 spaCy 版本“2.1.3”上测试

来源可以在这里找到。