Освоение анализа текста: демистификация CountVectorizer в Python

Если вы когда-либо занимались анализом текста или обработкой естественного языка (НЛП), вы наверняка сталкивались с термином CountVectorizer. CountVectorizer — мощный инструмент Python, который позволяет нам преобразовывать необработанные текстовые данные в числовые векторы признаков. В этом сообщении блога мы углубимся в CountVectorizer и рассмотрим различные методы использования его возможностей. Итак, хватайте свой любимый напиток и начнем!

Метод 1: базовая реализация

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

from sklearn.feature_extraction.text import CountVectorizer
corpus = ["This is the first document.",
          "This document is the second document.",
          "And this is the third one.",
          "Is this the first document?"]
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(corpus)
print(vectorizer.get_feature_names())
print(X.toarray())

Метод 2: настройка словаря

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

custom_vocab = ['document', 'first', 'is', 'this']
vectorizer = CountVectorizer(vocabulary=custom_vocab)
X = vectorizer.fit_transform(corpus)
print(vectorizer.get_feature_names())
print(X.toarray())

Метод 3: обработка стоп-слов

Стоп-слова – это часто встречающиеся слова, которые не несут существенного значения, например “the”, “is” или “and”. CountVectorizer предоставляет возможность обрабатывать стоп-слова во время анализа. Мы можем передать параметр stop_wordsс определенным значением, например 'english', чтобы исключить распространенные английские стоп-слова.

from sklearn.feature_extraction import text
text.ENGLISH_STOP_WORDS
vectorizer = CountVectorizer(stop_words='english')
X = vectorizer.fit_transform(corpus)
print(vectorizer.get_feature_names())
print(X.toarray())

Метод 4: N-граммы

CountVectorizer позволяет учитывать не только отдельные слова, но и комбинации слов с использованием N-грамм. Установив параметр ngram_range, мы можем указать минимальное и максимальное количество слов в N-грамме. Например, ngram_range=(1, 2)учитывает как отдельные слова, так и пары слов.

vectorizer = CountVectorizer(ngram_range=(1, 2))
X = vectorizer.fit_transform(corpus)
print(vectorizer.get_feature_names())
print(X.toarray())

Метод 5: обработка токенизации и предварительная обработка

CountVectorizer предоставляет несколько вариантов токенизации и предварительной обработки текстовых данных. Мы можем передать специальную функцию токенизатора в параметр tokenizerили указать функцию препроцессора с помощью параметра preprocessor. Эти параметры позволяют нам точно настроить процесс анализа текста в соответствии с нашими конкретными потребностями.

import re
def custom_tokenizer(text):
    # Custom tokenization logic
    tokens = re.findall(r'\b\w+\b', text)
    return tokens
vectorizer = CountVectorizer(tokenizer=custom_tokenizer)
X = vectorizer.fit_transform(corpus)
print(vectorizer.get_feature_names())
print(X.toarray())

CountVectorizer — универсальный инструмент, открывающий мир возможностей для анализа текста и НЛП в Python. В этом сообщении блога мы рассмотрели различные методы использования его возможностей, включая базовую реализацию, настройку словаря, обработку стоп-слов, использование N-грамм, а также управление токенизацией и предварительной обработкой. Вооружившись этими знаниями, вы теперь можете с уверенностью приступать к захватывающим проектам по анализу текста. Итак, вперед, раскройте потенциал CountVectorizer и раскройте скрытую информацию в ваших текстовых данных!