Вокруг нас — огромные объемы текстовых данных в электронном виде, в них — человеческие знания, эмоции и опыт. А еще — спам, который выдает себя за полезную информацию, и надо уметь отделять одно от другого. Люди хотят общаться с теми, кто не знает их родной язык. А еще — управлять своим мобильником/телевизором/умным домом голосом. Все это обеспечивает востребованность и бурное развитие методов Natural Language Processing (NLP).
2 июня на платформе Stepik стартует мой онлайн-курс «Введение в обработку естественного языка». Это совершенно новый для меня формат, а еще это первый онлайн-курс по прикладной лингвистике, который фокусируется на обработке русского языка, имеющихся для этого данных и ресурсах. 10 лекций курса посвящены базовыми лингвистическими инструментами и популярным приложениям; важная составляющая курса — пять практических заданий.
Мотивация
Когда мы готовили русское издание книги «Введение в информационный поиск», многие коллеги были скептичны — тот, кому это действительно надо, прочтет по-английски бесплатную электронную версию. После выхода учебника я читал курс на его основе в УрФУ, ШАДе, ИТМО и СПбГУ и убедился, что наличие перевода очень помогает.
В сети доступно очень много учебных материалов по NLP. Только на Coursera было три отличных курса от известных ученых в этой области (например, последний — от Драгомира Радева). Но в основном они ориентированы на обработку английского языка. В случае NLP потребность в «локализованных» учебных материалах еще заметнее, чем в информационном поиске. Во-первых, есть особенности языка, которые влияют на автоматическую обработку. Во-вторых, что важнее, методы существенно зависят от имеющихся инструментов и аннотированных данных. И, наконец, владение языком может сильно влиять на разрабатываемые методы и их оценку (например, сейчас я занимаюсь автоматическим анализом юмора, и с русскоязычными данными все намного веселее, чем с английскими ;)
К тому же мне давно хотелось попробовать себя в формате МООК.
Структура и содержание курса
Курс состоит из 10 лекций; четыре из них посвящены инструментам — морфологическому и синтаксическому анализу, языковым моделям и моделированию смысла слов, а шесть — популярным приложениям — информационному и вопросно-ответному поиску, автоматическому реферированию, анализу тональности, извлечению информации и машинному переводу. Структура каждой лекции более-менее стандартна — постановка задачи, описание методов, обзор доступных инструментов и наборов данных, оценка. В курсе минимум математики и алгоритмов, упор сделан на методы и их оценку.
В один онлайн-курс вместить все интересные темы очень сложно, к тому же не во всех областях я разбираюсь настолько хорошо, чтобы включать их в курс. Например, я лишь очень кратко рассказываю о недавних успехах глубинного обучения в задачах обработки языка. В курс не вошли такие популярные темы, как, например, классификация текстов, исправление опечаток или диалоговые системы. Курс имеет практическую направленность, в нем почти нет лингвистической теории и глубокого анализа языковых явлений.
Важная часть курса — это пять практических заданий. Слушателям предлагается самостоятельно реализовать методы морфологического анализа, определения тональности текста, автоматического реферирования документов, извлечения именованных сущностей и машинного перевода. Каждая задача допускает реализацию простого решения «для зачета» (за исключением машинного перевода, это задача «со звездочкой»). Очень надеюсь, что слушатели будут рассматривать простые решения как «отправную точку» для улучшений и последовательного приближения к «золотому стандарту». В курсе не будет дедлайнов — каждый может выбрать комфортный темп обучения.
Для кого этот курс?
Целевая аудитория курса — все, кто хочет получить общее представление о дисциплине и практические навыки решения задач обработки естественного языка. Желательно, чтобы слушатели обладали базовыми знаниями линейной алгебры, теории вероятностей, математической статистики и машинного обучения, а также навыками программирования (необходимы для решения практических заданий). Специальных лингвистических знаний не требуется, достаточно будет «школьного уровня». Надеюсь, что курс может также заинтересовать (некомпьютерных) лингвистов в качестве обзора автоматических методов обработки языка.
Замечания о подготовительном этапе
Содержательные выводы и оценки можно будет делать только на основе обратной связи от слушателей, а пока я могу поделиться некоторыми впечатлениями о процессе подготовки.
Мало кому нравится свой голос в записи, а уже тем более — проблемы с дикцией и мимикой/жестами, которые становятся такими очевидными. К тому же мне казалось, что на записи я говорю очень мееедленно. Просмотр отснятого материала живо напомнил мне, как примерно 20 лет назад я недолгое время вел программу «SoundTrack» на студенческом радио и осознал свою профнепригодность в этой сфере. Перфекционистам без актерского/дикторского опыта это дается сложно. Я постарался сконцентрироваться на содержании и смотрел записи на скорости x1.7.
В процессе записи я осознал, что в отсутствие непосредственной реакции избегаю говорить о нюансах и тонкостях: эти детали обычно связаны с моими интересами/опытом, и я не уверен, что это всем интересно/нужно. Наверное, это побочный эффект массовых курсов, о котором я раньше не задумывался. А еще сложно шутить на камеру :)
Отдельной проблемой была разработка практических заданий с автоматической проверкой. Все задачи курса — «в стиле kaggle», т.е. данные на входе — данные на выходе. Не для всех интересных задач получилось найти «золотые стандарты» для автоматической проверки. Тем не менее, нам удалось составить пять актуальных и реалистичных задач (например, для задачи на автоматического реферирования пришлось подготовить специальный набор данных). Возможно, подготовку стоило начинать именно с задач, а не лекций.
Благодарности
Создание онлайн-курса поддержано грантом Благотворительного фонда В. Потанина. Stepik не только разместил у себя курс, но и взял на себя запись и монтаж видео. Кирилл Мищенко подготовил данные для практических заданий и реализовал код автоматической проверки. В задачах использовались данные, предоставленные НКРЯ, Яндексом, imhonet, OpenCorpora. Данные для автоматической оценки рефератов подготовили Екатерина Пирожок, Ирина Ермолина и Михаил Казарин. В тестовом режиме задания решали Дмитрий Кузнецов и Ольга Анненкова. В процессе подготовки курса советами и рекомендациями мне очень помогли Максим Халилов, Алексей Зобнин, Виктор Бочаров, Ольга Митренина. Основная часть заимствованных слайдов принадлежит Dan Jurafsky и Philipp Koehn. Всем большое спасибо!
Автор: pbraslavski