Canadian Sentence Roles
роли предложений в судебных решениях
Это исследовательская модель от Haroon Ahmad, которая размечает каждое предложение канадского судебного решения одной из семи риторических ролей: Facts, Issue, Arguments_Petitioner, Arguments_Respondent, Reasoning, Decision, None. В основе — двунаправленная LSTM по эмбеддингам Kanon-2 (1024-d) с дополнительными признаками позиции, длины и regex-флагов; логиты четырёх моделей с разными seed усредняются. Модель не даёт юридических консультаций.
👀 Ключевые особенности
- 👉 Семь классов для структуры судебного текста: факты, вопрос, аргументы сторон, рассуждение, решение и прочее.
- 💪 Ансамбль из четырёх BiLSTM-моделей, обученных с разными seed; итоговый прогноз — среднее логитов.
- 😐 На вход идут эмбеддинги Kanon-2, относительная позиция предложения, логарифм длины и три regex-флага.
- 👀 Обучение: 303 решения с разметкой Claude Opus (51 664 предложения) плюс 2 841 решение Drex с confidence ≥ 0.7.
- 🤫 Нужны именно векторы Kanon-2; подавайте одно решение за раз и сохраняйте порядок предложений.
💪 Пример
from roles import RoleTagger, split_sentences_v2
sentences = split_sentences_v2(text)
roles, probs = RoleTagger().predict(sentences, vectors)
# vectors: Kanon-2, shape (len(sentences), 1024)
Подробнее
5-fold CV: accuracy .791, macro-F1 .715; на отдельном тесте — accuracy .784, macro-F1 .692.Issue — редкий класс (1.7%), precision около .58 и recall около .67; аргументные классы часто путаются.
Нужны векторы Kanon-2; обучение и тесты только на английском, французские решения не проверялись.
Это research artefact, а не юридическая консультация.








Комментарии