Основанный на правилах Matcher в spaCy находит токены длиннее, чем указано в фигуре - PullRequest
0 голосов
/ 30 августа 2018

Я хочу использовать основанный на правилах Matcher (spaCy версия 2.0.12), чтобы найти в текстовых кодах, состоящих из 4 букв, за которыми следуют 4 цифры (например, CAPA1234). Я пытаюсь использовать шаблон с атрибутом SHAPE:

pattern = [{'SHAPE': 'XXXXdddd'}]

Вы можете проверить это самостоятельно с помощью Matcher Explorer на основе правил .

Он находит ожидаемые коды, но также и более длинные, такие как CAPABCD1234 или CAPA1234567. XXXX, кажется, означает 4 заглавные буквы или более , и то же самое относится к dddd.

Есть ли настройка, чтобы форма точно соответствовала тексту?

1 Ответ

0 голосов
/ 30 августа 2018

Я нашел обходной путь, который решает мою проблему, но не объясняет, почему spaCy ведет себя так, как он. Я оставлю вопрос открытым.

Используйте SHAPE и дополнительно укажите LENGTH явно:

pattern = [{'LENGTH': 8, 'SHAPE': 'XXXXdddd'}]

Обратите внимание, что при использовании LENGTH онлайн-обозреватель перестает работать (токены не выделены). Он отлично работает на моей машине.

...