«Язык — прекрасное средство общения»

Мы, люди, можем легко понять смысл предложения за долю секунды. Но машины не могут обрабатывать такие тексты. Им нужно, чтобы предложения были разбиты на числовые форматы для облегчения понимания.

В этой статье мы узнаем о Bag of Words, методе моделирования текста с обработкой естественного языка, его плюсах и минусах, и, наконец, научимся реализовывать его с помощью языка программирования Python.

Мешок слов

Модель Bag of Words — это метод предварительной обработки текста путем преобразования его в числовой/векторный формат, который ведет подсчет общего количества наиболее часто используемых слов в документе. Эта модель в основном визуализируется с помощью таблицы, которая содержит количество слов, соответствующих самому слову. Другими словами, это можно объяснить как метод извлечения признаков из текстовых документов и использования этих признаков для обучения алгоритмов машинного обучения. Он имеет тенденцию создавать словарь всех уникальных слов, встречающихся в обучающем наборе документов.

Применение:

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

Это следует за следующими шагами:

Реальный пример:

Мы возьмем популярный пример, чтобы объяснить Bag-of-Words (BoW) и сделать этот путь понимания лучше. Мы все любим делать покупки в Интернете, и да, всегда важно искать отзывы о продукте, прежде чем мы совершим его покупку. Итак, мы будем использовать этот пример здесь.

Вот пример отзывов о том или ином косметическом продукте:

  • Отзыв 1: Этот продукт полезен и моден
  • Отзыв 2: Этот продукт полезен, но не в тренде
  • Отзыв 3: Этот продукт потрясающий и модный

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

Теперь основное требование — обработать текст и преобразовать его в векторизованную форму. И это можно легко сделать с помощью Bag of Words, который является простейшей формой представления текста в числах.

Как следует из термина, это вложение представляет каждое предложение в виде строки чисел. Сначала мы построим словарь из всех трех приведенных выше обзоров, которые состоят из этих 10 слов: «это», «продукт», «есть», «полезный», «и», «причудливый», «но», «не». , «в тренде», «потрясающе».

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

Теперь мы можем пометить вхождение слова 1 и 0, как показано ниже:

И это основная идея модели Bag of Words (BoW), где 1 обозначает наличие слова в обзоре предложения, а 0 обозначает его отсутствие.

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

Его ограничения:

Но этот метод встраивания слов имеет некоторые подводные камни, из-за которых разработчики предпочитают использовать TF-IDF или word2vec при работе с большим объемом данных.

Давайте обсудим их:

  • Первая проблема возникает в тех случаях, когда новые предложения содержат новые слова. Если это произойдет, то размер словаря увеличится, а значит, увеличится и длина векторов.
  • Кроме того, векторы также будут содержать много нулей, что приведет к разреженной матрице (чего мы хотели бы избежать)
  • Во-вторых, мы не получаем никакой информации о грамматическом разделе и не сосредотачиваемся на порядке слов в тексте.

Практическая реализация на Python

Теперь давайте попробуем понять набор слов с помощью языка программирования Python.

Шаг 1. Импорт библиотек

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

import nltk 
paragraph = “””………………………………………………”””

Шаг 2. Предварительная обработка текста

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

## Cleaning the texts
print(corpus)

Шаг 3. Модель BoW

Нет необходимости кодировать BOW всякий раз, когда нам это нужно. Он уже доступен во многих фреймворках, таких как sci-kit-learn, CountVectorizer.

# Creating the Bag of Words model
from sklearn.feature_extraction.text import CountVectorizer
cv = CountVectorizer(max_features = 1500)
X = cv.fit_transform(corpus).toarray()
print(cv)
print(X)

Код можно загрузить с GITHUB LINK.

Поделитесь этой статьей со всеми своими друзьями и нажмите кнопку👏ниже, чтобы распространить ее еще больше. Кроме того, добавьте любые моменты или, возможно, ваши ценные предложения, которые вы хотите передать ниже в комментариях💬!

Я хотел бы услышать от вас. Оставайтесь на связи, подписавшись на меня…

Подпишитесь на меня в 👉LINKEDIN

Recommendations for your Reading
🔖 KNN Algorithm in R
🔖 TensorFlow
🔖 Influence of IT

Смотрите больше статей ❤️@MEDIUM