Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Налаштування мішка слів | Базові Текстові Моделі
Вступ до NLP

bookНалаштування мішка слів

Модель Bag of Words (мішок слів), особливо її реалізація через клас CountVectorizer, надає кілька параметрів для налаштування. Це дозволяє адаптувати її до конкретних потреб різних завдань аналізу тексту, що суттєво підвищує ефективність моделі.

Мінімальна та максимальна частота документів

Параметр min_df визначає мінімальну кількість документів, у яких термін повинен зустрічатися, щоб бути включеним до словника, як у вигляді абсолютного числа, так і пропорції. Це допомагає виключити рідкісні терміни, які часто є менш інформативними.

Аналогічно, max_df визначає максимальну частоту, з якою термін може зустрічатися у документах, щоб залишатися у словнику; також може задаватися як абсолютне число або пропорція. Це дозволяє відфільтрувати занадто поширені терміни, які не допомагають розрізняти документи.

123456789101112131415
from sklearn.feature_extraction.text import CountVectorizer import pandas as pd corpus = [ "The quick brown fox jumps over the lazy dog.", "Quick brown foxes leap over lazy dogs in summer.", "The quick brown fox is often seen jumping over lazy dogs.", "In summer, the lazy dog plays while the quick brown fox rests.", "A quick brown fox is quicker than the laziest dog." ] # Exclude words which appear in more than 3 documents vectorizer = CountVectorizer(max_df=3) bow_matrix = vectorizer.fit_transform(corpus) bow_df = pd.DataFrame(bow_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(bow_df)
copy

Встановлення max_df=3 виключає слова, які зустрічаються більш ніж у 3 документах. У нашому корпусі до таких слів належать "quick" та "brown". Оскільки вони зустрічаються у кожному або майже кожному документі, вони не допомагають розрізняти документи. Альтернативно можна встановити max_df=0.6, оскільки 60% від 5 документів — це 3 документи.

Діапазон N-грам

Параметр ngram_range дозволяє визначити діапазон розмірів n-грам, які будуть включені до словника.

Note
Визначення

N-грама — це послідовність із n суміжних елементів у заданій вибірці тексту. Цими елементами зазвичай є слова (у нашому випадку), склади або літери.

За замовчуванням CountVectorizer враховує лише уніграмми (окремі слова). Однак включення біграм (пар слів), тріґрам (трійок слів) або більших n-грам може збагатити модель, захоплюючи більше контексту та семантичної інформації, що потенційно покращує продуктивність.

Це досягається шляхом передачі кортежу (min_n, max_n) у параметр ngram_range, де min_n означає мінімальний розмір n-грам, а max_n — максимальний розмір.

Тепер зосередимося виключно на тріґрамах, які зустрічаються у двох або більше документах нашого корпусу:

123456789101112131415
from sklearn.feature_extraction.text import CountVectorizer import pandas as pd corpus = [ "The quick brown fox jumps over the lazy dog.", "Quick brown foxes leap over lazy dogs in summer.", "The quick brown fox is often seen jumping over lazy dogs.", "In summer, the lazy dog plays while the quick brown fox rests.", "A quick brown fox is quicker than the laziest dog." ] # Include trigrams which appear in 2 or more documents vectorizer = CountVectorizer(min_df=2, ngram_range=(3, 3)) bow_matrix = vectorizer.fit_transform(corpus) bow_df = pd.DataFrame(bow_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(bow_df)
copy

Це найбільш часто використовувані параметри, однак, якщо ви бажаєте дослідити більше, зверніться до документації.

1. Що контролює параметр min_df у CountVectorizer?

2. Яке призначення параметра ngram_range у CountVectorizer?

question mark

Що контролює параметр min_df у CountVectorizer?

Select the correct answer

question mark

Яке призначення параметра ngram_range у CountVectorizer?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 4

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Suggested prompts:

Can you explain how to choose appropriate values for min_df and max_df?

