Определение. Пакет слов — это метод моделирования текста, основанный на обработке естественного языка (NLP). Пакет слов — это представление текста, описывающее появление слов в документе.

Почему и когда мы используем Bag of Words?
Давайте начнем с примера, где нам нужно найти отношение к Amazon Food Review (т. е. при условии, что обзор классифицирует отзыв как положительный или отрицательный).
Одна из самых больших проблем с текстом заключается в том, что он неструктурирован и имеет переменную длину, а алгоритмы машинного обучения предпочитают структурированные, четко определенные входные данные фиксированной длины, и с помощью метода Bag of Words мы можем преобразовать тексты переменной длины в вектор фиксированной длины.
Кроме того, это векторное представление будет очень полезно при применении линейной алгебры, например, если мы хотим найти сходство между двумя обзорами, мы можем проверить расстояние между соответствующими векторами. Чем меньше длина или расстояние между двумя векторами, тем больше похожи тексты (отзывы), и наоборот. Если представить все точки обзора геометрически одинаковыми текстами, то они должны быть ближе друг к другу.
Как преобразовать текст в вектор?
Давайте перейдем к некоторому примеру. (Например, если у вас есть отзыв как дела?, вы можете представить каждое уникальное слово числом измерения как dict = { 'are' : 0, 'how' : 1, "ты": 2})
Рассмотрим пример из 4 отзывов, взятых с продукта Amazon — Girnar-Detox-Green-Desi-Kahwa.

Первый шаг (метод подбора) заключается в создании набора уникальных слов из 4 отзывов. В представленных 4 отзывах содержится 25 уникальных слов. Это означает, что у нас будет вектор размером 25 для каждого обзора.

После преобразования текста в «мешок слов» на следующем шаге (метод преобразования) мы можем рассчитать различные меры для характеристики текста. Наиболее распространенным типом характеристик или признаков, вычисляемых с помощью модели Bag-of-words, является частота терминов, а именно количество раз, когда термин появляется в тексте.

Список слов в отсортированном формате:
['также', 'и', 'можно', 'пить', 'каждый', 'за', 'хорошо', 'отлично', 'вредно', 'здорово', 'есть', 'это', ' лекарственный', 'деньги', 'один', 'упаковка', 'замена', 'вкус', 'чай', 'этот', 'правда', 'стоимость', 'было', 'с', 'стоит' ]
Если мы сопоставим review1 со списком vocab.
Review1 = «Вредный чай можно заменить этим полезным напитком»
['также'=0, 'и'=0, 'можно'=1, 'выпить'=1, 'каждый'=0, 'за'=0, 'хорошо'=0, 'отлично'=0, ' вредный'=1, 'здоровый'=1, 'есть'=0, 'это'=0, 'лекарственный'=0, 'деньги'=0, 'один'=0, 'упаковка'=0, 'заменить' = 1, «вкус» = 0, «чай» = 1, «это» = 1, «истина» = 0, «ценность» = 0, «было» = 0, «с» = 1, «стоимость» = 0 ]
обзор1 в векторной форме [0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 0 1 0 1 1 0 0 0 1 0]
Точно так же зависит от количества слов, т. Е. Если слово встречается более одного раза, то точное количество слов мы добавляем в позицию лука для этого слова. Например, в обзоре2 вкус и есть встречаются дважды.
обзор2 = «это хороший вкус, и каждый вкус стоит своих денег»
обзор2 в векторной форме [0 1 0 0 1 1 1 0 0 0 2 1 0 1 0 0 0 2 0 0 0 0 0 0 1]
Для справки по коду вы можете посетить мой репозиторий git, где форма реализации Bag of Words с нуля, и из sklearn их сравнение вывода (прикрепленный блокнот ipynb).
https://github.com/dambrudharmahanty/DataScience/blob/main/bagofwords.ipynb
Вывод. Помимо BOW (Bag of Words), существуют различные способы преобразования текста в вектор, такие как Binary BOW, tf-idf (частота терминов — обратная частота документа), w2v (слово в vec). ), avg w2v (среднее слово в vec), tfidf w2v и т. д.
Ссылка: