Files
pd-guard/tools/fetch-ner-model.sh
T
Onbehalfofme e3fbc4140e Двухмодельная архитектура NER: WikiNEuRal для имён, ruBERT для адресов
- WikiNEuRal размечает имена (PER), не распознаёт известных личностей
- ruBERT размечает адреса (страна, регион, город, улица, дом)
- Повышена полнота FIO до 1.000: полные имена клиентов маскируются целиком
- Новый набор benchmark-two-model.txt и тесты TwoModelBenchmarkTest, TwoModelCascadeTest
2026-09-22 20:51:22 +03:00

45 lines
2.1 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
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"