What are some practical use cases for using n-grams instead of unigrams?

Can you show how the output changes if we use both bigrams and trigrams?

Awesome!

Completion rate improved to 3.45

bookНалаштування мішка слів

Свайпніть щоб показати меню

Модель Bag of Words (мішок слів), особливо її реалізація через клас CountVectorizer, надає кілька параметрів для налаштування. Це дозволяє адаптувати її до конкретних потреб різних завдань аналізу тексту, що суттєво підвищує ефективність моделі.

Мінімальна та максимальна частота документів

Параметр min_df визначає мінімальну кількість документів, у яких термін повинен зустрічатися, щоб бути включеним до словника, як у вигляді абсолютного числа, так і пропорції. Це допомагає виключити рідкісні терміни, які часто є менш інформативними.

Аналогічно, max_df визначає максимальну частоту, з якою термін може зустрічатися у документах, щоб залишатися у словнику; також може задаватися як абсолютне число або пропорція. Це дозволяє відфільтрувати занадто поширені терміни, які не допомагають розрізняти документи.

123456789101112131415
from sklearn.feature_extraction.text import CountVectorizer import pandas as pd corpus = [ "The quick brown fox jumps over the lazy dog.", "Quick brown foxes leap over lazy dogs in summer.", "The quick brown fox is often seen jumping over lazy dogs.", "In summer, the lazy dog plays while the quick brown fox rests.", "A quick brown fox is quicker than the laziest dog." ] # Exclude words which appear in more than 3 documents vectorizer = CountVectorizer(max_df=3) bow_matrix = vectorizer.fit_transform(corpus) bow_df = pd.DataFrame(bow_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(bow_df)
copy

Встановлення max_df=3 виключає слова, які зустрічаються більш ніж у 3 документах. У нашому корпусі до таких слів належать "quick" та "brown". Оскільки вони зустрічаються у кожному або майже кожному документі, вони не допомагають розрізняти документи. Альтернативно можна встановити max_df=0.6, оскільки 60% від 5 документів — це 3 документи.

Діапазон N-грам

Параметр ngram_range дозволяє визначити діапазон розмірів n-грам, які будуть включені до словника.

Note
Визначення

N-грама — це послідовність із n суміжних елементів у заданій вибірці тексту. Цими елементами зазвичай є слова (у нашому випадку), склади або літери.

За замовчуванням CountVectorizer враховує лише уніграмми (окремі слова). Однак включення біграм (пар слів), тріґрам (трійок слів) або більших n-грам може збагатити модель, захоплюючи більше контексту та семантичної інформації, що потенційно покращує продуктивність.

Це досягається шляхом передачі кортежу (min_n, max_n) у параметр ngram_range, де min_n означає мінімальний розмір n-грам, а max_n — максимальний розмір.

Тепер зосередимося виключно на тріґрамах, які зустрічаються у двох або більше документах нашого корпусу:

123456789101112131415
from sklearn.feature_extraction.text import CountVectorizer import pandas as pd corpus = [ "The quick brown fox jumps over the lazy dog.", "Quick brown foxes leap over lazy dogs in summer.", "The quick brown fox is often seen jumping over lazy dogs.", "In summer, the lazy dog plays while the quick brown fox rests.", "A quick brown fox is quicker than the laziest dog." ] # Include trigrams which appear in 2 or more documents vectorizer = CountVectorizer(min_df=2, ngram_range=(3, 3)) bow_matrix = vectorizer.fit_transform(corpus) bow_df = pd.DataFrame(bow_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(bow_df)
copy

Це найбільш часто використовувані параметри, однак, якщо ви бажаєте дослідити більше, зверніться до документації.

1. Що контролює параметр min_df у CountVectorizer?

2. Яке призначення параметра ngram_range у CountVectorizer?

question mark

Що контролює параметр min_df у CountVectorizer?

Select the correct answer

question mark

Яке призначення параметра ngram_range у CountVectorizer?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 4
some-alt