Налаштування Моделі «Мішок Слів»
Модель 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?
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
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?
Дякуємо за ваш відгук!