首页 > 解决方案 > 如何在 Spacy 中向匹配器中添加多个模式

问题描述

我想知道如何向匹配器添加不同的模式。我想要的是做这样的事情

matcher.add("COUNTRIES",None,*patterncountry)
matcher.add("ZONES",None,*patternzones)
matcher.add("DAYS",None,patterndays)

所以现在我有3种模式。这怎么可能实现?

标签: pythonspacy

解决方案


在 SpaCy 中,Matcher您可以根据标记描述列表匹配序列,而PhraseMatcher您可以有效地匹配大型术语列表。在您的情况下,PhraseMatcher使用起来会更合适。

import spacy
from spacy.matcher import PhraseMatcher

nlp = spacy.load("en_core_web_sm")
phrase_matcher = PhraseMatcher(nlp.vocab)

countries = [nlp.make_doc(text) for text in ['Canada', 'United States', 'Mexico']]
days = [nlp.make_doc(text) for text in ['Monday', 'Tuesday', 'Wednesday', 'Thursday',
                                        'Friday', 'Saturday', 'Sunday']]

phrase_matcher.add("COUNTRIES",None, *countries)
phrase_matcher.add("DAYS",None, *days)


text = 'On Monday I travelled to Canada.'
doc = nlp(text)
matches = phrase_matcher(doc)

推荐阅读