Как использовать сопоставление на основе правил spaCy для извлечения предложений - PullRequest
0 голосов
/ 29 апреля 2020

Добрый день, я пытаюсь использовать spacy для извлечения французских предложений из списка в другой, содержащий заданный шаблон c. отрицательная форма "n '/ ne + глагол / aux / + pas + ADV / ADJ / ROOT / NOUN.

Я пытался написать небольшой код для проверки одного шаблона n' / ne + AUX + ADV, но когда я использовал Spacy, ничего не делается / печать. Поэтому, когда я совершаю ошибку

, я не понимаю, почему, поскольку я следовал учебному пособию, я хотел проверить шаблон и присутствует ли шаблон в предложении Я добавляю его в "sent_extract"



import spacy
from spacy.matcher import Matcher  

pattern = [{"POS": "ADV"}, 
           {"POS": "AUX"}, 
           {"LOWER": "pas"}, 
           {"POS": "AVD"},]  # ADV, NOUN, ADJ


pattern2 = [{"POS": "ADV"}, 
           {"POS": "AUX"}, 
           {"LOWER": "pas"}, 
           {"POS": "ROOT"},]


pattern3 = [{"POS": "ADV"}, 
           {"POS": "AUX"}, 
           {"LOWER": "pas"}, 
           {"POS": "ADJ"},]


matcher = Matcher(nlp.vocab)  
matcher.add("matching_1", None, pattern) 

sentence = ["Voyons ce n'est pas mal ce que vous faites", "Vive la vie.", " Vous n'êtes pas bien.", 
            "Je ne suis pas mauvaise","Jeune gens mangez bien", "Ce n'est pas mauvais"]

sent_extract=[]

for sent in sentence:
    doc=nlp(sent)

    print([t.text for t in doc])

    matches= matcher(doc)

    for match_id, start, end in matches:
        span = doc[start:end]

        print("found match:", span.text)

        if span.text in sent:
            sent_extract(sent)




1 Ответ

0 голосов
/ 30 апреля 2020

Тщательно проверяйте свои шаблоны, сравнивая их со значениями, которые вы видите для тех функций в токенах в каждом doc, с которым хотите совпасть.

AVD и ROOT невозможны POS значения, так что эти шаблоны никогда не будут совпадать.

...