SpaCy DisplaCy不检测自定义IOB标签



我有一个示例文本和IOB标签,我想使用置换:

from spacy.tokens import Doc
nlp = spacy.blank("en")
tags = ['O', 'B-PER', 'I-PER']
words = ["I'm","John","Smith"]
doc = Doc(nlp.vocab, words=words, ents=tags)
displacy.render(doc, style="ent", jupyter=True)

但是,displacement将文本可视化为:

I'm John Smith (PER)

和不像

I'm (O) John(B-Per) Smith (I-Per)

如何实现这一点?

我认为你没有办法做到这一点。

您希望在每个令牌上显示文字IOB标记。相反,displaCy省略了O标记(因为它们是默认的),并显示整个实体,而不是令牌标记,因为这样更容易理解。这也是我所知道的所有其他图形工具显示标签的方式(例如,这里是brat)。我确信我从来没有见过一个工具显式地显示O标记(这有什么用呢?)。

如果你想用标签显示每个令牌,我认为你最好只是打印文本而不是使用displaCy。

最新更新