У меня есть этот текст (текст 2 в коде), в нем 3 слова, я хочу использовать Spacy для извлечения имени человека (полное имя, даже если это 3 слова, некоторые расы используют длинные имена, в данном случае 2) . Код ниже, мой шаблон показывает ошибку. Мое намерение: сначала исправить слово «по» с помощью ORTH, а затем сообщить программе, что все, что будет дальше, является сущностью Part of Speech, называемой PERSON. Буду рад, если кому-нибудь поможет:
import spacy
from spacy.matcher import Matcher
matcher = Matcher(nlp.vocab)
text2 = 'All is done by Emily Muller, the leaf is burned by fire. we were not happy, so we cut relations by saying bye bye'
def extract_person(nlp_doc):
pattern = [{'ORTH': 'by'}, {'POS': 'NOUN'}}]
# second possible pattern:
#pattern = [{"TEXT": "by"}, {"NER": "PERSON"}]
matcher.add('person_only', None, pattern)
matches = matcher(nlp_doc)
for match_id, start, end in matches:
span = nlp_doc[start:end]
return span.text
target_doc = nlp(text2)
extract_person(target_doc)
Я думаю, что этот вопрос можно задать иначе: как использовать теги NER в шаблоне в Matcher in spacy?