простота: как получить PhraseMatcher на основе леммы - PullRequest
0 голосов
/ 27 сентября 2019

Я хочу найти фразу слова, из которой есть та же самая лемма, например, если я ищу «кошки бегут», она должна соответствовать «кошки бежали».Я пытался создать новый документ со словами без леммы, но по какой-то причине мне нужны зависимости, но новый документ не содержит зависимостей, и я не могу сопоставить индексы нового документа и старого документа.

1 Ответ

0 голосов
/ 28 сентября 2019

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, изменены одинаково.)

...