Pull to refresh

Школа Данных «Билайн», каникулы закончились

Reading time7 min
Views6.6K


Привет, Хабр!

Надеемся, что в Новогодние праздники многие из Вас отлично отдохнули. Но, каникулы закончились. Пора вернуться к машинному обучению и анализу данных. С 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 января.
Tags:
Hubs:
-1
Comments6

Articles

Information

Website
moskva.beeline.ru
Registered
Founded
Employees
1,001–5,000 employees
Location
Россия
Representative
Bee_brightside