PhraseMatcher поддерживает сопоставление по атрибутам, отличным от текста, поэтому вам не нужно создавать дополнительный документ:
import spacy
from spacy.matcher import PhraseMatcher
nlp = spacy.load('en')
matcher = PhraseMatcher(nlp.vocab, attr="LEMMA")
matcher.add("CAT", None, nlp("cats run"))
matches = matcher(nlp("cat ran")) # [(14858270728821099472, 0, 2)]
(я не думаю, что неанглийские модели пространств или Stanfordмодели используют лемму -PRON-
, поэтому я не думаю, что вам нужна дополнительная проверка. Если вам нужно изменить леммы, вы можете просто изменить их на месте в существующем документе: token.lemma_ = token.lemma_.lower()
.Например, убедитесь, что текстовый документ и фраза документа, предоставленные PhraseMatcher, изменены одинаково.)