我开始熟悉spaCy v2.0。当我使用自己的文档运行Lightning_Tour.py时,我发现行结束字符串\n
在实体输出中始终标记为GPE。
那么有没有办法预处理文档以阻止这种标记的发生?或者这是默认英语模型的行为吗?
答案 0 :(得分:1)
是的,它是当前默认模型的行为(我正在使用spaCy 2.0.5),而其他人已经看过它(请参阅上面的评论)。作为一种解决方法,应该对当前生成的实体进行后处理。
答案 1 :(得分:0)
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)