perf: не звать legal-модель на каждое слово текста
LEGAL_CANDIDATE сужен до цифровых кластеров (ИНН, СНИЛС, паспорт, телефон, банковский счёт) и email. Раньше в него входили и слова, из-за чего модель LLAIM Legal NER вызывалась на каждое слово до maxCandidates раз. Имена (PER) размечает модель имён, email — правила, поэтому слова из кандидата убраны.
This commit is contained in:
@@ -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);
|
||||
|
||||
/** Приоритет находок второй ступени: ниже правил, у которых больше оснований. */
|
||||
|
||||
Reference in New Issue
Block a user