Векторизация текста Векторизация текста – это процесс конвертации текста в числа. Следует помнить о том, что компьютер не способен обрабатывать слова — только числа, поэтому возникает необходимость в таком преобразовании для обеспечения корректной работы алгоритмов машинного обучения. Начальным этапом векторизации текста является его разбиение на элементы: Токены — текстовые единицы, т.е. слова, словосочетания, предложения и т.п. Чаще всего в качестве токена выбирается слово. Множество токенов образуют словарь. Документы — множества токенов, принадлежащих одной смысловой единице. В качестве документа может выступать предложение или небольшой текст. Корпус — множество всех документов. Таким образом, в процессе векторизации, текст преобразуется в массив – корпус, состоящий из массивов меньшего размера – документов, а элементами документов являются вектора – токены. Можно выделить несколько методов векторизации текста. Самым простым из всех является прямое кодирование. В случае прямого кодирования получается массив, строки которого представляют собой токены корпуса, а столбцы – положение токена в документе. Полученная матрица состоит из двух элементов: 0 и 1, где единица соответствует вхождению слова в документ, а 0 – отсутствию слова в документе. Приведём пример. Рассмотрим четверостишие из поэмы «Руслан и Людмила»: У Лукоморья дуб зелёный; Златая цепь на дубе том; И днём, и ночью кот учёный. Всё ходит по цепи кругом. Будем считать две строфы четверостишия отдельным документом. Для того, чтобы составить словарь токенов данного текста, потребуется привести все слова к инфинитиву и расположить их по алфавиту: «всё», «день», «дуб», «зелёный», «златой», «и», «кот», «кругом», «лукоморье», «на», «ночь», «по», «том», «у», «учёный», «ходит», «цепь». Как правило, несамостоятельные части речи, такие как местоимения, предлоги и союзы, отбрасываются при составлении словаря, однако здесь целесообразно их сохранить в силу компактности текста. Теперь конвертируем текст в числа. Первая строфа содержит 4 слова, вторая – 5 слов. Вектор этого документа будет иметь вид. Номер слова в документе 1 2 3 4 5 6 7 8 9 всё 0 0 0 0 0 0 0 0 0 день 0 0 0 0 0 0 0 0 0 дуб 0 0 1 0 0 0 0 1 0 зелёный 0 0 0 1 0 0 0 0 0 златой 0 0 0 0 1 0 0 0 0 Номер слова в документе 1 2 3 4 5 6 7 8 9 и 0 0 0 0 0 0 0 0 0 кот 0 0 0 0 0 0 0 0 0 кругом 0 0 0 0 0 0 0 0 0 лукоморье 0 1 0 0 0 0 0 0 0 на 0 0 0 0 0 0 1 0 0 ночь 0 0 0 0 0 0 0 0 0 по 0 0 0 0 0 0 0 0 0 том 0 0 0 0 0 0 0 0 1 у 1 0 0 0 0 0 0 0 0 учёный 0 0 0 0 0 0 0 0 0 ходит 0 0 0 0 0 0 0 0 0 цепь 0 0 0 0 0 1 0 0 0 Аналогичным образом закодируем второй документ (третью и четвертую строфу) нашего стихотворения. Получим следующий массив. Номер слова в документе 1 2 3 4 5 6 7 8 9 10 11 всё 0 0 0 0 0 0 1 0 0 0 0 день 0 1 0 0 0 0 0 0 0 0 0 дуб 0 0 0 0 0 0 0 0 0 0 0 зелёный 0 0 0 0 0 0 0 0 0 0 0 златой 0 0 0 0 0 0 0 0 0 0 0 Номер слова в документе 1 2 3 4 5 6 7 8 9 10 11 и 1 0 1 0 0 0 0 0 0 0 0 кот 0 0 0 0 1 0 0 0 0 0 0 кругом 0 0 0 0 0 0 0 0 0 0 1 лукоморье 0 0 0 0 0 0 0 0 0 0 0 на 0 0 0 0 0 0 1 0 0 0 0 ночь 0 0 0 1 0 0 0 0 0 0 0 по 0 0 0 0 0 0 0 0 1 0 0 том 0 0 0 0 0 0 0 0 0 0 0 у 0 0 0 0 0 0 0 0 0 0 0 учёный 0 0 0 0 0 1 0 0 0 0 0 ходит 0 0 0 0 0 0 0 1 0 0 0 цепь 0 0 0 0 0 0 0 0 0 1 0 Таким образом, нами был алгоритма прямого кодирования. закодирован небольшой текст с помощью Методы, предполагающие бинарное кодирование, позволяют обрабатывать текст быстрее, чем те, которые основаны на работе с частотой встречаемости слова или его контекстом. При этом оно характеризуются небольшой величиной потерь, однако игнорирует многие свойства языка. Например, прямое кодирование создаёт громоздкие массивы даже из небольших текстов (как в рассмотренном примере), а другой распростанённый метод – Bag of words не рассматривает положение слова в документе. На данный момент популярными методами векторизации текста являются TFIDF и Word embeddings. Word embeddings – это векторное представление слова. Для вектора вводится размерность, состоящая из смысловой нагрузки слов в тексте. Словам присваиваются числа – ранги слова в подходящем контексте. Затем при помощи методики Word2vec реализуется конечное векторное представление слов и предсказание на основании него. Архитектура Word2vec глобально подразделяется на два вида – Skip-gram и Continuous bad of words. Архитектура вида Skip-gram получает на вход слово и пытается определить для него контекст. Continuous bad of words, в свою очередь, пытается предсказать слово, исходя из его контекста. Таким образом, Word2vec представляет собой мощный инструмент для анализа текстовых данных, который учитывает особенности языка и контекст, в котором используется слово. TF-idf. TF-idf придает больший вес редко встречающимся событиям и меньший вес ожидаемым событиям. TF-idf наказывает часто встречающиеся слова, которые часто появляются в документе, такие как «the», «is», но присваивает больший вес менее частым или редким словам. Формула TF(t) = частота токена t в документе d / количество всех слов в документе d idf(t) = log(Общее количество документов / Номер документа с токеном t) Произведение TF x idf слова показывает, как часто токен (t) встречается в документе и насколько этот токен уникален для всего корпуса документов. Мешок слов (Bag-Of-Words) — представление текста в виде массива, состоящего из отдельных слов и количества их использования. Применяется при анализе естественного языка и в составе алгоритмов компьютерного зрения. Пример представления текста из двух предложений с помощью мешка слов представлен в таблице ниже. Предложение нужна помощь с активация программа ключ для Нужна помощь с активацией программы 1 1 1 1 1 0 0 Нужен ключ для активации программы 1 0 0 1 1 1 1 Итого 2 1 1 2 2 1 1 Результатом представления является словарь в виде уникальных слов и их количества по предложениям и всему тексту в целом. Недостаток мешка слов заключается в том, что с увеличением объёма анализируемого текста происходит рост размерности массива. Каждое уникальное слово добавляет новый столбец. Это создаёт дополнительную сложность при анализе. К тому же, для данного способа представления не важен порядок слов в тексте и грамматические языковые особенности. Это вносит свои ограничения на использование. К примеру, мешок слов будет сложно применим для ряда задач, в которых важен контекст и сочетание слов. Тем не менее, без мешка слов практически невозможно рассчитать основные описательные статистики и проанализировать текст. В некоторых задачах и вовсе основную ценность имеет не количество слов в тексте, а образуемый словарь, содержащий все уникальные значения. При анализе текста мешок слов является подготовительной стадией для подсчёта метрики «tf-idf» и осуществляется после проведения операций токенизации и лемматизации. Задания: Задание 1. Произвести векторизацию текста: Студент всегда прав! Студент не спит – студент отдыхает! Студент не ест – студент восстанавливает силы! Студент не кричит – студент убедительно высказывает свою точку зрения! Студент не забывает – студент не засоряет свою память лишней информацией! Студент не опаздывает – студент задерживается по важным делам! Задание 2. Изучить сайт Word Cloud Generator - WordArt.com Произвести векторизацию любого текста и создать визуализацию (облако слов). Пример: 1. Нажать кнопку CREATE 2. Import 3. Вставить интересующий Вас текст в появившееся окно и нажать Import words. 4. Получим векторизованный список слов. Подобрать параметры визуализации (SHAPES, FONTS, LAYOUT, STYLE). Нажать кнопку Visualize. 5. Получено облако слов: Задание 3. Изучить сайт Акулы нейронных сетей (myneuralnetworks.ru) 1. Выбрать генератор изображений из текста: Генератор изображений из текста (myneuralnetworks.ru) 2. Ввести текст в поле и нажать кнопку сгенерировать изображение: 3. Проследить как меняется изображение в зависимости от выбора модели нейронной сети.