Вам удалось извлечь какую-нибудь полезную информацию из рис. 11.1? Вероятно, нет. Мы понимаем, что облака слов – отличный маркетинговый материал, но мы не их фанаты и не рекомендуем их использовать даже в качестве инструмента визуализации, поскольку анализировать частоту встречаемости слова в тексте по размеру шрифта гораздо сложнее, чем по длине столбика гистограммы.
Каждый идентификатор называется токеном. Набор токенов из всех документов – словарем.
Разумеется, ваши текстовые данные будут содержать не один документ, поэтому мешок слов может стать очень большим. Каждое уникальное слово и вариант написания станет новым токеном. Вот как будет выглядеть таблица, в каждой строке которой содержится предложение (комментарий, отзыв о продукте и так далее).
Для необработанного текста:
– Это предложение является очень большим мешком слов.
– Это является большим мешком с продуктами.
– Это предложение состоит из двух слов.
Мешок слов будет выглядеть так, как показано в табл. 11.1, где точки данных – количество того или иного слова в предложении.
Табл. 11.1. Преобразование текста в числа методом «мешка слов». Числа обозначают количество того или иного слова (токена) в соответствующем предложении (документе)
Глядя на табл. 11.1, называемую матрицей «документ – термин» (один документ в строке, один термин в столбце), становится понятно, что базовая текстовая аналитика может сводиться к подсчету количества повторений каждого из слов (самое популярное слово – «это») и определению предложения, содержащего максимальное количество токенов (первое предложение). Хотя приведенный пример не особенно интересен, именно так рассчитывается базовая сводная статистика для документов.
Скорее всего, вы также заметили некоторые недостатки в табл. 11.1 (и в облаке слов!). По мере добавления новых документов количество столбцов в таблице будет увеличиваться, поскольку вам придется добавлять новый столбец для каждого нового токена. Кроме того, в результате этого таблица станет разреженной, то есть заполненной нулями, потому что каждое отдельное предложение будет содержать лишь несколько слов из словаря.
Стандартный способ решения этой проблемы – удалить такие слова-заполнители, как «и», «но», «что», «или», «это» и так далее, которые сами по себе не добавляют смысла. Это так называемые стоп-слова. Также принято удалять знаки препинания и цифры, преобразовывать все символы в нижний регистр и применять стемминг, то есть отбрасывать суффиксы и окончания слов, что позволяет сопоставлять такие слова, как продукты и продуктов, с одной и той же основой «продукт-», а слова читать, читаю, читает – с основой «чита-». Более продвинутый аналог стемминга – так называемая лемматизация, которая позволяет сопоставлять слова «хороший», «лучше», «лучший» со словом «хороший». В этом смысле лемматизация «умнее» стемминга, но занимает гораздо больше времени.
Подобные корректировки позволяют значительно уменьшить размер словаря и упростить процесс анализа. На рис. 11.2 показано, как этот процесс выглядит для одного предложения.
Глядя на рис. 11.2, становится понятно, в чем сложность анализа текста. Процесс преобразования текста в числа отфильтровал эмоциональную составляющую, контекст и порядок слов. Если вам кажется, что это повлияет на результаты любого последующего анализа, то вы правы. И в данном случае нам еще повезло, что в тексте отсутствуют орфографические ошибки, представляющие дополнительную проблему для специалистов по работе с данными.
Рис. 11.2. Преобразование текста в мешок слов
Использование метода «мешка слов», доступного в свободном программном обеспечении и изучаемого на курсах по текстовой аналитике, привело бы к получению одинакового результата при числовом кодировании следующих двух предложений, несмотря на очевидные различия в их смысле:
1. Джордан любит хот-доги, но ненавидит гамбургеры[109].
2. Джордан ненавидит хот-доги, но любит гамбургеры.
Люди понимают разницу между этими двумя предложениями, а модель «мешка слов» – нет. Однако не спешите списывать ее со счетов. Несмотря на свой примитивный принцип, мешок слов может оказаться весьма полезным при обобщении разрозненных тем, которые мы рассмотрим в следующих разделах.