178 lines
9.0 KiB
Markdown
178 lines
9.0 KiB
Markdown
|
|
---
|
|||
|
|
language:
|
|||
|
|
- en
|
|||
|
|
- fi
|
|||
|
|
base_model:
|
|||
|
|
- google/mt5-small
|
|||
|
|
pipeline_tag: text-generation
|
|||
|
|
---
|
|||
|
|
# FEMA (finnish_english_museum_announcements) - Multilingual Museum Announcement Generator
|
|||
|
|
---
|
|||
|
|
language:
|
|||
|
|
- en
|
|||
|
|
- fi
|
|||
|
|
pipeline_tag: text2text-generation
|
|||
|
|
tags:
|
|||
|
|
- museum
|
|||
|
|
- announcement
|
|||
|
|
- mT5
|
|||
|
|
- finnish
|
|||
|
|
- english
|
|||
|
|
- low-resource
|
|||
|
|
license: apache-2.0
|
|||
|
|
datasets:
|
|||
|
|
- KK1000000000000000/museum-announcements-multilingual
|
|||
|
|
metrics:
|
|||
|
|
- bleu
|
|||
|
|
- rouge
|
|||
|
|
- perplexity
|
|||
|
|
library_name: transformers
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# mT5-small для генерации музейных анонсов (английский и финский)
|
|||
|
|
|
|||
|
|
## Описание модели
|
|||
|
|
|
|||
|
|
Данная модель — дообученная версия **`google/mt5-small`** для автоматической генерации музейных анонсов на **английском и финском языках**. Модель создана в рамках магистерской диссертации "Обучение языковой модели на материале текстов музейных анонсов" по профилю "цифровая лингвистика" (РГПУ им. А. И. Герцена, 2026).
|
|||
|
|
|
|||
|
|
Анонс генерируется в структурированном виде, содержащем:
|
|||
|
|
- заголовок (Title)
|
|||
|
|
- дату (Date)
|
|||
|
|
- основной текст (Text)
|
|||
|
|
|
|||
|
|
Модель учитывает жанровые особенности музейного анонса как **малоформатного гибридного текста** (новостное сообщение + рекламный текст), включая:
|
|||
|
|
- краткость (1–5 предложений)
|
|||
|
|
- отсутствие узкой терминологии
|
|||
|
|
- наличие императивных конструкций и оценочной лексики
|
|||
|
|
- высокую информационную насыщенность
|
|||
|
|
|
|||
|
|
## Базовая модель и архитектура
|
|||
|
|
|
|||
|
|
- **Архитектура:** Transformer (encoder-decoder)
|
|||
|
|
- **Базовая модель:** [google/mt5-small](https://huggingface.co/google/mt5-small) (300 млн параметров)
|
|||
|
|
- **Целевые языки:** английский (en), финский (fi)
|
|||
|
|
|
|||
|
|
## Данные обучения
|
|||
|
|
|
|||
|
|
### Оригинальные данные
|
|||
|
|
- **Объём:** 275 текстов (180 английских, 95 финских)
|
|||
|
|
- **Источники:** официальные сайты музеев Tate Modern, Saatchi Gallery, The National Gallery (англ.); Ateneum, Kiasma, HAM (фин.)
|
|||
|
|
- **Тексты были систематизированы по единой структуре:** Query ‘запрос для генерации’, Text_id ‘уникальный идентификатор текста’, Title ‘заголовок анонса’, Date ‘дата проведения мероприятия’, Text ‘полный текст анонса’, Source ‘название музея-источника’, Category ‘тематическая категория’ (перевод мой – К. П.). Также были выделены 10 тематических категорий, которые отражают все виды мероприятий, встречающихся в анонсах на сайтах музеев. Категории разделены на три группы: музейные мероприятия (Exhibition/Näyttely ‘вытавка’, Workshop/Taidepaja ‘мастер-класс’ (перевод мой – К. П.)), жанры искусства (Art ‘изобразительное искусство’, Photography ‘фотоискусство’, Video art ‘видео-арт’, Cinematography ‘киноискусство’, Music ‘музыка’, Dance art ‘танцевальное искусство’ и формы представления арт-объектов (Installation ‘инсталляция’, Performance ‘перформанс’
|
|||
|
|
|
|||
|
|
### Синтетические данные (2-й этап обучения)
|
|||
|
|
- **Объём:** 500 английских + 800 финских текстов
|
|||
|
|
- **Метод:** контрастное обучение с автоматической системой вознаграждения (LUG-система)
|
|||
|
|
|
|||
|
|
## Методология обучения
|
|||
|
|
|
|||
|
|
Обучение проходило в **два этапа**:
|
|||
|
|
|
|||
|
|
### Этап 1 – Адаптация (supervised fine-tuning)
|
|||
|
|
- Методы: градиентный спуск, параметрически-эффективная настройка **LoRA**, языковые маркеры (`[EN]`, `[FI]`)
|
|||
|
|
- Гиперпараметры (после оптимизации):
|
|||
|
|
- learning rate = 1e-5
|
|||
|
|
- температура = 0.3
|
|||
|
|
- эпохи = 100
|
|||
|
|
- batch size = 2
|
|||
|
|
|
|||
|
|
### Этап 2 – Оптимизация (contrastive learning + reward system)
|
|||
|
|
- Генерация синтетического датасета с помощью модели 1-го этапа
|
|||
|
|
- Автоматическая оценка каждого текста по трём параметрам (**LUG-система**):
|
|||
|
|
- **Language** – грамматическая и лексическая правильность
|
|||
|
|
- **Usable** – структурная корректность (наличие заголовка, даты, основного текста, длина)
|
|||
|
|
- **Good** – стилистическое качество (оценочная лексика, разнообразие, сходство с эталоном)
|
|||
|
|
- Контрастное дообучение на отфильтрованных примерах (оценка ≥24 из 30 – положительные, ≤17 – отрицательные)
|
|||
|
|
|
|||
|
|
## Оценка качества
|
|||
|
|
|
|||
|
|
### Автоматические метрики (на тестовой выборке)
|
|||
|
|
|
|||
|
|
| Язык | BLEU (avg) | ROUGE-L F1 | Perplexity |
|
|||
|
|
|-----------|------------|------------|------------|
|
|||
|
|
| Английский| 0.87 | 0.95 | 0.10 |
|
|||
|
|
| Финский | 0.80 | 0.76 | 0.50 |
|
|||
|
|
|
|||
|
|
### Экспертная оценка
|
|||
|
|
Среднее расхождение между автоматической оценкой (LUG-система) и оценкой музейных сотрудников составило **1.2 балла из 30 (4%)**, что подтверждает практическую пригодность системы.
|
|||
|
|
|
|||
|
|
## Как использовать модель
|
|||
|
|
|
|||
|
|
### Установка зависимостей
|
|||
|
|
### Version_1
|
|||
|
|
```bash
|
|||
|
|
pip install transformers torch sentencepiece
|
|||
|
|
from transformers import MT5ForConditionalGeneration, MT5Tokenizer
|
|||
|
|
|
|||
|
|
model_name = "KK100000000000000/FEMA"
|
|||
|
|
|
|||
|
|
tokenizer = MT5Tokenizer.from_pretrained("./FEMA-final")
|
|||
|
|
model = MT5ForConditionalGeneration.from_pretrained("./FEMA-final")
|
|||
|
|
|
|||
|
|
# перенос на GPU, если доступен
|
|||
|
|
import torch
|
|||
|
|
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
|||
|
|
model.to(device)
|
|||
|
|
|
|||
|
|
def generate_announcement(text, language="en"):
|
|||
|
|
"""
|
|||
|
|
Генерирует музейный анонс.
|
|||
|
|
language: "en" или "fi"
|
|||
|
|
text: запрос, например "Announcement of the exhibition"
|
|||
|
|
"""
|
|||
|
|
input_text = f"[{language.upper()}] {text}"
|
|||
|
|
inputs = tokenizer(input_text, return_tensors="pt", truncation=True, max_length=64)
|
|||
|
|
|
|||
|
|
inputs = {k: v.to(device) for k, v in inputs.items()}
|
|||
|
|
|
|||
|
|
outputs = model.generate(
|
|||
|
|
**inputs,
|
|||
|
|
max_length=128,
|
|||
|
|
num_beams=5,
|
|||
|
|
temperature=0.7,
|
|||
|
|
do_sample=True,
|
|||
|
|
early_stopping=True,
|
|||
|
|
no_repeat_ngram_size=2
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
generated = tokenizer.decode(outputs[0], skip_special_tokens=True)
|
|||
|
|
|
|||
|
|
# Примеры использования
|
|||
|
|
print("=== Английский ===")
|
|||
|
|
print(generate_announcement("Announcement of the exhibition", "en"))
|
|||
|
|
print("\n=== Финский ===")
|
|||
|
|
print(generate_announcement("Ilmoitus taidepajasta", "fi"))
|
|||
|
|
|
|||
|
|
### Version_2
|
|||
|
|
```bash
|
|||
|
|
pip install transformers torch sentencepiece
|
|||
|
|
|
|||
|
|
## Использование
|
|||
|
|
```python
|
|||
|
|
from transformers import GPT2LMHeadModel, GPT2Tokenizer
|
|||
|
|
|
|||
|
|
model = GPT2LMHeadModel.from_pretrained("./FEMA-final")
|
|||
|
|
tokenizer = GPT2Tokenizer.from_pretrained("./FEMA-final")
|
|||
|
|
tokenizer.pad_token = tokenizer.eos_token
|
|||
|
|
|
|||
|
|
def generate_announcement(text, language="en"):
|
|||
|
|
input_text = f"{language}: {text} [SEP]"
|
|||
|
|
inputs = tokenizer(input_text, return_tensors="pt", max_length=256, truncation=True)
|
|||
|
|
outputs = model.generate(**inputs, max_new_tokens=150, num_beams=5)
|
|||
|
|
return tokenizer.decode(outputs[0], skip_special_tokens=True).replace(input_text, "").strip()
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Датасеты
|
|||
|
|
### Version_1
|
|||
|
|
- ENG.xlsx
|
|||
|
|
- FI.xlsx
|
|||
|
|
- announcement_examples_reward_0-6_20251201_184730
|
|||
|
|
### Version_2
|
|||
|
|
- ENG.tsv
|
|||
|
|
- FI.tsv
|
|||
|
|
- English_Announcements.tsv
|
|||
|
|
- Finnish_Announcements.tsv
|
|||
|
|
|
|||
|
|
### "LUG"-СИСТЕМА ОЦЕНИВАНИЯ
|
|||
|
|
### интерфейс: https://huggingface.co/spaces/KK100000000000000/lug-museum-evaluator/tree/main
|
|||
|
|

|