У меня есть набор ключевых слов, по которым я уже соответствую.Это медицинский контекст, поэтому я создал эквивалентный сценарий, по крайней мере, для анализа, который я пытаюсь выполнить:
У меня есть машина с хромированными 1000-дюймовыми ободами.
Допустим, я хочу вернуть как фразу все дочерние слова / токены ключевого слова rims , где rims уже помечено SpaCy как сущность как CARPART.
В Python это то, что я делаю:
test_phrases = nlp("""I have a car with chrome 100-inch rims.""")
print(test_phrases.cats)
for t in test_phrases:
print('Token: {} || POS: {} || DEP: {} CHILDREN: {} || ent_type: {}'.format(t,t.pos_,t.dep_,[c for c in t.children],t.ent_type_))
Token: I || POS: PRON || DEP: nsubj CHILDREN: [] || ent_type:
Token: have || POS: VERB || DEP: ROOT CHILDREN: [I, car, .] ||
ent_type:
Token: a || POS: DET || DEP: det CHILDREN: [] || ent_type:
Token: car || POS: NOUN || DEP: dobj CHILDREN: [a, with] || ent_type:
Token: with || POS: ADP || DEP: prep CHILDREN: [rims] || ent_type:
Token: chrome || POS: ADJ || DEP: amod CHILDREN: [] || ent_type:
Token: 100-inch || POS: NOUN || DEP: compound CHILDREN: [] || ent_type:
Token: rims || POS: NOUN || DEP: pobj CHILDREN: [chrome, 100-inch] ||
ent_type:
Token: . || POS: PUNCT || DEP: punct CHILDREN: [] || ent_type: CARPART
Итак, я хочу использовать что-то вроде:
test_matcher = Matcher(nlp.vocab)
test_phrase = ['']
patterns = [[{'ENT':'CARPART',????}] for kp in test_phrase]
test_matcher.add('CARPHRASE', None, *patterns)
вызов test_matcher on test_doc вернуть его:
chrome 100-inch rims