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

Если мы хотим предсказать цену дома, нам потребуются определенные характеристики, связанные с этим домом, такие как местность, площадь дома, расстояние от школ, больниц, материалы, использованные в строительстве и т. д. Они могут иметь значения в числах или категориях (которые позже будут преобразованы в числа с использованием метки или одной горячей кодировки). После анализа этих функций мы применяем алгоритм ML/DL, который утомляет, чтобы уменьшить ошибку, полученную из его прогноза и фактического значения. В этом процессе мы наблюдаем только игру алгоритмов с числами во всех вычислениях.

Рассмотрим известную постановку задачи обнаружения спама. Здесь у нас только текст из писем — какие функции вы можете придумать для этих данных?? Нам нужно преобразовать текст в функции, которые являются векторами чисел и легко обрабатываются любым алгоритмом. Этот процесс преобразования текста в элементы называется извлечение признаков.

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

  1. Мешок слов
  2. TF-IDF

1. Мешок слов:

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

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

Создание словаря — это не что иное, как создание набора всех уникальных слов, полученных в результате токенизации. Затем мы создаем векторы, используя частоту появления.

Например:

Рассмотрим 3 предложения:

  1. Джон поехал на своей машине в Париж.
  2. Рейс опоздал.
  3. Рейс был полный. Путешествовать самолетом дорого.

Давайте проверим, какие уникальные слова в 3 предложениях, которые являются нашим словарным запасом.

Объединение всех уникальных слов из предложений даст нам словарный запас или Особенности корпуса текста.

Реализация Python:

Это результаты:

Подход BoW используется в основном в НЛП для задач классификации документов и поиска информации.

При использовании этого подхода есть несколько ограничений:

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

Давайте посмотрим на другой подход, называемый векторизацией Tf-Idf:

Периодичность термина — обратная частота документа:

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

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

Например:

Есть 3 предложения, как мы видели в мешке слов, и давайте поймем, как рассчитываются баллы.

Частота термина (TF): введите частоту появления этого слова в этом предложении.

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

Окончательная оценка TF-IDF:

Из приведенных выше оценок мы ясно видим, что слова «The», «was» оштрафованы, поскольку они повторяются в большинстве документов, а слово «flight» в 3-м предложении является ценным, поскольку частота его терминов высока. Хотя основной недостаток сохранения контекста упускается из виду, поиск информации имеет больше смысла при использовании TF-IDF, а не BoW.

Мы можем реализовать все эти вычисления в sklearn. Окончательный код:

Выходы

Мы конвертируем текст в векторы с функциями, которые теперь приведут нас к их обработке для наших разработанных задач. Таким образом, эмпирическое правило заключается в том, что чем выше оценка TF*IDF, тем реже, уникальнее или ценнее термин, и наоборот. Надеюсь, вы поняли основное отличие BoW от TF-IDF и поняли, как создавать числовые векторы с текстом. В следующих блогах мы поиграем с несколькими интригующими идеями, которые произвели революцию в НЛП.

Посмотрите мой предыдущий блог о обработке текста и следующий блог о Word2Vec/Glove.

Спасибо! :)