Налаштування мішка слів
Модель Bag of Words (мішок слів), особливо її реалізація через клас CountVectorizer, надає кілька параметрів для налаштування. Це дозволяє адаптувати її до конкретних потреб різних завдань аналізу тексту, що суттєво підвищує ефективність моделі.
Мінімальна та максимальна частота документів
Параметр min_df визначає мінімальну кількість документів, у яких термін повинен зустрічатися, щоб бути включеним до словника, як у вигляді абсолютного числа, так і пропорції. Це допомагає виключити рідкісні терміни, які часто є менш інформативними.
Аналогічно, max_df визначає максимальну частоту, з якою термін може зустрічатися у документах, щоб залишатися у словнику; також може задаватися як абсолютне число або пропорція. Це дозволяє відфільтрувати занадто поширені терміни, які не допомагають розрізняти документи.
123456789101112131415from 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)
Встановлення max_df=3 виключає слова, які зустрічаються більш ніж у 3 документах. У нашому корпусі до таких слів належать "quick" та "brown". Оскільки вони зустрічаються у кожному або майже кожному документі, вони не допомагають розрізняти документи. Альтернативно можна встановити max_df=0.6, оскільки 60% від 5 документів — це 3 документи.
Діапазон N-грам
Параметр ngram_range дозволяє визначити діапазон розмірів n-грам, які будуть включені до словника.
N-грама — це послідовність із n суміжних елементів у заданій вибірці тексту. Цими елементами зазвичай є слова (у нашому випадку), склади або літери.
За замовчуванням CountVectorizer враховує лише уніграмми (окремі слова). Однак включення біграм (пар слів), тріґрам (трійок слів) або більших n-грам може збагатити модель, захоплюючи більше контексту та семантичної інформації, що потенційно покращує продуктивність.
Це досягається шляхом передачі кортежу (min_n, max_n) у параметр ngram_range, де min_n означає мінімальний розмір n-грам, а max_n — максимальний розмір.
Тепер зосередимося виключно на тріґрамах, які зустрічаються у двох або більше документах нашого корпусу:
123456789101112131415from 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)
Це найбільш часто використовувані параметри, однак, якщо ви бажаєте дослідити більше, зверніться до документації.
1. Що контролює параметр min_df у CountVectorizer?
2. Яке призначення параметра ngram_range у CountVectorizer?
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
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
Налаштування мішка слів
Свайпніть щоб показати меню
Модель Bag of Words (мішок слів), особливо її реалізація через клас CountVectorizer, надає кілька параметрів для налаштування. Це дозволяє адаптувати її до конкретних потреб різних завдань аналізу тексту, що суттєво підвищує ефективність моделі.
Мінімальна та максимальна частота документів
Параметр min_df визначає мінімальну кількість документів, у яких термін повинен зустрічатися, щоб бути включеним до словника, як у вигляді абсолютного числа, так і пропорції. Це допомагає виключити рідкісні терміни, які часто є менш інформативними.
Аналогічно, max_df визначає максимальну частоту, з якою термін може зустрічатися у документах, щоб залишатися у словнику; також може задаватися як абсолютне число або пропорція. Це дозволяє відфільтрувати занадто поширені терміни, які не допомагають розрізняти документи.
123456789101112131415from 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)
Встановлення max_df=3 виключає слова, які зустрічаються більш ніж у 3 документах. У нашому корпусі до таких слів належать "quick" та "brown". Оскільки вони зустрічаються у кожному або майже кожному документі, вони не допомагають розрізняти документи. Альтернативно можна встановити max_df=0.6, оскільки 60% від 5 документів — це 3 документи.
Діапазон N-грам
Параметр ngram_range дозволяє визначити діапазон розмірів n-грам, які будуть включені до словника.
N-грама — це послідовність із n суміжних елементів у заданій вибірці тексту. Цими елементами зазвичай є слова (у нашому випадку), склади або літери.
За замовчуванням CountVectorizer враховує лише уніграмми (окремі слова). Однак включення біграм (пар слів), тріґрам (трійок слів) або більших n-грам може збагатити модель, захоплюючи більше контексту та семантичної інформації, що потенційно покращує продуктивність.
Це досягається шляхом передачі кортежу (min_n, max_n) у параметр ngram_range, де min_n означає мінімальний розмір n-грам, а max_n — максимальний розмір.
Тепер зосередимося виключно на тріґрамах, які зустрічаються у двох або більше документах нашого корпусу:
123456789101112131415from 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)
Це найбільш часто використовувані параметри, однак, якщо ви бажаєте дослідити більше, зверніться до документації.
1. Що контролює параметр min_df у CountVectorizer?
2. Яке призначення параметра ngram_range у CountVectorizer?
Дякуємо за ваш відгук!