feat: интеграция LLAIM Legal NER как третьей ступени распознавания
- Подключение ru-legal-ner (ONNX) для юридических реквизитов: ИНН, ОГРН, СНИЛС, паспорт, телефон, email, банковский счёт, дата. - Отдельный проход LEGAL_CANDIDATE, чтобы не вытеснять кандидатов имён и адресов. - coversAny(policy) в Pipeline вместо проверки только FIO. - Нормализация цифровых ПД (ИНН/СНИЛС/карта/ОГРН) в свободной форме. - Фикс ложного срабатывания ФИО на аббревиатуре «ИНН» (PD_MARKERS). - Рефакторинг конструкторов NameCascade через record EngineConfig (Sonar S107).
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Конвертация LLAIMlegal/ru-legal-ner в ONNX для RuBertRecogniser.
|
||||
|
||||
Модель — BertForTokenClassification. Экспортируем в ONNX с динамической
|
||||
длиной входа, чтобы RuBertRecogniser мог подавать куски разной длины.
|
||||
"""
|
||||
import torch
|
||||
from transformers import AutoTokenizer, AutoModelForTokenClassification
|
||||
from pathlib import Path
|
||||
|
||||
SRC = "LLAIMlegal/ru-legal-ner"
|
||||
OUT = Path("models/ru-legal-ner")
|
||||
|
||||
tokenizer = AutoTokenizer.from_pretrained(SRC)
|
||||
model = AutoModelForTokenClassification.from_pretrained(SRC)
|
||||
model.eval()
|
||||
|
||||
# Динамическая длина: batch=1, seq=dynamic
|
||||
dummy = torch.zeros(1, 8, dtype=torch.long)
|
||||
torch.onnx.export(
|
||||
model,
|
||||
(dummy, dummy, dummy),
|
||||
str(OUT / "model.onnx"),
|
||||
input_names=["input_ids", "attention_mask", "token_type_ids"],
|
||||
output_names=["logits"],
|
||||
dynamic_shapes=[
|
||||
{0: "batch", 1: "seq"},
|
||||
{0: "batch", 1: "seq"},
|
||||
{0: "batch", 1: "seq"},
|
||||
],
|
||||
opset_version=14,
|
||||
)
|
||||
print("ONNX exported to", OUT / "model.onnx")
|
||||
Reference in New Issue
Block a user