Если вы когда-либо занимались анализом текста или обработкой естественного языка (НЛП), вы наверняка сталкивались с термином 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 и раскройте скрытую информацию в ваших текстовых данных!