- Подключение ru-legal-ner (ONNX) для юридических реквизитов: ИНН, ОГРН, СНИЛС, паспорт, телефон, email, банковский счёт, дата. - Отдельный проход LEGAL_CANDIDATE, чтобы не вытеснять кандидатов имён и адресов. - coversAny(policy) в Pipeline вместо проверки только FIO. - Нормализация цифровых ПД (ИНН/СНИЛС/карта/ОГРН) в свободной форме. - Фикс ложного срабатывания ФИО на аббревиатуре «ИНН» (PD_MARKERS). - Рефакторинг конструкторов NameCascade через record EngineConfig (Sonar S107).
60 lines
3.0 KiB
Bash
Executable File
60 lines
3.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Загрузка моделей распознавания для второй ступени.
|
|
#
|
|
# Используются две модели под разные задачи:
|
|
# - WikiNEuRal (Babelscape/wikineural-multilingual-ner, CC BY-NC-SA 4.0) — имена.
|
|
# Многоязычный NER на базе mBERT, обучен на 9 языках, включая русский. Не
|
|
# распознаёт известных личностей («Лев Толстой»), поэтому справочник имён
|
|
# не нужен. ONNX-версия около 700 МБ.
|
|
# - ruBERT (onnx-community/bert-base-NER-Russian-ONNX, MIT) — адреса. Размечает
|
|
# страну, регион, район, город, улицу и дом отдельно. Около 170 МБ.
|
|
#
|
|
# Модели в репозиторий не кладутся.
|
|
#
|
|
# ./tools/fetch-ner-model.sh
|
|
set -euo pipefail
|
|
cd "$(dirname "$0")/.."
|
|
|
|
fetch() {
|
|
local base="$1" dir="$2" model="$3"; shift 3
|
|
mkdir -p "$dir"
|
|
echo "Загрузка модели в $dir"
|
|
curl -sSL --progress-bar -o "$dir/$model" "$base/$model"
|
|
for f in "$@"; do
|
|
curl -sSL -o "$dir/$f" "$base/$f"
|
|
done
|
|
echo
|
|
ls -lh "$dir"
|
|
echo
|
|
}
|
|
|
|
fetch "https://huggingface.co/rhnfzl/wikineural-multilingual-ner-onnx/resolve/main" \
|
|
models/wikineural-ner model.onnx \
|
|
config.json tokenizer.json tokenizer_config.json special_tokens_map.json
|
|
|
|
fetch "https://huggingface.co/onnx-community/bert-base-NER-Russian-ONNX/resolve/main" \
|
|
models/rubert-ner onnx/model_int8.onnx \
|
|
vocab.txt config.json tokenizer.json tokenizer_config.json
|
|
|
|
# ruBERT кладёт модель в подкаталог onnx/; приведём к ожидаемому имени.
|
|
mv -f models/rubert-ner/onnx/model_int8.onnx models/rubert-ner/model.onnx 2>/dev/null || true
|
|
rmdir models/rubert-ner/onnx 2>/dev/null || true
|
|
|
|
# LLAIM Legal NER (LLAIMlegal/ru-legal-ner, MIT) — юридические реквизиты и
|
|
# документы: ИНН, ОГРН, СНИЛС, паспорт, телефон, email, банковский счёт, дата.
|
|
# Готового ONNX нет — скачиваем веса и конвертируем скриптом (нужны torch,
|
|
# transformers, optimum, onnx).
|
|
fetch "https://huggingface.co/LLAIMlegal/ru-legal-ner/resolve/main" \
|
|
models/ru-legal-ner model.safetensors \
|
|
config.json tokenizer.json tokenizer_config.json
|
|
|
|
if command -v python3 >/dev/null 2>&1; then
|
|
python3 tools/convert_ru_legal_ner.py || echo "Не удалось сконвертировать ru-legal-ner в ONNX"
|
|
else
|
|
echo "python3 не найден: ru-legal-ner не сконвертирован в ONNX"
|
|
fi
|
|
|
|
echo "Готово. Включить:"
|
|
echo " pdguard.ner.name-engine=wikineural, pdguard.ner.name-model=models/wikineural-ner"
|
|
echo " pdguard.ner.address-engine=rubert, pdguard.ner.address-model=models/rubert-ner"
|
|
echo " pdguard.ner.legal-engine=ru-legal-ner, pdguard.ner.legal-model=models/ru-legal-ner" |