下午好,我试图使用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)
仔细检查您的模式,将它们与您在每个标记中看到的特征值进行比较。doc
你要匹配。
AVD
和 ROOT
不可能 POS
值,所以这些模式永远不会匹配任何东西。