[БЕЗ_ЗВУКА] Мы начинаем неделю, посвященную работе с текстами.
Мы обсудим, в чем особенность таких данных, как извлекать из них признаки,
какие бывают постановки задач на текстах, и разберем несколько прикладных кейсов.
Текстовые данные встречаются повсюду.
По сути интернет — это огромная неструктурированная коллекция,
состоящая из текстов в разных форматах.
С текстами можно делать много чего.
Например, можно пытаться по тексту записи в блоге предсказать,
какой рейтинг получит эта запись, сколько лайков ей поставят.
И получается, что вы можете оценить успешность записи в блоге еще до того,
как опубликуете ее.
Или, например, по тексту можно пытаться определить его эмоциональный окрас,
то есть понять, он положительный или отрицательный.
Это может понадобиться, если вы анализируете отзывы на банк,
которые приходят от клиентов.
Если вы обнаруживаете отзыв, который отрицательный, то можете быстро
предпринять какие-то действия и повысить лояльность этого клиента.
Или, скажем, можно пытаться определять тематику научной статьи,
которая загружается в электронную библиотеку,
и на основе текста этой статьи понять, к какой же предметной области она относится.
И либо автоматически отнести ее в эту категорию,
либо предложить автору уже готовые варианты выбора.
Можно решать и задачи кластеризации.
Например, можно пытаться группировать тексты новостей по сюжету.
Об одном и том же сюжете пишут разные новостные сайты, и было бы здорово
группировать эти новости, если они на самом деле об одном и том же.
Также можно пытаться, скажем, искать похожие слова.
Допустим, есть слова «кресло» и «стул».
Они немножко разные по смыслу, но говорят примерно об одном и том же.
Для компьютера это просто набор символов, и вы не можете с помощью простых
алгоритмов понять, что эти слова — практически синонимы.
Но при этом хотелось бы уметь понимать это как-то на основе данных.
О таких задачах мы тоже будем говорить.
Есть и более сложные постановки задач на текстах.
Например, можно пытаться выделять все имена, которые находятся в тексте.
Это называется задачей выделений именованных сущностей.
Или например, по большому тексту построить краткую аннотацию,
которая покрывает ключевые моменты, обсуждаемые в этом тексте.
Еще одна постановка — это вопросно-ответные системы,
которые сейчас становятся все более и более популярны.
Цель состоит в том, чтобы построить некоторую модель, которая принимает на
вход вопрос в произвольной форме и пытается найти на него ответ,
причем ответ она строит по какому-то большому неструктурированному корпусу,
например, по Википедии.
Еще одна задача — это генерация текстов.
Было бы очень интересно брать, допустим, собрание сочинений Льва Толстого,
и по нему построить некую модель, которая будет генерировать новые тексты,
которые похожи на рассказы Толстого.
Эту задачу уже сейчас пытаются решать, и мы тоже немножко упомянем,
как это можно делать.
Итак, нашей основной задачей будет научиться
использовать текстовые данные в алгоритмах машинного обучения, в алгоритмах, которые
мы уже умеем использовать: в линейных моделях, решающих деревьях, нейросетях.
Основная проблема в том, что текст — это по сути некоторый набор данных,
набор букв переменной длины.
У каждого объекта...
каждый объект может описываться разным количеством символов.
И при этом хочется как-то преобразовать этот текст,
этот набор символов в фиксированное количество признаков.
Как это можно делать?
Давайте разберем пример.
Есть датасет, который называется 20newsgroups,
в котором задача состоит в том, чтобы классифицировать тексты по 20 тематикам.
Давайте посмотрим вот на этот текст.
В нем можно увидеть названия марок автомобилей,
и это сразу же наводит нас на мысль о том, что этот текст — про машины.
При этом на самом деле порядок слов не важен.
Нам важно, что мы увидели некоторые ключевые слова в этом тексте,
и даже не важно, где именно в нем они расположены.
А вот еще один пример.
В этом тексте мы видим некие упоминания политических партий, собраний,
и легко догадаться, что этот текст — про политику.
Опять же, нам не важна структура этого документа.
Важно лишь, какие слова входят в него, и этого нам хватает,
чтобы определить его тематику.
В этом и заключается подход, который называется «мешок слов».
В нем мы не обращаем внимания на порядок слов, и просто кодируем наш текст,
как количество вхождений каждого слова из словаря в этот документ.
Мы будем подробнее обсуждать этот подход в следующих видео.
Оказывается, такой подход очень хорошо себя зарекомендовал и часто используется в
задачах машинного обучения.
Итак, мы с вами обсудили, какие бывают задачи на текстах,
сказали, что главная проблема здесь — это закодировать текст произвольной
длины с помощью некоторого фиксированного количества признаков, и немножко обсудили
подход, который называется «мешок слов», который не обращает внимания на порядок
слов и смотрит лишь на то, какие именно слова входили в документ.
В следующем видео мы поговорим о том, как предобрабатывать тексты перед тем,
как извлекать из них признаки, в частности, о том, как разбивать тексты на
слова и как приводить каждое слово к его начальной форме.