CountVectorizer — це техніка видобутку ознак у обробці природної мови (NLP), яка перетворює колекцію текстових документів у матрицю лічильників токенів. Вона є частиною модуля sklearn.feature_extraction.text бібліотеки Scikit-learn.
По суті, вона створює представлення «мішка слів» (BoW) для тексту, де кожен документ представляється вектором лічильників слів.
Як це працює
- Токенізація:
- Розділяє текст на слова (токени), використовуючи пробіли або інші роздільники.
- Створення словника:
- Формує словник усіх унікальних токенів (слів) з усієї вибірки.
- Кодування:
- Для кожного документа підраховує, скільки разів кожне слово зі словника зустрічається.
- Представляє документ у вигляді вектора цих лічильників.
Приклад
Приклад коду:
from sklearn.feature_extraction.text import CountVectorizer
# Приклад текстових даних
corpus = [
"This is a sample sentence",
"This is another example sentence",
"Sample text for testing"
]
# Ініціалізація CountVectorizer
vectorizer = CountVectorizer()
# Підгонка та трансформація корпусу
X = vectorizer.fit_transform(corpus)
# Словник
print("Vocabulary:", vectorizer.vocabulary_)
# Перетворена матриця
print("Feature matrix:\n", X.toarray())
Виведення:
- Словник:
{ 'this': 7,
'is': 3,
'sample': 5,
'sentence': 6,
'another': 0,
'example': 2,
'text': 8,
'for': 1,
'testing': 4 }
Кожному слову присвоєно індекс.
2. Матриця ознак:
[[0 0 0 1 0 1 1 1 0] # "This is a sample sentence"
[1 0 1 1 0 0 1 1 0] # "This is another example sentence"
[0 1 0 0 1 1 0 0 1]] # "Sample text for testing"
- Рядки представляють документи.
- Стовпці представляють кількість слів у словнику.
Що повертає CountVectorizer?
- Рідка матриця (X):
- Стиснуте представлення матриці лічильників слів.
- Можна перетворити в густий масив за допомогою
.toarray()
або.todense()
.
2. Словник:
- Словник, що відображає слова в їхні відповідні індекси в матриці (vectorizer.vocabulary_).
Як отримати індекс для слова?
Щоб знайти індекс конкретного слова:
word = "sample"
index = vectorizer.vocabulary_.get(word)
print(f"The index of '{word}' is {index}.")
Виведення:
index of 'sample' is 5.
Ключові параметри CountVectorizer
max_features
:
- Обмежує кількість ознак (слів), що включаються в словник.
- Приклад:
max_features=1000
зберігає топ-1000 найбільш частотних слів.
stop_words
:
- Видаляє поширені слова, такі як «is», «the» тощо.
- Варіанти:
None
(за замовчуванням),'english'
або власний список слів.
ngram_range
:
- Вказує діапазон n-грам, які потрібно витягнути.
- Приклад:
ngram_range=(1, 2)
включає уніграми та біграми.
min_df
таmax_df
:
- Фільтрує слова за частотою документів.
min_df
: Слова повинні з'являтися хоча б в цій частці/кількості документів.max_df
: Слова, що з'являються в більшій кількості документів, ігноруються.
Коли використовувати CountVectorizer?
- Підходить для задач класифікації тексту або кластеризації з використанням традиційних моделей машинного навчання (наприклад, логістична регресія, SVM).
- Коли вибірка має чистий і структурований текст.
- Найкраще працює для помірно великих словників.
Перекладено з: What is CountVectorizer