При попытке использовать класс spaCy * Rule Based Matcher для обнаружения пользовательских объектов у меня возникают трудности при объединении атрибутов токена и операторов.Мы можем создать шаблоны, такие как:
pattern = [{"DEP": "obj", "POS": "NOUN"}]
, который соответствует токену с тегом зависимости "obj" и тегом pos "существительное".Однако теперь я хочу также исключить токены, которые являются сущностями ЛИЦ, из этого шаблона.SpaCy допускает квантификаторы типа "!"чтобы соответствовать шаблону ровно 0 раз:
pattern = [{"IS_DIGIT": True, "OP": "!"}]
это будет соответствовать всем токенам, которые НЕ являются цифрами.Дело в том, как применять такие квантификаторы только к одному из под-шаблонов?Допустим, я хочу сопоставить все токены, которые имеют тег obj , являются существительными , но не являются ЛИЦАМИ .Я бы подумал, что если квантификатор применяется к предыдущему суб-шаблону, шаблон будет выглядеть примерно так:
pattern = [{"DEP": "obj", "POS": "NOUN", "ENTITY_TYPE": "PERSON", "OP": "!"}]
, но это работает не так, как ожидалось.Может быть, квантификатор применяется ко всему шаблону, так что он в основном сводит на нет все подэлементы?
Вопрос: как бы мне было создать такие шаблоны с частичными квантификаторами?
Большое спасибо взаранее!