NLP Model HW
В этом домашнем задании вы будете работать с корпусом Harry Potter and the Action Prediction Challenge. Корпус собран из фанфиков о Гарри Поттере и состоит из двух частей: 1) сырые тексты, 2) фрагменты текстов, описывающих ситуацию, в которой произнесено заклинание.Корпус описан в статье: https://arxiv.org/pdf/1905.11037.pdfDavid Vilares and Carlos Gómez-Rodríguez. Harry Potter and the Action Prediction Challenge from Natural Language. 2019 Annual Conference of the North American Chapter of the Association for Computational Linguistics. To appear.Код для сбора корпуса находится в репозитории: https://github.com/aghie/hpac . Корпус можно скачать по инструкции из этого репозитория, но для экономии времени авторы задания уже скачали и подготовили данные к работе.Ссылки на собранный корпус:Сырые тексты: Токенизированные тексты в нижнем регистре: train-test-dev: Части 1, 2 задания должны быть выполнены на полных текстах (сырых или предобработанных -- на ваше усмотрение), Часть 3 – на разбиение на тестовое, отладочное и обучающее множества. Тестовое множество должно быть использовано исключительно для тестирования моделей, обучающее и отладочное – для выбора модели и параметров.В статье и репозитории вы найдете идеи, которые помогут вам выполнить домашнее задание. Их стоит воспринимать как руководство к действию, и не стоит их копировать и переиспользовать. Обученные модели использовать не нужно, код для их обучения можно использовать как подсказку. ПРАВИЛА Домашнее задание выполняется индивидуально.Домашнее задание сдается в системе Anytask, куда можно попасть через инвайт.Домашнее задание оформляется в отчета в ipython-тетрадке.Отчет должен содержать: нумерацию заданий и пунктов, которые вы выполнили, код решения, и понятное пошаговое описание того, что вы сделали. Отчет должен быть написан в академическом стиле, без излишнего использования сленга и с соблюдением норм русского языка.Не стоит копировать фрагменты лекций, статей и Википедии в ваш отчет.Плагиат и любое недобросоветсное цитирование приводит к обнуление оценки. Часть 1. [1 балл] Эксплоративный анализ Найдите топ-1000 слов по частоте без учета стоп-слов.Найдите топ-10 по частоте: имен, пар имя + фамилия, пар вида ''профессор'' + имя / фамилия.[бонус] Постройте тематическую модель по корпусу HPAC.[бонус] Найдите еще что-то интересное в корпусе (что-то специфичное для фанфиков или фентези-тематики) Часть 2. [2 балла] Модели представления слов Обучите модель представления слов (word2vec, GloVe, fastText или любую другую) на материале корпуса HPAC.Продемонстрируйте, как работает поиск синонимов, ассоциаций, лишних слов в обученной модели.Визуализируйте топ-1000 слов по частоте без учета стоп-слов (п. 1.1) с помощью TSNE или UMAP (https://umap-learn.readthedocs.io). Часть 3. [6.5 баллов] Классификация текстов Задача классификации формулируется так: данный фрагмент фанфика описывают какую-то ситуацию, которая предшествует произнесению заклинания. Требуется по тексту предсказать, какое именно заклинание будет произнесено. Таким образом, заклинание - это фактически метка класса. Основная мера качества – macro 1. Обучите несколько классификаторов и сравните их между собой. Оцените качество классификаторов на частых и редких классах. Какие классы чаще всего оказываются перепутаны? Связаны ли ошибки со смыслом заклинаний?Используйте фрагменты из множества train для обучения, из множества dev для отладки, из множества test – для тестирования и получения итоговых результатов.[1 балл] Используйте fastText в качестве baseline-классификатора.[2 балла] Используйте сверточные сети в качестве более продвинутого классификатора. Поэкспериментируйте с количеством и размерностью фильтров, используйте разные размеры окон, попробуйте использовать -max pooling.[2 балла] Используйте рекуррентные сети в качестве альтернативного продвинутого классификатора. Поэкспериментируйте с количеством и размерностью слоев и другими гиперпараметрами.[1.5 балла] Попробуйте расширить обучающее множество за счет аугментации данных. Если вам понадобится словарь синонимов, можно использовать WordNet (ниже вы найдете примеры).[бонус] Используйте результат max pooling'а как эмбеддинг входного текста. Визуализируйте эмбеддинги 500-1000 предложений из обучающего множества и изучите свойства получившегося пространства.[бонус] Используйте ваш любимый классификатор и любые (честные) способы повышения качества классификации и получите macro 1 больше 0.5. Часть 4. [0.5 балла] Итоги Напишите краткое резюме проделанной работы. Читали ли вы сами Гарри Поттера или фанфики о нем и помогло ли вам знание предметной области в выполнении домашнего задания? Бонусная часть. [2 балла] Skip-Gram Negative Sampling Самостоятельно реализовать и обучить модель Skip-Gram Negative Sampling. Продемонстрировать качество полученных представлений на конкретный примерах.
Other