Вы подписаны на Машинное обучение доступно
Отлично! завершите оплату для полного доступа к Машинное обучение доступно
Снова приветствуем Вас! Вы успешно авторизовались
Успех! Аккаунт активирован, и Вы имеете полный доступ к контенту.
Мешок слов (Bag of Words)

Мешок слов (Bag of Words)

in

Мешок слов (BoW) – это способ представления текстовых данных при моделировании в Машинном обучении (ML).

Модель набора слов проста для понимания и реализации и зарекомендовала себя с большим успехом в таких задачах, как Языковое моделирование (Language Modeling) и Классификация документов (Document Classification).

Проблема с текстом

Проблема с моделированием текста заключается в том, что он беспорядочный, а большинство Алгоритмов (Algorithm) машинного обучения предпочитают входные и выходные данные фиксированной длины.

Алгоритмы машинного обучения не могут работать напрямую с необработанным текстом: его необходимо преобразовать в числа а точнее, в векторы чисел. При языковой обработке векторы выводятся из текстовых данных, чтобы отразить различные лингвистические свойства текста. Это называется извлечением или Кодированием (Encoding) признаков. BoW – как раз и есть один из таких методов.

Подход очень простой и гибкий, и его можно использовать множеством способов для извлечения функций из документов.

Пакет слов – это представление текста, которое описывает "характер" присутствия слов в документе. Это подразумевает две вещи:

  • Словарь – список уникальных присутствующих в тексте слов
  • Мера присутствия таких слов в тексте

Это называется «мешком» слов, потому что всякая информация о порядке или структуре слов в документе отбрасывается. Модель заботится только о том, встречаются ли известные слова в документе, а не об их положении. В этом подходе мы изучаем на гистограмму частоты употребления слов в тексте, то есть рассматриваем ее как признак-столбец.

Интуиция подсказывает человеку, что тексты похожи, если имеют похожее содержание. Кроме того, только по содержанию мы можем кое-что узнать о значении документа.

Пакет слов может быть настолько простым или сложным, насколько нам хочется. Сложность возникает как при принятии решения о том, как составить словарь известных слов – Лексем (Token), так и при оценке меры их "присутствия". Мы рассмотрим обе эти проблемы более подробно.

Пример модели мешка слов

Шаг 1. Соберите данные
Ниже приведен фрагмент книги Чарльза Диккенса «Повесть о двух городах»:

It was the best of times,
It was the worst of times,
It was the age of wisdom,
It was the age of foolishness,

В этом небольшом примере давайте рассматривать каждую строку как отдельный «документ», а все четверостишие – как Корпус (Corpus) документов.

Шаг 2: Составьте словарь
Теперь мы можем составить список всех слов:

  • “it”
  • “was”
  • “the”
  • “best”
  • “of”
  • “times”
  • “worst”
  • “age”
  • “wisdom”
  • “foolishness”

Это словарь из 10 лексем корпуса, содержащего 24 слова.

Шаг 3. Создайте векторы документа

Следующим шагом будет оценка слов в каждом документе. Цель состоит в том, чтобы превратить каждый документ с произвольным текстом в вектор, который мы можем использовать в качестве Входных данных (Input Data) для Модели (Model) машинного обучения.

Самый простой метод оценки – отметить наличие слов как логическое значение, 0 – отсутствие, 1 – присутствие. Поскольку в словаре есть 10 слов, мы создадим таблицу, описывающую присутствие того или иного слова в документе № 1, то есть первой строке:

Двоичный вектор документа будет выглядеть следующим образом:

[1, 1, 1, 1, 1, 1, 0, 0, 0, 0]

Остальные три документа выглядели бы следующим образом:

"it was the worst of times" = [1, 1, 1, 0, 1, 1, 1, 0, 0, 0]
"it was the age of wisdom" = [1, 1, 1, 0, 1, 0, 0, 1, 1, 0]
"it was the age of foolishness" = [1, 1, 1, 0, 1, 0, 0, 1, 0, 1]

Теперь у нас есть последовательный способ извлечения функций из любого документа в нашем корпусе, и эти вектора подходят для моделирования.

Новые документы, слова из которых лишь отчасти "покрыты" ранее составленным словарем, по-прежнему могут кодироваться, при этом оцениваются только вхождение известных слов, а неизвестные игнорируются.

Управление словарным запасом

По мере увеличения размера словаря увеличивается и векторное представление документов.

