ruBERT для детекции адъективной неопределённости в русских юридических текстах
Описание модели
Это дообученная версия модели DeepPavlov/rubert-base-cased для автоматической детекции адъективной неопределённости в русскоязычных юридических текстах.
Адъективная неопределённость — это тип лингвистической неопределённости, связанный с использованием оценочных прилагательных, наречий и модификаторов степени (разумный срок, существенное нарушение, незамедлительно, крайне необходимый), которые вносят неопределенность в предложение.
Задача
Бинарная классификация предложений из нормативно-правовых актов РФ:
- Класс 0: предложение не содержит адъективной неопределённости
- Класс 1: предложение содержит адъективную неопределённость
Метрики качества
| Metric | Type | Value |
|---|---|---|
| F1 Score | f1 | 0.89 |
| Accuracy | accuracy | 0.894 |
| Precision | precision | 0.898 |
| Recall | recall | 0.884 |
Авторы
Проект выполнен при поддержке проекта СПбГУ (шифр проекта: 123042000068-8)
Ограничения использования
Модель НЕ предназначена для:
- Замены неопределенных выражений на определенные
- Работы с неюридическими текстами (модель обучена на нормативно-правовых актах РФ)
- Детекции других типов неопределённости
Обучающие данные
Корпус CorCodex
- Источник: 282 нормативно-правовых акта РФ (федеральные законы, кодексы, постановления Правительства)
- Объём корпуса: 3 227 000 токенов
Пример использования
{
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
# Загрузка модели и токенизатора
model_name = "yourusername/rubert-legal-vagueness-detector"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)
# Пример предложения из юридического текста
text = "Концедент вправе потребовать возмещения убытков, если нарушение не было устранено в разумный срок."
# Токенизация
inputs = tokenizer(text, return_tensors="pt", truncation=True, max_length=380, padding=True)
# Предсказание
with torch.no_grad():
outputs = model(**inputs)
logits = outputs.logits
predicted_class = torch.argmax(logits, dim=1).item()
probabilities = torch.softmax(logits, dim=1)[0]
# Вывод результата
labels = {0: "Нет неопределённости", 1: "Есть неопределённость"}
print(f"Предсказание: {labels[predicted_class]}")
print(f"Вероятности: Класс 0 = {probabilities[0]:.3f}, Класс 1 = {probabilities[1]:.3f}")
}
- Downloads last month
- 3
Evaluation results
- F1 Score on CorCodex (Legal Texts)self-reported0.890
- Accuracy on CorCodex (Legal Texts)self-reported0.894
- Precision on CorCodex (Legal Texts)self-reported0.898
- Recall on CorCodex (Legal Texts)self-reported0.884