From d4de78be7aea0b337968c6279442312ab8e5649e Mon Sep 17 00:00:00 2001 From: dakocha3 Date: Thu, 24 Sep 2026 00:01:46 +0300 Subject: [PATCH] =?UTF-8?q?perf:=20=D0=BD=D0=B5=20=D0=B7=D0=B2=D0=B0=D1=82?= =?UTF-8?q?=D1=8C=20legal-=D0=BC=D0=BE=D0=B4=D0=B5=D0=BB=D1=8C=20=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=BA=D0=B0=D0=B6=D0=B4=D0=BE=D0=B5=20=D1=81=D0=BB?= =?UTF-8?q?=D0=BE=D0=B2=D0=BE=20=D1=82=D0=B5=D0=BA=D1=81=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit LEGAL_CANDIDATE сужен до цифровых кластеров (ИНН, СНИЛС, паспорт, телефон, банковский счёт) и email. Раньше в него входили и слова, из-за чего модель LLAIM Legal NER вызывалась на каждое слово до maxCandidates раз. Имена (PER) размечает модель имён, email — правила, поэтому слова из кандидата убраны. --- src/main/java/ru/pdguard/detect/NameCascade.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/java/ru/pdguard/detect/NameCascade.java b/src/main/java/ru/pdguard/detect/NameCascade.java index 5ce2bbd..641a562 100644 --- a/src/main/java/ru/pdguard/detect/NameCascade.java +++ b/src/main/java/ru/pdguard/detect/NameCascade.java @@ -93,14 +93,16 @@ public class NameCascade { Pattern.UNICODE_CHARACTER_CLASS | Pattern.UNICODE_CASE); /** - * Кандидат для LLAIM Legal NER: одиночное слово или цифровой кластер (10–19 цифр с - * разделителями). Юридические реквизиты (ИНН, СНИЛС, паспорт) не являются словами с заглавной - * буквы, поэтому для них нужен отдельный проход, не влияющий на кандидатов моделей имён и - * адресов. + * Кандидат для LLAIM Legal NER: цифровой кластер (10–19 цифр с разделителями) или + * адрес электронной почты. Юридические реквизиты (ИНН, СНИЛС, паспорт, телефон, + * банковский счёт) — это цифры, а не слова с заглавной буквы, поэтому отдельный + * проход не влияет на кандидатов моделей имён и адресов. Имена (PER) размечает + * модель имён, email — правила, так что слова сюда не включаются: иначе модель + * звалась бы на каждое слово текста. */ private static final Pattern LEGAL_CANDIDATE = Pattern.compile( - "(?:\\p{Lu}[\\p{L}-]+|\\p{Ll}[\\p{L}-]+|\\d(?:[\\s.\\-/()]?\\d){9,18})", + "(?:\\d(?:[\\s.\\-/()]?\\d){9,18}|[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,})", Pattern.UNICODE_CHARACTER_CLASS | Pattern.UNICODE_CASE); /** Приоритет находок второй ступени: ниже правил, у которых больше оснований. */