Я новичок в просторах. Пытаюсь сейчас добавить множество шаблонов в Matcher и интегрировать его с конвейером, чтобы потом я мог просто загрузить Matcher компонент из конвейера и использовать его, без повторного добавления большого количества паттерны.
Я создаю и сохраняю его со следующим кодом:
pattern = [{"LOWER": "hello"}, {"IS_PUNCT": True}, {"LOWER": "world"}],[{"LOWER": "hello"}, {"LOWER": "world"}]
nlp = spacy.load("en_core_web_sm")
matcher = Matcher(nlp.vocab)
matcher.add("HelloWorld", None, *pattern)
nlp.add_pipe(matcher)
nlp.to_disk('mynlp')
Затем я пытаюсь загрузить свой компонент и использовать его:
from spacy.language import Language
Language.factories['Matcher'] = lambda nlp, **cfg: Matcher(nlp.vocab, **cfg)
nlp = spacy.load('mynlp')
matcher = nlp.get_pipe("Matcher")
doc = nlp("Hello, world! Hello world!", disable=["Matcher"])
matches = matcher(doc)
print(matches)
for match_id, start, end in matches:
string_id = nlp.vocab.strings[match_id]
span = doc[start:end]
print(match_id, string_id, start, end, span.text)
Но результат пустой список Я думаю, что шаблоны не сохранились. Есть что-то, что я неправильно понял или делаю неправильно?