Files
FEMA/README.md
ModelHub XC 9365dd2266 初始化项目,由ModelHub XC社区提供模型
Model: KK100000000000000/FEMA
Source: Original Platform
2026-07-10 16:22:17 +08:00

178 lines
9.0 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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)
Модель учитывает жанровые особенности музейного анонса как **малоформатного гибридного текста** (новостное сообщение + рекламный текст), включая:
- краткость (15 предложений)
- отсутствие узкой терминологии
- наличие императивных конструкций и оценочной лексики
- высокую информационную насыщенность
## Базовая модель и архитектура
- **Архитектура:** 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
![image](https://cdn-uploads.huggingface.co/production/uploads/66e60387c3b3a128bdab903e/Su0pJxUvUb5bDkpaoPUqv.png)