# Команда FPL
- Andrey <b>F</b>rolov <img src="https://i.imgur.com/M3TIU4E.png" style="background:none; border:none; box-shadow:none;">anfroloff
- Sergey <b>P</b>arshukov <img src="https://i.imgur.com/M3TIU4E.png" style="background:none; border:none; box-shadow:none;">serjeeon
- Andrey <b>L</b>avrentiev <img src="https://i.imgur.com/M3TIU4E.png" style="background:none; border:none; box-shadow:none;">lavrik33
<!--
Каждая команда должна подготовить рассказ о своем решении на 3-5 минут. Пример создания слайдов https://hackmd.io/s/slide-example
-->
<style>
.reveal {
font-size: 30px;
}
</style>
---
## Предобработка текстов
- load() – загрузка набора данных fetch_20newsgroups
- clean() – удаление 'From:', 'Re:', 'Subject:',.., замена «-» и «\n» на пробел, очистка текста от не букв, удаление двойных пробелов
- pos_tag() – определение частей речи (nltk.pos_tag), создание словаря
- clean_pos() – очистка текста от всего, кроме существительных, прилагательных, глаголов и наречий
- lemmatize() – лемматизация (WordNetLemmatizer)
- dict_frequency() – словарь с частотами слов в тексте (в итоге не использовали)
---
## Обучение эмбеддингов
- Использовали библиотеку fasttext
- Обучали эмбеддинги двумя способами: cbow и skipgram
---
## Логика загадывания слова
- Запрашивали 100 ближайших соседей
- Применяли create_word_list() из тетрадки Александра
- Выдавали n_words слов
- Идея: сортировать слова по встречаемости в наборе данных (популярные поднимать выше)
---
## Логика отгадывания слова
- Сделали корзину ранее названных слов: добавляли слова при ответе на guess, чистили - когда в запросе guess приходило одно слово
- Запрашивали [200 + размер корзины] ближайших соседей
- Фильтровали по nltk.metrics.distance.edit_distance > 2 (как в тетрадке Александра)
- Удаляли слова, которые были в корзине ранее названных
- Выдавали n_words слов
- Идея: сортировать слова по встречаемости в наборе данных (популярные поднимать выше)
---
## Валидация созданного решения
- Экспортировали эмбеддинги и любовались ими в 3D (https://projector.tensorflow.org/)
- Локально запускали игры (первое время, до общих прогонов). Игроков создавали из комбинаций моделей с разными параметрами
---
## Любование эмбеддингами

---
## Любование эмбеддингами

---
## Любование эмбеддингами

---
## Локальные запуски игры
<img width="600" src="https://i.imgur.com/d1rHMnd.png" style="background:none; border:none; box-shadow:none;">
---
## Наши модели
* model cbow(dim=50, epoch=120, wordNgrams=3)
* model skipgram(dim=50, epoch=120, wordNgrams=3)
---
## Проба двух моделей на Heroku (08.12)
<table style="width:100%">
<tr>
<th><img width="500" src="https://i.imgur.com/I8InVS7.jpg" style="background:none; border:none; box-shadow:none;"></th>
<th><img width="500" src="https://i.imgur.com/DzZHI8U.jpg" style="background:none; border:none; box-shadow:none;"></th>
</tr>
</table>
---
## Выбор игрока на финал
|Game date|Explain model|Guess model|Score explain|Score guess|Place|
| -------- | -------- | -------- | -------- |-------- |-------- |
|11.12|cbow|cbow|**146**|133|1|
|12.12|skipgram|skipgram|126|**141**|1|
|13.12|cbow|skipgram|107|150|4|
|final|cbow|skipgram|1640|1801|2|
---
## Деплой сервиса с моделью
- Какой вариант деплоя сервиса вы выбрали?
* ver.1: Heroku (512MB RAM) - хватало для одной модели, но периодически не хватало памяти
* ver.2: AWS Lightsail (2GB RAM) - хватало для двух моделей, но обнаружилась утечка памяти за 2 дня до финала, из-за чего сервер падал после ~500 запросов
* ver.3: AWS Lightsail (8GB RAM) - взяли для финала, чтобы не разбираться с утечкой памяти
---
## Деплой сервиса с моделью
- С какими сложностями вы столкнулись?
* Настройка доступа извне, статический ip был недоступен
* То, что работает при самостоятельном тестировании, может не работать в нужный момент (heroku нестабилен)
* Установка fasttext
* Утечка памяти
- Какие полезные выводы можно сделать, чтобы запомнить их на будущее?
Нужны спец. навыки: администрирование, linux, мониторинг потребляемых ресурсов, отладка кода
{"metaMigratedAt":"2023-06-15T02:31:08.057Z","metaMigratedFrom":"YAML","title":"Как мы играли в шляпу","breaks":true,"description":"View the slide with \"Slide Mode\".","slideOptions":"{\"theme\":\"white\",\"transition\":\"slide\"}","contributors":"[{\"id\":\"e0bc91de-98f7-46f8-a3a9-852912833a93\",\"add\":49,\"del\":0},{\"id\":\"4606b10a-3940-4dff-ae74-9c1ea645d4c4\",\"add\":11117,\"del\":7488},{\"id\":\"c6e85817-3bf1-4fbf-8def-f56ad1526009\",\"add\":836,\"del\":174}]"}