Для данного семинара Вам потребуется ноутбук task3_cnn_postag.ipynb.
Чтобы запустить ноутбук с семинара на своем компьютере:
1) Cклонируйте репозиторий курса:
git clone https://github.com/Samsung-IT-Academy/stepik-dl-nlp.git
2) В терминале выполните команду:
pip install -r requirements.txt
3) Запустите ноутбук:
ipython notebook
Чтобы запустить ноутбук на Google Colab:
1) Скачайте ноутбук (вкладка Github, затем прописываете адрес репозитория):
2) Запустите ноутбук.
3) Не забудьте выполнить команду git clone из первой (закомментированной) ячейки, чтобы выкачать на colab библиотеку dlnlputils
Ноутбуки также работают и на Kaggle (следуйте комментариям в ячейках ноутбука).
Ссылка на репозиторий со всеми материалами курса и инструкцией по запуску: https://github.com/Samsung-IT-Academy/stepik-dl-nlp
Видео проигрыватель загружается.Воспроизвести видеоВоспроизвестиБез звукаТекущее время 0:00/Продолжительность 3:09Загрузка: 0.00%0:00Тип потока ОНЛАЙНSeek to live, currently behind liveОНЛАЙНОставшееся время -3:09 1xСкорость воспроизведения2x1.75x1.5x1.25x1x, выбрано0.75x0.5xГлавыГлавыОписанияОтключить описания, выбраноСубтитрынастройки субтитров, откроется диалог настройки субтитровСубтитры выкл., выбраноЗвуковая дорожкаPicture-in-PictureПолноэкранный режимThis is a modal window.Начало диалоговго окна. Кнопка Escape закроет или отменит окноТекстColorБелыйЧерныйКрасныйЗеленыйСинийЖелтыйПурпурныйГолубойTransparencyПрозрачностьПолупрозрачныйФонColorЧерныйБелыйКрасныйЗеленыйСинийЖелтыйПурпурныйГолубойTransparencyПрозрачностьПолупрозрачныйПрозрачныйОкноColorЧерныйБелыйКрасныйЗеленыйСинийЖелтыйПурпурныйГолубойTransparencyПрозрачныйПолупрозрачныйПрозрачностьРазмер шрифта50%75%100%125%150%175%200%300%400%Стиль края текстаНичегоПоднятыйПониженныйОдинаковыйТеньШрифтПропорциональный без засечекМоноширинный без засечекПропорциональный с засечкамиМоноширинный с засечкамиСлучайныйПисьменныйМалые прописныеСбросить сбросить все найстройки по умолчаниюГотовоЗакрыть модальное окноКонец диалогового окна.
Всем привет! Сегодня мы попробуем на практике разобраться, как применять свёрточные нейросети к задачам обработки текста. Разбираться мы будем на примере задачи определения частей речи слов, по-английски она называется "POS-tagging" (part of speech tagging). Зачем эта задача нужна и в чём сложности — мы увидим в процессе семинара. Ну что ж, поехали! Вначале мы импортируем нужные нам библиотеки — это стандартный набор: scikit-learn, torch, наша библиотечка для курса (dlnlputils), а также библиотечка pyconll — она нам потребуется для загрузки корпуса. Итак, первый шаг — это скачать данные: обучающую и тестовую выборку. В этом семинаре мы будем использовать размеченный корпус, который называется "SynTag Rus". Этот корпус был размечен руками, лингвистами, и в нём содержится разметка по частям речи, по нормальным формам слов, синтаксическая разметка. Он предназначен для того, чтобы настраивать и проверять методы лингвистического анализа текстов, а именно — морфологического разбора и синтаксического разбора. Этот корпус выложен в открытый доступ на githib, мы просто скачиваем. Далее, мы загружаем эти файлики. Разметка в этом корпусе представлена в формате CoNLL — это достаточно распространённый формат для того, чтобы хранить аннотированные деревья и разную лингвистическую разметку. Он используется не только в этом корпусе — он достаточно популярный. Давайте возьмём пару первых предложений и посмотрим, как выглядит разметка для задачи определения частей речи слов. На экране вы видите два предложения вместе с настоящими тэгами частей речи. Предложения разделены пустой строкой, то есть первое предложение — это, по сути, просто заголовок: "анкета", "точка". И мы видим, что "анкета" — это существительное, а "точка" получила тэг "PUNCT", то есть — пунктуация. Второе предложение гораздо длиннее, и в нём для каждого токена проставлены тэги частей речи. Давайте посчитаем пару статистик по нашему корпусу. В первую очередь нас интересует наибольшая длина предложения и наибольшая длина токена. Также, давайте выведем несколько первых предложений для того, чтобы посмотреть, правильно ли загрузились данные, и вообще — понять, какого они характера. Решать задачу определения части речи мы будем с помощью свёрточных нейросетей, причём будем использовать нейросети, которые принимают на вход номера отдельных символов — то есть они работают не на уровне целых токенов а на уровне символов. Это вполне оправдано, потому что часть речи во многом определяется структурой слова, наличием суффиксов, окончаний определённого вида... Поэтому, если бы мы работали на уровне отдельных токенов, то мы бы просто не могли анализировать структуру слов, нам бы приходилось просто запоминать, что такое-то слово — это существительное, другое слово это просто глагол... Поэтому следующий этап обработки корпуса — это построение словаря символов.
К сожалению, у нас пока нет статистики ответов на данный вопрос,
но мы работаем над этим.