Программа лекций и презентации по курсу «Обработка естественного языка»
- Лекция 1. Введение и классические алгоритмы (презентация)
- Понятия токенизации, сегментации, лемматизации и стемминга.
- Формальные аналитические грамматики и утилита Томита-парсер.
- TF-iDF, скрытые марковские модели и алгоритм Витерби.
- Лекция 2. Линейная ячейка и Word2vec (презентация)
- Перцептрон, полносвязные сети и функции активации.
- Векторное представление слов.
- Модель Word2vec.
- Лекция 3. Рекуррентные ИНС и модели памяти (презентация)
- Идея рекуррентной сети и её особенности.
- Нейронная сеть Элмана.
- Модель Seq2seq.
- Долгая краткосрочная память.
- Лекция 4. Механизм внимания (презентация)
- Идея механизма внимания.
- Подходы Богданова и Луонга.
- Внутреннее внимание.
- multi-head attention и позиционное кодирование.
- Лекция 5. Трансформер (презентация)
- Преимущества Трансформера и его назначение.
- Схема кодера.
- Схема декодера.
- Типы внутреннего внимания в модели Трансформера.
- Лекция 6. BERT и GPT (презентация)
- Описание модели BERT.
- Идея fine tuning.
- Описание семейства GPT.
- Сравнение BERT и GPT между собой.
- Лекция 7. Прикладные аспекты использования LLM (презентация)
- Построения промтов для генеративных моделей.
- Голосовые ассистенты.
- Тесты и оценка качества решения языковых задач.
- Лекция 8. Изображение и звук (презентация)
- Диффузионный процесс и Stable diffusion.
- Мел-кепстральные коэффициенты.
- Синтез речи и модель Tacotron2.
Вопросы для устного зачёта
На устном зачёте будет сгенерирован билет, в который войдут три случайные темы из списка ниже:
- Типы задач обработки естественного языка; распространённые варианты предобработки текста; трудности в их реализации.
- Формальные аналитические грамматики; вероятностные модели; СММ; алгоритм Витерби.
- Перцептрон; линейная ячейка; уравнение линейной ячейки; функция активации; порядок обучения нейронной сети.
- Векторное представление слов; алгебраические операции над словами; модель Word2vec.
- Рекуррентная сеть; модель Элмана; уравнения модели Элмана для последовательностей и для вектора скрытого состояния; недостатки рекуррентных сетей.
- Модель Seq2seq; кодер и декодер; задачи для Seq2seq; долгая краткосрочная память.
- Идея механизма внимания; внимание Богданова и Луонга; внутреннее внимание; multi-head attention.
- Трансформер; позиционное кодирование; преимущества Трансформера; взаимосвязь кодера и декодера Трансформера.
- BERT, GPT и прикладные вопросы использования генеративных моделей.
- Идея генерации изображений и речи; диффузионная модель; MFCC; Tacotron2.
Задания к практическим работам
Практическая работа «Предобработка текста »
Требуется прочитать текст на русском языке из файла и вывести все пары соседних слов, которые:
- имеют имена существительные или имена прилагательные на первом или втором месте;
- совпадают по роду, числу и падежу.
Все пары следует выводить в виде лемм. Например, если исходная пара имела вид «необычайных университетов», то должна быть выведена пара «необычайный университет».
Практическая работа «Векторное представление слов»
- Полезная презентация с подсказками (вектора для слов можно брать тут)
Используя import gensim
, необходимо реализовать вычисление десяти самых близких по смыслу слов,
находящихся в окрестности от результата операций сложения и вычитания в векторной модели.
Каждому студенту преподавателем будет дана пара слов и необходимо найти такую линейную комбинацию исходных слов, чтобы в результате вычислений заданная пара попадала в первую десятку.
Практическая работа «Анализ на основе RNN»
Необходимо провести повторный анализ текста, который использовался в работе «Предобработка текста »,
но с использованием import rnnmorph
и без использования import pymorphy3
.
Если полученные результаты различаются, необходимо пояснить, почему так вышло.
Практическая работа «Маскирование слов»
Используя модель BERT и её функцию Masked language modelling, требуется реализовать вычисление десяти самых вероятных слов, на месте любого умышленно пропущенного слова в корректно составленном предложении на русском языке.
Каждому студенту преподавателем будет дана пара слов, и требуется построить окружение, т. е. само возможное предложение на русском языке с пропущенным словом, для которого в вариантах подстановки пара слов будет встречаться в первой десятке. Слова должны совпадать с точностью до словоформы (слово «домами» не может подходить под требуемое слово «домом»).
Практическая работа «Генерация текста»
Используя модель RuGPT от Сбера, необходимо реализовать возможность генерации текста по заданному промпту.
Допускается использование как старой модели rugpt3large_based_on_gpt2
, так и новой ruGPT-3.5-13B
.
Каждому студенту преподавателем будет дана пара слов,
и требуется подобрать промпт таким образом, чтобы выданная пара слов встречалась бы в сгенерированном тексте с учётом порядка и с учётом словоформ (как в предыдущей работе).
Допускается использовать обе модели, но пара слов преподавателем подбирается на rugpt3large_based_on_gpt2
.
Ограничений на значения параметров нет (даже на длину генерируемого текста),
но подобранный промпт не должен содержать искомые слова ни в одной из их словоформ.
Функция generate
для практической работы «Генерация текста»:
def generate(
model, tok, text,
do_sample=True, max_length=100, repetition_penalty=5.0,
top_k=5, top_p=0.95, temperature=1,
num_beams=None,
no_repeat_ngram_size=3
):
input_ids = tok.encode(text, return_tensors="pt")
print(model.generate.__globals__['__file__'])
out = model.generate(
input_ids,
max_length=max_length,
repetition_penalty=repetition_penalty,
do_sample=do_sample,
top_k=top_k, top_p=top_p, temperature=temperature,
num_beams=num_beams, no_repeat_ngram_size=no_repeat_ngram_size
)
return list(map(tok.decode, out))