【问题标题】:How to use spaCy’s Rule-Based Matching for sentences extraction如何使用 spaCy 的基于规则的匹配进行句子提取
【发布时间】:2020-08-13 21:46:38
【问题描述】:

下午好,我正在尝试使用 spacy 来将法语句子从一个列表中提取到另一个包含特定模式的句子中。否定形式“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)




【问题讨论】:

    标签: python nlp spacy feature-extraction information-retrieval


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-14
      • 1970-01-01
      • 2016-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多