В spaCy почему '\n' постоянно помечается как GPE английским NER?

Я начинаю знакомиться с spaCy v2.0. Когда я запускаю Lightning_Tour.py со своими собственными документами, я вижу, что строка конца строки \n постоянно выводится как GPE на выходе объекта.

Так есть ли какой-либо способ предварительной обработки документа, чтобы препятствовать выполнению этой маркировки? Или это поведение английской модели по умолчанию?

1 ответ

Да, это поведение модели по умолчанию в настоящее время (я использую spaCy 2.0.5), и другие видели это (см. Мой комментарий выше). В качестве обходного пути следует пост-обработать объекты, созданные в настоящее время.

from bs4 import BeautifulSoup
import spacy

CONTENT_XML_TAG = ('p', 'ul', 'h3', 'h1', 'h2', 'ol')
soup = BeautifulSoup(mytxt, 'xml')
spacy_model = spacy.load('en_core_web_sm')
content = "\n".join([p.get_text() for p in soup.find('body.content').findAll(CONTENT_XML_TAG)])
section_spacy = spacy_model(content)

def remove_whitespace_entities(doc):
    doc.ents = [e for e in doc.ents if not e.text.isspace()]
    return doc

spacy_model.add_pipe(remove_whitespace_entities, after='ner')
doc = spacy_model(content)
print(doc.ents)
Другие вопросы по тегам