Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Russian Glossing Fine-Tuning

Это проект по дообучению модели polygloss на нетривиальных примерах русского языка для задачи автоматического глоссирования.

🔍 Описание

  • Мы собрали собственный датасет из 1200 сложных русскоязычных предложений:
    📂 ars667/russian_gloss (HuggingFace Datasets)

  • Дообучили модель google/byt5-base на основе архитектуры Polygloss.
    📦 ars667/russ_gloss_model (HuggingFace Models)

  • Собрали датасет из особо сложных ситуаций в русском: падежи, несуществующие слова, уменьшительно-ласкательные... 📂 ars667/russian_gloss (HuggingFace Datasets)

  • Дообучили модель на нём и получили модель, отлично понимающую русский:

    📂 [ars667/russian_gloss (HuggingFace Datasets)](https://huggingface.co/dataset s/ars667/russian_gloss_v2)

📊 Результаты

Оценка на валидационной выборке из 100 нетривиальных русскоязычных предложений:

Метрика Исходная модель Наша дообученная модель
chrF++ 51.97 100.00
BLEU 13.95 100.00
Exact Match 0% 38%

Выборка была специально составлена из лингвистически сложных конструкций, не покрываемых типичными тренировочными данными.


⚙️ Установка и запуск

1. Установка Conda

Miniconda

2. Подготовка окружения

git clone https://github.com/ars/rus_gloss.git
cd rus_gloss

conda env create -f environment.yml
conda activate russ_gloss

Убедитесь, что у вас установлен conda.


3. Инференс

Готовый файл inference.ipynb содержит пример использования модели. Для запуска:

jupyter notebook inference.ipynb

Либо минимальный пример в .py:

from transformers import T5ForConditionalGeneration, ByT5Tokenizer
import torch

transcription = "Им приятно было вместе работать."
translation = "They enjoyed working together"
lang = "Russian"
metalang = "English"
is_segmented = False

prompt = f"""Provide the glosses for the following transcription in {lang}.

Transcription in {lang}: {transcription}
Transcription segmented: {is_segmented}
Translation in {metalang}: {translation}

Glosses:
"""

model = T5ForConditionalGeneration.from_pretrained("ars667/russ_gloss_model_v2")
tokenizer = ByT5Tokenizer.from_pretrained("google/byt5-base", use_fast=False)

inputs = tokenizer(prompt, return_tensors="pt")
outputs = model.generate(**inputs, max_length=1024)
decoded = tokenizer.batch_decode(outputs, skip_special_tokens=True)

print(decoded[0])

📂 Структура проекта

.
├── environment.yml         # Зависимости conda
├── inference.ipynb         # Jupyter-ноутбук для инференса
├── README.md               # Описание проекта
└── polygloss               # файлы от LECSlab для обучения модели

About

🔤 Fine-tuning ByT5/Polygloss for Russian interlinear glossing: cases, diminutives, neologisms. chrF++ 51.97 → 100.00

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages