Що таке CountVectorizer?

CountVectorizer — це техніка видобутку ознак у обробці природної мови (NLP), яка перетворює колекцію текстових документів у матрицю лічильників токенів. Вона є частиною модуля sklearn.feature_extraction.text бібліотеки Scikit-learn.

По суті, вона створює представлення «мішка слів» (BoW) для тексту, де кожен документ представляється вектором лічильників слів.

Як це працює

  1. Токенізація:
  • Розділяє текст на слова (токени), використовуючи пробіли або інші роздільники.
  1. Створення словника:
  • Формує словник усіх унікальних токенів (слів) з усієї вибірки.
  1. Кодування:
  • Для кожного документа підраховує, скільки разів кожне слово зі словника зустрічається.
  • Представляє документ у вигляді вектора цих лічильників.

Приклад

Приклад коду:

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())

Виведення:

  1. Словник:
{ '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?

  1. Рідка матриця (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

  1. max_features:
  • Обмежує кількість ознак (слів), що включаються в словник.
  • Приклад: max_features=1000 зберігає топ-1000 найбільш частотних слів.
  1. stop_words:
  • Видаляє поширені слова, такі як «is», «the» тощо.
  • Варіанти: None (за замовчуванням), 'english' або власний список слів.
  1. ngram_range:
  • Вказує діапазон n-грам, які потрібно витягнути.
  • Приклад: ngram_range=(1, 2) включає уніграми та біграми.
  1. min_df та max_df:
  • Фільтрує слова за частотою документів.
  • min_df: Слова повинні з'являтися хоча б в цій частці/кількості документів.
  • max_df: Слова, що з'являються в більшій кількості документів, ігноруються.

Коли використовувати CountVectorizer?

  • Підходить для задач класифікації тексту або кластеризації з використанням традиційних моделей машинного навчання (наприклад, логістична регресія, SVM).
  • Коли вибірка має чистий і структурований текст.
  • Найкраще працює для помірно великих словників.

Перекладено з: What is CountVectorizer

Leave a Reply

Your email address will not be published. Required fields are marked *