CountVectorizer для извлечения признаков из текстов на Python, подробно

CountVectorizer подробное руководство по извлечению признаков из текстов на Python

Фото от Towfiqu barbhuiya на Unsplash

Все, что вам нужно знать, чтобы эффективно использовать CountVectorizer в Sklearn

Самая базовая обработка данных, которая требуется для любого проекта по обработке естественного языка (Natural Language Processing, NLP), заключается в преобразовании текстовых данных в числовые данные. Пока данные находятся в текстовой форме, мы не можем выполнять никакие вычислительные операции.

Для этого преобразования текста в числа существует несколько методов. В этом руководстве будет объяснен один из самых базовых векторизаторов, метод CountVectorizer в библиотеке scikit-learn.

Этот метод очень простой. Он принимает частоту встречаемости каждого слова как числовое значение. Пример поможет это понять.

В следующем блоке кода:

  • Мы импортируем метод CountVectorizer.
  • Вызываем этот метод.
  • Подгоняем текстовые данные под метод CountVectorizer и преобразовываем их в массив.
import pandas as pd from sklearn.feature_extraction.text import CountVectorizer # Это текст, который нужно векторизироватьtext = ["Привет, всем! Меня зовут Лили. У меня тоже есть тетя Лили. Я люблю свою тетю.\        Я пытаюсь научиться пользоваться count vectorizer."]cv= CountVectorizer() count_matrix = cv.fit_transform(text)cnt_arr = count_matrix.toarray()cnt_arr

Результат:

array([[1, 1, 2, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 1, 2, 1, 1, 1]],      dtype=int64)

Здесь я имею числовые значения, представляющие текстовые данные выше.

Как мы можем узнать, какие значения представляют какие слова в тексте?

Чтобы это прояснить, полезно преобразовать массив в DataFrame, где имена столбцов будут сами слова.

cnt_df = pd.DataFrame(data = cnt_arr, columns = cv.get_feature_names())cnt_df

Теперь это отображается наглядно. Значение слова “also” равно 1, что означает, что “also” появилось только один раз в тесте. Слово “aunt” встретилось дважды в тексте. Поэтому значение слова “aunt” равно 2.

В предыдущем примере все предложения были в одной строке. Поэтому мы получили только одну строку данных для четырех предложений. Давайте переупорядочим текст и…