Uploaded by T O L I E V 7

Вектроризация (1)

advertisement
Векторизация текста
Векторизация текста – это процесс конвертации текста в числа. Следует помнить о
том, что компьютер не способен обрабатывать слова — только числа, поэтому возникает
необходимость в таком преобразовании для обеспечения корректной работы
алгоритмов машинного обучения.
Начальным этапом векторизации текста является его разбиение на элементы:
 Токены — текстовые единицы, т.е. слова, словосочетания, предложения и т.п. Чаще
всего в качестве токена выбирается слово. Множество токенов образуют словарь.
 Документы — множества токенов, принадлежащих одной смысловой единице. В
качестве документа может выступать предложение или небольшой текст.
 Корпус — множество всех документов.
Таким образом, в процессе векторизации, текст преобразуется в массив – корпус,
состоящий из массивов меньшего размера – документов, а элементами документов являются
вектора – токены.
Можно выделить несколько методов векторизации текста. Самым простым из всех
является прямое кодирование. В случае прямого кодирования получается массив,
строки которого представляют собой токены корпуса, а столбцы – положение токена в
документе. Полученная матрица состоит из двух элементов: 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. Проследить как меняется изображение в зависимости от выбора модели нейронной
сети.
Download