Привет!
Надеемся, что в Новогодние праздники многие из Вас отлично отдохнули. Но, каникулы закончились. Пора вернуться к машинному обучению и анализу данных. С 25 января мы запускаем третий набор Школы Данных «Билайн».
В прошлом посте мы обещали вам более детально рассказать, чему мы учим на наших занятиях по анализу текстов. В данном посте мы данное обещание исполняем.
Кстати, если вы уже активно занимаетесь анализом и обработкой текстов и хотите попробовать себя, рекомендуем поиграться с задачей The Allen AI Science Challenge на Kaggle=) и заодно поучаствовать в DeepHack, хакатоне по анализу текстов и построению ответных систем.
Про то, чему мы учим на наших занятиях по обработке текстов дальше.
Автоматическая обработка текстов – это область с высоким порогом вхождения: чтобы сделать интересное бизнес-предложение или принять участие в соревновании по анализу текстов, например, в SemEval или Диалоге, необходимо разбираться в методах машинного обучения, уметь пользоваться специальными библиотеками для обработки текстов, чтобы не программировать с нуля рутинные операции, и иметь базовые представления о лингвистике.
Поскольку рассказать обо всех задачах обработки текстов и тонкостях их решения в рамках нескольких занятий невозможно, мы сконцентрировались на самых основных задачах: токенизации, морфологическом анализе, задаче выделения ключевых слов и словосочетаний, определению сходства между текстами.
Токенизация (от английского слова tokenization) – это процесс разбиения текста на предложения и на слова. Задача токенизации ошибочно может показаться тривиальной на первый взгляд.
На самом деле, понятие слова или токена – элемента текста – размыто: например, название города New York, формально, состоит из двух отдельно стоящих слов. Разумеется, для любой разумной обработки нужно считать эти два слова одним токеном и не обрабатывать их по одиночке.
Кроме того, точка – не всегда конец предложения, в отличии от вопросительного и восклицательного знаков. Точки могут быть частью аббревиатуры или записи числа.
Если не углубляться в теорию, а относится к токенизации с практической точки зрения, как к абсолютно необходимой, но не самой увлекательной задаче, то разумнее всего использовать комбинированные токенизаторы, которые разбивают текст на слова по правилам, а для разбиения на предложения используют алгоритмы бинарной классификации: каждую точку классификатор относит либо к положительному классу (точка является концом предложения), либо к отрицательному (точка не является концом предложения). Аналогичным образом классификатор обращается и с восклицательным и вопросительным знаком.
К счастью, реализовывать с нуля эти алгоритмы слушателям школы не пришлось: все они реализованы в Natural Language Toolkit, библиотеке для обработки текстов на Python.
Морфологический анализ (англ. Part of speech tagging) заключается в определению морфологических свойств каждого слова: к какой части речи относится слово, если слово – существительное, то в каком числе оно стоит (а также каков его род и падеж, если речь идет о русском языке), если слово – глагол, то каково его время, вид, лицо, залог, и так далее.
Определить часть речи слова не так просто из-за морфологической омонимии: разные слова могут иметь совпадающие формы, то есть, являться омонимами. Например, в предложении “Его удивил простой солдат” целых два омонима: простой и солдат.
В NLTK реализованы и такие умные морфологические анализаторы, которые умеют определять часть речи в зависимости от контекста, и простые морфологические словари, которые для каждого слова возвращают его самый частотный разбор.
Задача выделения ключевых слов и словосочетаний слабо формализуема: под ключевыми словами и словосочетаниями обычно понимают слова и словосочетания, которые отражают тематическую специфику текста.
В силу размытости определения существуют десятки, если не сотни, подходов к выделению ключевых слов и словосочетаний. Мы рассматриваем некоторые из них:
- использование методов машинного обучения для выделения ключевых слов и словосочетаний. Предполагается, что существует коллекция текстов, в которой ключевые слова и словосочетания выделены экспертами. Тогда мы можем обучить классификатор выделять ключевые слова и словосочетания по такой размеченной коллекции.
- выделение ключевых слов и словосочетаний по морфологическим шаблонам. Если размеченной коллекции текстов нет, то можно предположить, что ключевые слова и словосочетания должны быть грамматически осмысленными: например, ключевые слова – это существительные, а словосочетания – пары слова вида существительное + существительное или прилагательное + существительное.
- выделение ключевых биграмм (пар слов) по статистическим мерам связности. Под статистическими мерами связности обычно понимают либо меру взаимной информации пары слов w1, w2 (англ. pointwise mutual information) и ее производные, заимствованные из теории информации, либо статистические тесты о независимости двух событий “встретилось w1” и “встретилось w2”. Существенное ограничение такого подхода заключается в том, что он применим только для пар слов.
- выделение ключевых слов и словосочетаний по мерам контрастности. Допустим, что мы собрали 10 статей из Википедии про разных питонов – языки программирования, фильмы, аттракционы. Задача заключается в поиске слов наиболее специфичных для данного текста, а не для всей коллекции в целом. Для решения этой задачи оценивают контрастность слова или словосочетания по сравнению со всей остальной коллекцией. Одна из самых популярных мер контрастности называется tf–idf. Она состоит из двух частей: tf – это частота слова в рассматриваемом тексте, а idf – величина, обратная количеству документов, в которых слово содержится. Использование меры tf–idf позволяет узнать, например, что самое важное слово в тексте про Питон-аттракцион – это горки.
Облако ключевых слов и словосочетаний, построенное по “Алисе в стране Чудес"
Использование tf–idf не ограничивается задачей извлечения ключевых слов и словосочетаний. Другое применение tf–idf – это вычисление сходства между текстами. Если каждый текст из коллекции представить вектором tf–idf слов, в него входящих, то сходство между двумя текстами можно будет определить как косинус между двумя такими векторами в многомерном пространстве слов. Такое косинусное сходство между двумя текстами можно использовать в качестве расстояния для кластерного анализа.
Deep Learning подход к обработке текстов: структура данных word2vec:
Помимо классических методов обработки текстов, о которых мы рассказали выше, в последнее время набирает популярность структура данных word2vec, разработанная компанией Google и использующая подход глубокого обучения (Deep Learning). С помощью нее можно немного поиздеваться над своим
У читателя тут же возникает вопрос: и что теперь с этим делать? Вот перечень самых простых задач, которые после можно решать по щелчку пальца:
- Например, в задаче классификации текстов, можно для каждого документа подсчитать средний вектор входящих в него слов, тем самым получив не самое плохое (но и не самое лучшее) признаковое описание. После чего решив классическую задачу машинного обучения (задачу классификации) мы научимся классифицировать документы
- Определение опечаток в тексте — делается с помощью «скалярного произведения» — предлагаем читателям на досуге подумать, как именно
- Кластеризация слов (которую, кстати, также можно применить для задачи классификации текстов)
- Решение задачи «найди лишнее слово»
И это далеко не полный перечень задач, которые решаются с помощью этой структуры данных word2vec. Более подробно обо всех применениях и тонкостях настройки мы и рассказываем на наших занятиях.
Это была лишь вводная часть такой сложной и многогранной науки как Natural Language Processing (обработка естественного языка). На наших занятиях мы также рассматриваем множество задач автоматической обработки текстов применимых в том числе на русских корпусах (русских текстах).
Это особенно актуально, т.к. на сегодняшний момент множество вендоров на рынке предлагают решения, протестированные на англо-корпусах и единого решения «купил и поставил» не существует — приходится для каждой задачи разрабатывать продукт практически с нуля.
Примеры применения текстовой аналитики:
Среди применений анализа естественного языка на сегодняшний день одними из самых известных примеров является мониторинг упоминаний каких-либо объектов и анализ отношения к ним в СМИ и соц. сетях. Не секрет, что Интернет ежедневно генерирует огромное количество текстовой информации — новости, пресс-релиза, блоги, не говоря уже о социальных сетях. Поэтому даже сама задача сбора и хранения такой информации, не говоря уже о переработке является отдельным бизнесом. Отдельную ценность представляют именно методы обработки текстов, в особенности мониторинг упоминаний в текстах отношения к конкретному объекту или компании.
Наверняка, многие из Вас замечали, что если Вы напишете что-либо в социальной сети об известном бренде, а еще лучше — упомяните его тегом, то с немалой вероятностью Вам придет ответ. Разумеется, сам ответ пока пишут люди (хотя и в этом анализ естественного языка делает большой прогресс), но вот классификацию самого текста вашего обращения (негативный, нейтральный, позитивный) делают умные алгоритмы. Это и есть классическая задача Sentiment Analysis, которую мы подробно разбираем на занятиях, однако, у которой есть огромное количество подводных камней.
Тем не менее, решим по-сути только эту задачу — некоторые компании делают на этом неплохой бизнес. Например, компании анализирующие сообщения в социальных сетях и находящие лидеров мнений (это довольно популярная задача из области теории графов, которую мы также рассматриваем на наших лекциях).
Также набирает популярность задача построения ботов, диалоговых роботов, в приложениях для обмена сообщениями. Подобные боты могут отвечать на вопросы клиентов, с помощью них клиенты могут управлять доступными им услугами компании, покупать новые продукты или услуги. Подробнее про ботов в мессенджерах можно почитать, например, здесь.
Как Вы наверное заметили, на сегодняшний день задач анализа обработки естественного языка очень много — и, решив хотя бы одну из них, можно построить целый бизнес.
Для всех интересующихся анализом текстов рекомендуем пройти одноименный курс на Coursera — на наш взгляд, один из самых полезных курсов по автоматической обработке текстов. Если же у Вас есть желание побольше попрактиковаться и порешать задач — добро пожаловать в Школу Данных Билайн, третий набор которой стартует уже 25 января.
Автор: ВымпелКом (Билайн)