NLP: как стать специалистом по обработке естественного языка
Спрос на людей, разбирающихся в NLP растёт, а предложение за ним не успевает. Разбираемся, что нужно знать специалисту по обработке естественного языка.
Рассказывает Ирина Смазневич
Вместе с развитием сферы Data Science растёт и востребованность в кадрах для этой отрасли. Как же стать специалистом в такой части анализа данных, как обработка естественного языка (Natural Language Processing)?
Кадровый рынок в этой сфере пока не очень большой. Хотя вакансий по Data Science кажется довольно много, задачи NLP встречаются в запросах работодателей достаточно редко. И в основном специалистов по обработке естественного языка ищут компании в крупных городах — Москве, Санкт-Петербурге, Новосибирске, Екатеринбурге. При этом работодателями выступают не только корпорации, но и небольшие коллективы разработчиков и даже стартапы. Так что в сегменте NLP для начинающих специалистов есть определённые перспективы.
Специальности и задачи по обработке естественного языка
Чтобы понять, как стать специалистом по обработке естественного языка, разберёмся сначала, какие задачи решаются в этой области и в каких сферах бизнеса эти решения востребованы.
Язык — это сложная совокупность различных уровней, таких как синтаксис, морфология, семантика, дискурс.
Для каждого уровня выделяются свои специфические задачи. Но на практике чаще всего задействуются несколько или все уровни языка. Например, классическими задачами синтаксиса и морфологии являются токенизация (деление текста на слова) и лемматизация (приведение слова к начальной форме). Есть задачи синтаксического анализа теста (парсинга), извлечения сущностей — например, имён и географических названий. С семантикой связаны задачи тематического моделирования (выделения тем в большой коллекции документов) и определения эмоциональной окраски. Уровень дискурса затрагивает задача суммаризации текста. Машинный перевод задействует все уровни языка. Распознавание и генерация устной речи также относятся к сфере NLP.
Следующий вопрос — кому нужны все эти задачи? Их упоминание можно увидеть в объявлениях о найме во многих сферах бизнеса. В частности, в обработке естественного языка заинтересованы контактные центры, которым требуется оперировать большим потоком входящих запросов: разбивать их на категории, определять темы, автоматически подбирать варианты ответов.
Интернет-магазины тоже ищут таких специалистов, потому что улучшают поиск по своим каталогам, внедряют диалоговые и рекомендательные системы. Есть запрос в сфере маркетинга и PR: исследовать освещение деятельности компании в медиа и отслеживать, какой образ создаётся у аудитории — позитивный или негативный. Таким же образом исследуют отзывы и комментарии в соцсетях.
Во многих сферах бизнеса используются чат-боты, например, они востребованы у банков, которые ищут специалистов по обработке естественного языка для своих собственных разработок.
Кроме таких компаний, которым нужны собственные системы под обслуживание своих бизнес-процессов, специалистов по обработке естественного языка ищут многие IT-компании сектора B2B. Они разрабатывают программные решения для продажи своим клиентам. В частности, независимо от отрасли, компаниям с большим потоком входящих документов и обращений могут быть полезны системы, оптимизирующие работу. Нужно распределять обращения по темам и отделам, выделять наиболее важные и негативные, ускорять перевод на другие языки и улучшать поиск по базе данных компании. Многим средним и крупным компаниями рано или поздно приходится сегментировать клиентскую базу.
Необходимые навыки для специалиста по NLP
Какие навыки нужны, чтобы освоить профессию специалиста по обработке естественного языка?
Нужно понимать, что обработка естественного языка состоит из нескольких компонентов: знаний о языке, знаний по математике и статистике и навыков в программировании. Причём математика и программирование важнее лингвистики.
Есть общие требования, которые работодатели предъявляют к претендентам на вакансии по NLP. К ним относятся: знание математики, теории вероятностей, статистики, знание сфер применимости, понимание плюсов и минусов различных семейств алгоритмов машинного обучения (таких как логистическая регрессия, различные алгоритмы кластеризации, нейронные сети, бустинг, случайный лес).
Специалисту по NLP нужно уметь работать с базами данных и знать SQL. Иногда требуются знания не только реляционных БД и соответствующих инструментов (PostgreSQL, MySQL, MS SQL, Oracle), но и понимание NoSQL-систем (Cassandra, Redis, MongoDB). Может понадобиться знакомство с фреймворками для работы с большими данными и с различными поисковыми движками.
Обязательным условием является знание структур данных.
Следующая категория навыков связана с языком: необходимо представление о морфологическом, графематическом, синтаксическом анализе. Нужно владеть алгоритмами и техниками, специфическими для задач обработки естественного языка, разбираться в таких вещах, как тематическое моделирование, информационный поиск, дистрибутивная семантика.
Какой язык программирования необходимо освоить? Тут нет однозначного ответа. Наиболее часто встречается запрос на Python, реже специалистам по NLP требуется знание R. Для разработки конечных решений программистам чаще всего нужны Java, C#/C++, Scala.
Наиболее часто встречается запрос на Python, реже специалистам по NLP требуется знание R.
Кроме того, есть набор технологий, с которыми нужно уметь обращаться. Это стек технологий Data Science для Python.
Базовые библиотеки для любого аналитика данных — pandas (для работы с данными в табличном виде), numpy (для работы с большими числовыми массивами) и scipy (для вычислений). Для визуализации могут понадобиться библиотеки matplotlib и seaborn. Для машинного обучения требуется знание основной библиотеки scikit-learn и других специфицированных библиотек (например, XGBoost и LGBM для градиентного бустинга). Для задач обработки естественного языка нужно разбираться в содержании специальных библиотек: nltk, StanfordNLP, spacy, gensim, bigartm, word2vec, fasttext.
Нужен опыт построения глубоких нейронных сетей с использованием фреймворков Tensorflow, Keras, PyTorch. И, конечно, желательно уметь работать с инструментами, рассчитанными именно на русский язык, такими как pymystem3, pymorphy — для морфологического анализа, Tomita parser, yargy — для извлечения фактов и сущностей. Кроме того, нужно уметь тестировать методы обработки текстовых данных и знать методики оценки качества моделей.
Конечно, это программа-максимум. В зависимости от конкретных задач работодателя может понадобиться тот или иной язык программирования, тот или иной стек технологий. Плюсом для разработчиков решений NLP является наличие собственных проектов на GitHub, а также сертификатов об участии в Kaggle и других соревнованиях по машинному обучению. Также от претендентов ожидают достаточного уровня английского, но это универсальное требование.
Смотрите также: Знакомство с Kaggle: изучаем науку о данных на практике
Где освоить профессию специалиста по NLP?
В вакансиях по NLP в большинстве случаев требуется профильное образование по информатике, вычислительной математике, физике или связанным областям. Иногда — не ниже магистратуры или специалитета.
Но есть и другие варианты: например, обучение в вузе по специальности «компьютерная лингвистика». Выпускником такой образовательной программы является Полина Казакова, Data Scientist в проекте IRELA, сотрудник Центра анализа больших данных МИСиС. Она занимается разработкой систем анализа данных для различных компаний, то есть как раз обработкой естественного языка.
«Я училась в Высшей школе экономики на программе “Фундаментальная и компьютерная лингвистика”, которая работает в рамках филологического направления, — рассказывает Полина. — Эта программа совмещает в себе теоретическую лингвистику, то есть фундаментальные научные знания о самом языке, и прикладные методы анализа данных, а также программистские навыки. Таким штукам мало где учат в России».
Кроме указанной программы по компьютерной лингвистике ВШЭ (которая также открыта в двух филиалах вуза), в России есть ещё несколько учебных программ по компьютерной лингвистике.
Магистратура по специальности NLP есть в СПбГУ на кафедре информационных систем в искусстве и гуманитарных науках. Несмотря на то, что кафедра относится к гуманитарному факультету, программа «Инженерия гуманитарных знаний» рассчитана на программистов.
В МФТИ на кафедре распознавания изображений и обработки текста факультета инноваций и высоких технологий (ФИВТ) действует магистратура по компьютерной лингвистике. Кафедра была основана в 2006 году компанией ABBYY.
В МГУ на филологическом факультете действуют программы бакалавриата и магистратуры по направлению «Фундаментальная и прикладная лингвистика».
В РГГУ открыта магистратура по этому же направлению с профилем «Фундаментальная и компьютерная лингвистика».
Стоит ли поступать на компьютерную лингвистику ради работы в NLP?
«Сама эта программа по компьютерной лингвистике преследует благую цель: совместить теорию с практикой, — говорит Полина. — У нас были теоретические дисциплины, связанные с синтаксисом, фонетикой, морфологией и прочим, и были попытки ввести точные дисциплины, такие как математический анализ, линейная алгебра, статистика, основы программирования и даже машинного обучения. А машинное обучение, как вы догадываетесь, в последнее время очень активно применяется в обработке естественного языка (хотя и не во всех задачах, кое-где до сих пор обходятся rule-based подходом).
Возвращаясь к программе, кажется, что идея прикольная — столько всего совместить. Но на практике получается, что в одинаковой степени дать два фундаментальных образования в одном не получается, поэтому у нас было очень неплохое фундаментальное лингвистическое образование и… была какая-то математика.
Наверное, этого достаточно для того, чтобы начать работать в области NLP, но дальше всё равно понадобятся более глубокие знания. После окончания бакалавриата я поняла, что мне не хватает фундаментальных знаний из основного курса математики. Поэтому сейчас я, например, самостоятельно занимаюсь матанализом и линейной алгеброй.
Мой совет людям, которые хотят заниматься обработкой естественного языка: идите на техническую специальность и параллельно изучайте какие-то лингвистические штуки, потому что на самом деле узкоспецифические знания о языке очень редко пригождаются в практических задачах машинного обучения. Особенно сейчас, когда есть нейросети, которые на большом наборе хорошо размеченных данных сами выводят все правила, которые лингвисты могли бы составить вручную. Можно сказать, что хорошая квалификация в лингвистике иногда может дать какой-то профит в NLP, но в большинстве случаев скорее нужна хорошая квалификация в машинном обучении. Так считаю не только я, но и мои коллеги-технари».
Идите на техническую специальность и параллельно изучайте какие-то лингвистические штуки
Кто же занимается разметкой текстовых данных для нейросетей и вообще для тренировки моделей машинного обучения?
«Это хороший вопрос. Разметка — это общая боль всех — и лингвистов, и специалистов по машинному обучению и обработке естественного языка», — говорит Полина Казакова. Хорошую разметку достаточного объёма получить непросто, для этого нужны люди, которые вручную будут размечать массив данных. И составлением методологии разметки текста должны заниматься как раз лингвисты. Например, для задачи токенизации они должны сформировать правила деления текста на слова (учитывая сложные случаи типа «диван-кровать», «какой-нибудь», «90-й год»). И после этого можно уже привлечь почти случайных людей, которые будут размечать текст в соответствии с заданными правилами. Кстати говоря, этой задачей — разметкой данных — могут заниматься стажёры, которые хотят дальше развиваться в направлении Data Science/NLP. Время от времени такие вакансии появляются.
Несмотря на всеобщую потребность в выпускниках технических специальностей, иногда в команды программистов и математиков требуются именно эксперты по языку. Полина вспоминает один такой случай: «У компании Samsung есть голосовой помощник, и недавно они начали в России активно набирать на работу именно лингвистов. Они занимаются распознаванием и синтезом речи, и взяли на работу мою однокурсницу — крутого фонетиста-теоретика, при том что у неё не было никакого опыта программирования и она не знала, что такое нейросети. Её взяли из-за специфических лингвистических знаний, но по моему ощущению, это исключительный случай».
Дополнительное образование в сфере NLP
Какое бы базовое образование вы ни получили — лингвистическое или математическое — вы всегда можете обнаружить, что каких-то знаний не хватает, тем более что NLP и Data Science активно развиваются. Как получить дополнительное образование?
Школа анализа данных (ШАД) — программа «Яндекса», обучение по которой работодатели часто упоминают в качестве преимущества потенциального кандидата. Как следует из названия, там даются основы машинного обучения и анализа данных. По формату школа больше похожа на полноценную магистратуру, чем на дополнительное образование. Программа рассчитана на два года, обучение — очное в вечернее время (филиалы есть в Москве, Минске, Екатеринбурге и Нижнем Новгороде) и заочное для иногородних студентов. В ШАД можно бесплатно поступить по конкурсу (что довольно сложно, конкурс большой), а в случае недобора баллов учиться платно — правда, только в Москве и только очно.
Записи лекций ШАД по некоторым предметам доступны для всех желающих. Некоторые из избранных курсов пригодятся будущему специалисту по NLP:
- Курс «Машинное обучение»
- Курс «Алгоритмы и структуры данных поиска»
- Курс «Дискретный анализ и теория вероятностей»
Чтобы дополнить свое образование, можно пройти онлайн-обучение, например, на платформе Coursera.
- Список курсов, рекомендованных НИУ ВШЭ магистрантам по компьютерной лингвистике, среди которых есть курсы по NLP и машинному обучению.
- Natural Language Processing — собственный курс по NLP от НИУ ВШЭ, который активно развивает направление онлайн-обучения.
- Machine Learning with TensorFlow on Google Cloud Platform — специализация (набор связанных курсов), разработанная компанией Google, на платформе Coursera. Входящие туда курсы можно изучать по отдельности, например, Sequence Models for Time Series and Natural Language Processing.
- Text Retrieval and Search Engines и Text Mining and Analytics — курсы, входящие в специализацию Data Mining в рамках программы Master of Computer Science in Data Science (MCSDS) от Иллинойсского университета (США). Курсы можно прослушать независимо.
- Natural Language Processing (NLP) и Speech Recognition Systems — курсы, входящие в программу Microsoft Professional Program in Artificial Intelligence на платформе edX.
- Professional Certificate Program IBM — профессиональная программа от IBM на той же образовательной платформе. Она состоит из 5 курсов: Deep Learning Fundamentals with Keras, Deep Learning with Python and PyTorch, Deep Learning with Tensorflow, Using GPUs to Scale and Speed-up Deep Learning, Applied Deep Learning Capstone Project.
Есть несколько вариантов обучения на российской платформе «Открытое образование». Особенность этой платформы в том, что она создана при участии ведущих российский вузов, все курсы доступны там бесплатно, но при этом есть возможность получить сертификат и зачесть прохождение этих курсов в своём университете. На зарубежных платформах часто курсы можно пройти бесплатно, но за сертификат придётся заплатить.
- «Анализ данных на практике» — курс от МФТИ, на котором кроме прочего рассматривается обработка текстов.
- «Аналитика больших данных» — программа от НИТУ «МИСиС», в рамках которой изучаются многие из требуемых для NLP технологий. Старт её намечен на февраль.
- «Наука о данных и аналитика больших объёмов данных» — обзорный курс от Санкт-Петербургского Политеха, частично посвящённый анализу текста. Запись на этот курс сейчас закрыта, как и на многие другие из приведенных выше, которые уже идут сейчас или недавно завершились. Но можно подписаться на обновления о курсе, чтобы не пропустить следующий набор.