Соответствие фраз на основе правил SpaCy для Hello World - PullRequest
2 голосов
/ 23 октября 2019

Я делаю сопоставление фраз на основе правил в Spacy. Я пытаюсь следующий пример, но он не работает.

Пример

import spacy
from spacy.matcher import Matcher
nlp = spacy.load('en_core_web_sm')
doc = nlp('Hello world!')

pattern = [{"LOWER": "hello"}, {"IS_PUNCT": True}, {"LOWER": "world"}]

matcher = Matcher(nlp.vocab)
matcher.add('HelloWorld', None, pattern)

matches = matcher(doc)
print(matches) 

, тогда как final matches дает пустую строку. Не могли бы вы исправить меня?

Ответы [ 2 ]

1 голос
/ 23 октября 2019

Для соответствия либо hello world, а также hello, world, вы можете использовать

pattern = [{"LOWER": "hello"}, {"IS_PUNCT": True, "OP" : "?"}, {"LOWER": "world"}]

. {"IS_PUNCT": True, "OP" : "?"} означает, что токен типа пунктуация может существовать 1 или 0 раз(из-за "OP" : "?") между hello и world.

Подробнее о Операторы и квантификаторы в документации Spacy.

1 голос
/ 23 октября 2019

Ваш шаблон соответствует Hello, world с маркером пунктуации в середине, а не Hello world

...