如何使用spaCy的基于规则的匹配来提取句子?

问题描述 投票:0回答:1

下午好,我试图使用spacy来提取法语句子,从一个列表到另一个包含特定模式的列表中。

我试图写一个小代码来测试一个模式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)




python nlp spacy feature-extraction information-retrieval
1个回答
0
投票

仔细检查您的模式,将它们与您在每个标记中看到的特征值进行比较。doc 你要匹配。

AVDROOT 不可能 POS 值,所以这些模式永远不会匹配任何东西。

© www.soinside.com 2019 - 2024. All rights reserved.