【发布时间】:2020-12-21 16:35:41
【问题描述】:
我想使用基于规则的匹配 我有一个像每个单词一样带有POS的文本:
text1= "it_PRON is_AUX a_DET beautiful_ADJ apple_NOUN"
text2= "it_PRON is_AUX a_DET beautiful_ADJ and_CCONJ big_ADJ apple_NOUN"
所以我想创建一个基于规则的匹配,如果我们有一个 ADJ 后跟名词 (NOUN) 或一个 ADJ 后跟 (PUNCT 或 CCONJ) 后跟一个 ADJ 后跟一个名词 (NOUN)
所以,我想输出:
text1 = [beautiful_ADJ apple_NOUN]
text2= [beautiful_ADJ and_CCONJ big_ADJ apple_NOUN]
我试图这样做,但我没有找到允许这样做的正确模式:
from spacy.matcher import Matcher,PhraseMatcher
import spacy
import spacy
from spacy.matcher import Matcher
matchers = {"first_processing": Matcher(nlp.vocab, validate=True)}
nlp = spacy.load("en_core_web_sm")
pattern = [{},{},{}] #################################### we must find the right pattern
matchers["first_processing"].add("process_1", None, pattern)
nlp = spacy.load("en_core_web_sm")
doc = nlp("it_PRON is_AUX a_DET beautiful_ADJ and_CCONJ big_ADJ apple_NOUN")
a=matcher(doc)
for match_id, start, end in a:
text = doc[start:end].text
print(text)
【问题讨论】:
标签: python-3.x regex spacy regex-greedy