В предыдущем примере длина вектора документа равна количеству известных слов.

Для очень большого корпуса, например, тысячи книг, длина вектора – тысячи или миллионы позиций. Кроме того, каждый документ может содержать очень мало известных слов. В результате получается вектор с множеством нулевых оценок, называемый Разреженным вектором (Sparse Vector).

Для разреженных векторов требуется больше памяти и вычислительных ресурсов при моделировании, а огромное количество позиций или измерений может сделать процесс моделирования очень сложным для традиционных алгоритмов. Таким образом, при использовании мешка слов возникает необходимость уменьшить размер словарного запаса.

Существуют простые методы очистки текста, которые можно использовать в качестве первого шага, например:

  • Игнорирование регистра
  • Игнорирование знаков препинания
  • Игнорирование часто используемых неинформативных так называемых стоп-слов, например «а», «из» и т.д.
  • Исправление слов с ошибками
  • Сокращение слов до их граммтической основы – Cnемминг (Stemming)

Более сложный подход – создать словарь сгруппированных слов. Это одновременно изменяет объем словарного запаса и позволяет мешку слов выделить больше смысла из документа.

При таком подходе каждое слово или лексема называются «грамм». Создание словаря пар из двух слов, в свою очередь, называется моделью Биграмм (Bigram). Опять же, моделируются только биграммы, которые появляются в корпусе, а не все возможные биграммы.

N-грамм – это последовательность слов из N-знаков: биграмма – это последовательность из двух слов, таких как «пожалуйста, переверни», «переверни это» или «домашнее задание»; и триграмма – это последовательность из трех слов, например «пожалуйста, переверни свою» или «своя домашняя работа».

Например, биграммы в первой строке текста в предыдущем разделе: «Это были лучшие времена» выглядят следующим образом:

  • “it was”
  • “was the”
  • “the best”
  • “best of”
  • “of times”

Словарь, который затем отслеживает тройки слов, называется моделью триграммы, а общий подход называется моделью N-грамм (Ngram), где N – количество сгруппированных слов.

Часто биграммы показывают лучшие результаты, чем модели Ngram, где N равен 1.

Оценка слов

После того, как словарный запас выбран, необходимо подсчитать наличие слов в примерах документов. В проработанном выше примере мы уже видели один очень простой подход к оценке: бинарная оценка наличия или отсутствия слов.

Некоторые дополнительные простые методы оценки включают в себя:

  • Подсчет: сколько раз каждое слово встречается в документе.
  • Частота появления каждого слова в документе

Хэширование слов

Хэш-функция сопоставляет данные с набором чисел фиксированного размера. Например, мы используем их , преобразуя имена в числа для скорейшего поиска.

Мы можем использовать Хеширование слов (Word Hashing) в нашем словаре. Это решает проблему наличия очень большого словарного запаса для большого текстового корпуса, потому что мы можем выбрать размер хэш-пространства, который, в свою очередь, равен размеру векторного представления документа.

TF-IDF

Проблема с оценкой частоты слов заключается в том, что в документе преобладают очень часто встречающиеся слова, но они могут не содержать столько информации для модели, сколько более редкие, специфические для предметной области слова.

Один из подходов состоит в том, чтобы изменить частоту слов в зависимости от того, как часто они появляются во всех документах, тем самым "штрафуя" часто встречающиеся предлоги ("at"), артикли ("the") и т.д. Такой подход к оценке называется Мера оценки важности слова в контексте документа (TF-IDF), где:

  • Term Frequency (TF) –оценка частоты встречаемости слова в текущем документе.
    Inverse Document Frequency (IDF) – оценка того, насколько редко слово встречается в документах.

Ограничения мешка слов

Модель набора слов очень проста для понимания и реализации и предлагает большую гибкость для настройки ваших конкретных текстовых данных. Тем не менее, она страдает некоторыми недостатками, такими как:

  • Словарь требует тщательного проектирования, особенно управления размером, что влияет на разреженность представлений документа.
  • Редкость: разреженные представления труднее моделировать как по вычислительным (пространственная и временная сложность), так и по информационным причинам. Модели должны использовать так мало информации в таком большом пространстве представлений.
  • Значение: при отказе от порядка слов игнорируется контекст и, в свою очередь, значение слов в документе. Контекст и значение могут многое дать нашей модели. Человеку очевидна разница между фразами "this is interesting" и "is this interesting".

Автор оригинальной статьи: Jason Brownlee