├── .gitignore ├── LICENSE └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | pip-wheel-metadata/ 24 | share/python-wheels/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | MANIFEST 29 | 30 | # PyInstaller 31 | # Usually these files are written by a python script from a template 32 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 33 | *.manifest 34 | *.spec 35 | 36 | # Installer logs 37 | pip-log.txt 38 | pip-delete-this-directory.txt 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | .nox/ 44 | .coverage 45 | .coverage.* 46 | .cache 47 | nosetests.xml 48 | coverage.xml 49 | *.cover 50 | *.py,cover 51 | .hypothesis/ 52 | .pytest_cache/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | target/ 76 | 77 | # Jupyter Notebook 78 | .ipynb_checkpoints 79 | 80 | # IPython 81 | profile_default/ 82 | ipython_config.py 83 | 84 | # pyenv 85 | .python-version 86 | 87 | # pipenv 88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 91 | # install all needed dependencies. 92 | #Pipfile.lock 93 | 94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 95 | __pypackages__/ 96 | 97 | # Celery stuff 98 | celerybeat-schedule 99 | celerybeat.pid 100 | 101 | # SageMath parsed files 102 | *.sage.py 103 | 104 | # Environments 105 | .env 106 | .venv 107 | env/ 108 | venv/ 109 | ENV/ 110 | env.bak/ 111 | venv.bak/ 112 | 113 | # Spyder project settings 114 | .spyderproject 115 | .spyproject 116 | 117 | # Rope project settings 118 | .ropeproject 119 | 120 | # mkdocs documentation 121 | /site 122 | 123 | # mypy 124 | .mypy_cache/ 125 | .dmypy.json 126 | dmypy.json 127 | 128 | # Pyre type checker 129 | .pyre/ 130 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Sergei Averkiev 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # A Dive into Natural Language Processing 2 | 3 | ![](https://i.imgur.com/GTH36GV.png) 4 | 5 | ⭐ [градиент обреченный](https://t.me/doomgrad) — телеграм канал про машинное обучение. 6 | 7 | ## 1. Лекция. Обзор современного машинного обучения 8 | 9 | Расскажу про основные домены в DS, в каком состоянии они сейчас находятся и какие задачи сейчас актуальны на рынке (в ритейле, банках, промышленности, ИБ и т.д.). 10 | 11 | _Upd. 09.10.2021_ 12 | 13 | 🎬 https://www.youtube.com/watch?v=LT8QJcOFrwo 14 | 15 | 🗨️ https://docs.google.com/presentation/d/1YFy-Ia7qwkiQp8nlHk7__JIFeB-dAnzI 16 | 17 | **✨ Основные виды данных** 18 | 19 | - Табличные данные и временные ряды 20 | - Видео и звук 21 | - Картинки 22 | - Текстовые данные 23 | 24 | **✨ Типичные задачи ML** 25 | 26 | - Forecasting 27 | - Anomaly detection 28 | - Voice recognition 29 | - Text to Speech 30 | - Video captioning 31 | - Object detection 32 | - Segmentation 33 | - Style transfer 34 | - Image generation 35 | - Noise reduction 36 | - Super Resolution 37 | - Machine translation 38 | - NER 39 | - Relation extraction 40 | - Question answering 41 | - Classification (spam, sentiment, etc.) 42 | - Summarization 43 | - Topic modelling 44 | 45 | #### Open Data Science community 46 | 47 | - https://ods.ai 48 | 49 | ## 2. Семинар. Делаем семантический поиск 50 | 51 | Рассмотрим основные инструменты, подходы и терминологию, которые используются в ML/DS. Разберем, как переводить текстовые данные в векторное пространство. Сделаем простой семантический поиск по текстам. Начнем работать с Colab. 52 | 53 | _Update 16.10.2021_ 54 | 55 | 🎬 https://www.youtube.com/watch?v=VJTXBDHpsus 56 | 57 | ⚡ https://colab.research.google.com/drive/1sBavnRdQTR7NDZDgLwv6_yVnu_UY_PL2?usp=sharing 58 | 59 | **✨ Понятия и термины** 60 | 61 | - Tokenization 62 | - Lemmatization 63 | - Stemming 64 | - Distributional semantics 65 | - Embedding 66 | - Word2Vec 67 | - GloVe 68 | - fastText 69 | 70 | ## 3. Лекция. Векторное представление текста. Embeddings. 71 | 72 | Базовые подходы и техники, с которых начинается решение прикладных задач и часто же ими и заканчивается. Разберем основные алгоритмы. Статистические и нейросетевые подходы по переводу текстов в векторное пространство. Word2Vec. 73 | 74 | _Update 24.10.2021_ 75 | 76 | 🎬 https://www.youtube.com/watch?v=OV_QM_BuAhU 77 | 78 | 🗨️ https://docs.google.com/presentation/d/162aedK5-nubUV-Z59zQ5zMW5nnLyB8Gu 79 | 80 | **✨ Понятия и термины** 81 | 82 | - One-hot encoding 83 | - Bag of Words 84 | - N-grams 85 | - TF-IDF 86 | - Distributional semantics 87 | - Pointwise mutual information 88 | - Matrix factorization 89 | - SVD 90 | - Word2Vec 91 | - Subsampling 92 | - Negative sampling 93 | 94 | ## 4. Семинар. Классификация текстов. Transfer learning 95 | 96 | _Upd. 30.10.2021_ 97 | 98 | Применим базовые подходы для решения задач. Узнаем, что такое transfer learning и как начать просто использовать предобученные модели через _huggingface_. 99 | 100 | 🎬 https://www.youtube.com/watch?v=uRAsurPHycw 101 | 102 | ⚡ https://colab.research.google.com/drive/1xtkx4pj3v7lNKXJvD63nu4YGn7YFlAlC?usp=sharing 103 | 104 | **✨ Понятия и термины** 105 | 106 | - Neural nets 107 | - Text classification 108 | - Metrics 109 | - Transfer learning 110 | - Pretrainig 111 | - Huggingface 112 | - Interview questions 113 | 114 | **⭐️ Полезные ссылки** 115 | 116 | - [Теоретические вопросы по анализу данных для общего развития и подготовки к интервью](https://github.com/alexeygrigorev/data-science-interviews/blob/master/theory.md) 117 | - [Видео от Deep Learning School (МФТИ) про полносвязные сети и механизм обучения](https://www.youtube.com/watch?v=O0nGKKFyYT4) 118 | - [Заметка от Евгения Соколова про метрики классификации](https://github.com/esokolov/ml-course-msu/blob/master/ML15/lecture-notes/Sem05_metrics.pdf) 119 | 120 | ## 5. Лекция. Переломный момент в ML 121 | 122 | _Upd. 10.11.2021_ 123 | 124 | Как повлиял механизм внимания на развитие ML. Расскажу про трансформеры, которые сейчас являются SOTA во многих областях. 125 | 126 | 🎬 https://www.youtube.com/watch?v=6b0MXyHbILs 127 | 128 | 🗨️ https://docs.google.com/presentation/d/1rgKZaypYtjunoptDZkvoc4JDXCcNgtlU 129 | 130 | **✨ Понятия и термины** 131 | 132 | - Механизм внимания (Attention, Self-attention) 133 | - RNN 134 | - LSTM 135 | - Encoder 136 | - Decoder 137 | - Transformer 138 | 139 | ## 6. Семинар. Знакомимся с PyTorch и PyTorch Lightning. Пишем первую нейросеть. 140 | 141 | Поговорим, что такое PyTorch и для чего он нужен. Потренируем сеть на MNIST'е. Отрефакторим в PyTorch Lightning, чтобы было проще работать с моделью. 142 | 143 | 🎬 https://www.youtube.com/watch?v=Oc-DX3xwyFA 144 | 145 | ⚡ https://colab.research.google.com/drive/1K1hz93ceM926vyEs0Ouxbizu458GDHd0 146 | 147 | **✨ Понятия и термины** 148 | 149 | - PyTorch 150 | - Tensor 151 | - Optimizer 152 | - Loss function 153 | - PyTorch Lightning 154 | - DataModule 155 | - TensorBoard 156 | 157 | ## 7. Лекция. Машинный перевод 158 | 159 | _Update 20.11.2021_ 160 | 161 | Машинный перевод — движущая сила NLP. Поговорим про его развитие, про современные модели, про проблемы, связанные с их обучением. 162 | 163 | 🎬 https://youtu.be/8JqWdACYKns 164 | 165 | 🗨️ https://docs.google.com/presentation/d/1QtWcCkZQ6RqgsXohPy3Pm-t3iyIwAj5l 166 | 167 | **✨ Понятия и термины** 168 | 169 | - Machine translation 170 | - BLEU, NIST, METEOR 171 | - Джорджтаунский эксперимент 172 | - ALPAC report 173 | - Parallel corpora 174 | - RBMT. Rule-based machine translation 175 | - EBMT. Example-based machine translation 176 | - SMT. Statistical machine translation 177 | - NMT. Neural machine translation 178 | 179 | **⭐️ Ссылки** 180 | 181 | - [Awesome Machine Translation](https://github.com/maidis/awesome-machine-translation) 182 | - [OpenNMT](https://opennmt.net/) 183 | - [Лекция от МФТИ по машинному переводу](https://www.youtube.com/watch?v=6HibilFua-U) 184 | - [The first-ever multilingual model to win WMT](https://ai.facebook.com/blog/the-first-ever-multilingual-model-to-win-wmt-beating-out-bilingual-models/) 185 | - [mT5](https://github.com/google-research/multilingual-t5) 186 | - [ruT5, ruRoBERTa, ruBERT](https://habr.com/ru/company/sberbank/blog/567776/) 187 | 188 | 189 | ## 8. Семинар. Машинный перевод 190 | 191 | _Upd. 26.11.2021_ 192 | 193 | Сделаем русско-английский переводчик. Зафайнтюним модель mT5, которую можно адаптировать под множество прикладных задач. Про это тоже поговорим. 194 | 195 | 🎬 https://www.youtube.com/watch?v=vVnYib1MiYY&t=732s 196 | 197 | ⚡ https://colab.research.google.com/drive/1KEGej1rIWBGpljZSMCjj7_MFv3c7DG3L 198 | 199 | **✨ Понятия и термины** 200 | 201 | - Машинный перевод 202 | - T5 203 | - mT5 204 | - Fine-tuning 205 | - Multitask model training 206 | 207 | --- 208 | 209 | _tg: [@averkij](https://t.me/averkij)_ _[@doomgrad](https://t.me/doomgrad)_ 210 | --------------------------------------------------------------------------------