Машинный перевод
Машинный перевод с русского языка на английский стал первым в истории применением NLP. Это произошло в 1954 году. В основе переводчика лежала довольно простая система из всего шести грамматических правил и словаря с 250 записями. Система была специализированной: в качестве предметной области для перевода тогда была выбрана органическая химия. В торжественной обстановке в компьютер на перфокартах вводились предложения вроде «Обработка повышает качество нефти», «Командир получает сведения по телеграфу», и машина выводила их перевод, напечатанный транслитом. Демонстрация была широко освещена в СМИ, а сама технология воспринята как успех. Тем не менее, когда после десяти лет значительных улучшений качества машинного перевода достичь не удалось, инвестирование в эту область было сильно урезано.
С тех пор прошло много лет, но автоматический перевод и сейчас, как вы знаете, далек от идеала. Однако с текстами из некоторых конкретных областей, словарный запас и идиоматические конструкции которых хорошо изучены, машинный перевод работает уже на приличном уровне. К примеру, сегодня он почти безукоризненно справляется с техническими инструкциями.
Существует два подхода к машинному переводу: правиловый и статистический. Добиться хорошего качества с помощью правилового подхода крайне непросто. Язык — сложная и нерегулярная система, он очень плохо поддается описанию с помощью набора правил. Поэтому современные переводчики по большей части работают на основе статистического подхода. Он включает в себя три этапа: сбор данных, обучение моделей и декодирование. Сначала система сравнивает параллельные тексты (например, оригиналы книг и их версии на других языках, переведенные людьми), чтобы создать модель перевода, а затем изучает тексты на конкретном языке, чтобы создать его модель. В итоге, когда обученная система получает запрос на перевод, декодер подбирает наиболее вероятный вариант из модели перевода, проверяет его по модели языка и выдает статистически лучший результат.
Анализ настроений (Sentiment Analysis)
Задача такого анализа — идентифицировать в тексте субъективную информацию. Это может быть, например, мнение о только что вышедшем фильме или вызванное им эмоциональное состояние. Компании используют анализ настроений, чтобы быть в курсе своей репутации. С его помощью легко проверить, довольны ли клиенты товарами или услугами. Анализируя твиты на политические темы, можно даже научиться предсказывать исход выборов. Twitter — невероятно богатый источник данных для анализа настроений. Это легкодоступная, по большей части субъективная информация, появляющаяся в режиме реального времени. А поскольку подавляющая часть твитов еще и снабжается хэштегами, у исследователей отпадает необходимость вручную размечать данные на категории. То есть, например, если мы хотим проанализировать, что пользователи думают о новом альбоме Radiohead, достаточно просто отфильтровать твиты по хэштегам в духе #radiohead и #newalbum.
Наиболее популярная задача анализа настроений называется polarity detection, то есть классифицирование текстов на позитивные, нейтральные и негативные. На первый взгляд, никаких трудностей с решением тут возникнуть не должно:
Тем не менее в анализе настроений есть несколько неочевидных проблем, одна из них — множество значений. Предположим, компания выпустила новую модель телефона. Твит о том, что этот телефон light-weighted (легкий), без сомнений, несет положительный оттенок. Но что, если это слово (а его также можно перевести как «несерьезный», «поверхностный») употребить в отношении, скажем, известного политика или новой книги? Так себе комплимент.
Таким образом, мы сталкиваемся с новой задачей — поиском синонимичных слов и фраз. Сегодня эту проблему успешно решает Word2Vec — технология, которую в 2013 году предложил Томас Миколов из Google.
Word2Vec: превратим слово в вектор
Еще в 1957 году английский лингвист Джон Руперт Ферс сказал: «Лингвистические единицы, встречающиеся в схожих контекстах, имеют близкие значения». Именно по этому принципу сегодня работает Word2Vec. Он собирает статистику по совместному появлению слов в фразах, после чего с помощью нейронных сетей снижает их размерность и выдает на выходе компактные векторные представления слов, в максимальной степени отражающие их отношения в обрабатываемых текстах. Word2Vec охватывает большое количество лингвистических закономерностей. Оказывается, линейные операции над
Вычисляя косинусное расстояние между
Классификация текстов
Как, не читая текст, быстро присвоить ему категорию, отнести его к
Самый простой, но порой очень эффективный способ вытащить из текстов признаки называется Bag-of-Words («мешок слов»). Он заключается в том, что мы характеризуем каждый текст некоторым вектором в пространстве N, где N — количество уникальных слов во всех текстах (словарь). Каждая компонента вектора — это частота употребления конкретного слова в тексте. Этот метод отлично работает для классификации текстов по темам: логично, что, например, тексты о квантовой механике и тексты о поэзии Серебряного века вряд ли будут содержать много одинаковых слов.
Чтобы улучшить качество отбора, можно наравне с «мешком слов» использовать N-граммы (биграммы, триграммы и так далее): так в NLP называют сочетания из вектора N тех слов, которые часто встречаются вместе. Это не обязательно фразеологизмы и популярные словосочетания в духе «точка зрения» или «красное вино». Это любые пары (тройки, четверки, в зависимости от N) слов, которые в данном конкретном тексте часто идут одно за другим. Задачи классификации в NLP не ограничиваются разделением текстов по темам. Аккуратно подбирая признаки, можно по стилю текста угадывать автора произведения, то есть классифицировать тексты по авторам. Автоматическое определение языка — следующий пример классификации, решаемой NLP.
Автоматическое определение языка
Сегодня у нас есть возможность не только автоматически переводить тексты: мы даже можем не указывать, на каком языке написан исходник. Идентификация языка произойдет автоматически и чаще всего корректно:
Но как? Неужели Google-переводчик за секунды пролистывает все словари на всех языках мира, чтобы только в одном из них найти запрашиваемое слово? Тоже вариант, но такой огромный словарь, во-первых, занимает огромное количество памяти, а
Тематическое моделирование: LDA
Представим, что у нас есть огромная база каких-то текстов и мы бы очень хотели разбить их по темам. При этом про сами тексты мы не знаем вообще ничего: ни количество тем, ни сами темы — мы не имеем представления вообще ни о чем. Если в задачах классификации все тексты из обучающей выборки были размечены (то есть мы знали категорию каждого из них), то теперь мы встретились лицом к лицу с задачей кластеризации текстов. Она широко применяется при построении, например, рекомендательных систем: чтобы посоветовать человеку новую статью, нужно знать, какой тематикой он интересовался до этого, то есть тексты из какого кластера он читал. Для решения задачи кластеризации текстов существует сильный инструмент — латентное размещение Дирихле (Latent Dirichlet Allocation, LDA). Эта модель порождающая: она рассматривает каждый текст как смесь тем, где каждое слово может быть порождено одной из тем в этой смеси. Проще говоря, мы сначала кидаем кубик-документ, определяя тему для каждого слова, а потом вытаскиваем слово из соответствующего «мешка».
К примеру, модель может иметь тематики, которые классифицируются как САТrelated (относящиеся к кошкам) и DOGrelated (относящиеся к собакам). Тематика обладает вероятностями генерировать различные слова, такие как «мяу», «молоко» или «котенок», которые можно было бы классифицировать как CAT_related. Слова, не обладающие особой значимостью (к примеру, служебные слова), будут обладать примерно равной вероятностью в различных тематиках.
Что дальше
В 1950-х вышла статья Алана Тьюринга «Computing Machinery and Intelligence», в которой впервые упоминается знаменитый тест Тьюринга. Компьютер проходит этот тест, если может поддержать диалог с человеком на таком уровне, что тот не заподозрит, что разговаривает с машиной. Основной целью NLP можно считать как раз создание такой системы, по сути искусственного интеллекта — системы, которая позволила бы человеку получать необходимую информацию, ничего при этом не программируя, а обращаясь к компьютеру на своем естественном языке. Сегодня мы убедились, что многие подзадачи уже успешно решаются. И хотя вряд ли можно назвать современных чат-ботов разумными, NLP быстро эволюционирует: ранние методы основывались на правиловых подходах, затем задачи стали успешно решаться методами машинного обучения. Нейросети показали еще лучшие результаты, и сегодня специалисты считают, что будущее обработки текстов — за Deep Learning.
Комментарии:
Авторизуйтесь, чтобы оставить отзыв