#python #spacy
Вопрос:
Я использую фразеологизмы Спейси для большого количества правил, некоторые из которых являются символами акций компании, которые отображаются в виде, скажем,:
AAPL.Нью-Йорк ББ.ТЕХАС
Или они могут отображаться как AAPL или BB.
При сопоставлении фраз я использовал два шаблона, чтобы получить эти совпадения:
{"label": "TICKER", "pattern": [{"ORTH": {"REGEX": "AAPL\.[A-Z]{2,3}"}}]}
{"label": "TICKER", "pattern": [{"ORTH": "AAPL"}]}
Является ли ОРТ правильным шаблоном, соответствующим РЕГУЛЯРНОМУ выражению? Это иногда дает некоторые интересные результаты, когда он захватывает что-то вроде AAPL.HSHSHSJSKKSKKS, даже если это выходит за рамки {2,3}.
Может ли кто-нибудь помочь мне с а) Имеет ли смысл здесь использовать ОРТ б) Как ограничить использование регулярных выражений, чтобы после периода было не более 2 или 3 символов ?
Комментарии:
1. Помогает ли мой ответ или вам нужна дополнительная помощь?
Ответ №1:
ORTH
(имеется в виду орфография) использовалась до TEXT
того, как была введена в Spacy 2.1. Теперь, при сопоставлении регулярных выражений, вам лучше применить это к TEXT
.
Что касается самого регулярного выражения, имейте в виду, что оно применяется ко всему тексту токена, и для того, чтобы соответствовать всему тексту токена, вам нужно использовать якоря ^
и $
(или A
и z
).
Таким образом, вы можете использовать
{"TEXT": {"REGEX": r"^AAPL.[A-Z]{2,3}$"}}
Кроме того, обратите внимание на использование необработанного строкового литерала, чтобы избежать двойной экранирующей обратной косой черты.