Реалізація TF-IDF
Стандартна реалізація
Реалізація моделі TF-IDF у sklearn подібна до моделі мішок слів. Для навчання цієї моделі на корпусі використовується клас TfidfVectorizer із знайомим методом .fit_transform().
123456789101112131415from sklearn.feature_extraction.text import TfidfVectorizer import pandas as pd corpus = [ 'Global climate change poses significant risks to global ecosystems.', 'Global warming and climate change demand urgent action.', 'Sustainable environmental practices support environmental conservation.', ] # Create a default TF-IDF model vectorizer = TfidfVectorizer() # Generate a TF-IDF matrix tfidf_matrix = vectorizer.fit_transform(corpus) # Convert a sparse matrix into a DataFrame tfidf_matrix_df = pd.DataFrame(tfidf_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(tfidf_matrix_df)
Окрім використання іншого класу, решта реалізації є ідентичною моделі мішка слів. За замовчуванням матриця TF-IDF обчислюється з L2-нормалізацією.
Налаштування TF-IDF
Аналогічно до CountVectorizer, можна вказати параметри min_df та max_df, щоб включати лише ті терміни, які зустрічаються щонайменше у min_df документах і щонайбільше у max_df документах. Ці параметри можна задавати як абсолютними числами документів, так і часткою від загальної кількості документів.
Ось приклад, де включаються лише ті терміни, які зустрічаються рівно у 2 документах, встановивши і min_df, і max_df рівними 2:
12345678910111213from sklearn.feature_extraction.text import TfidfVectorizer import pandas as pd corpus = [ 'Global climate change poses significant risks to global ecosystems.', 'Global warming and climate change demand urgent action.', 'Sustainable environmental practices support environmental conservation.', ] # Include terms which appear in exactly 2 documents vectorizer = TfidfVectorizer(min_df=2, max_df=2) tfidf_matrix = vectorizer.fit_transform(corpus) tfidf_matrix_df = pd.DataFrame(tfidf_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(tfidf_matrix_df)
Щоб вказати, які n-грамми включати у матрицю, можна використати параметр ngram_range. Далі буде включено лише біграми у результуючу матрицю:
12345678910111213from sklearn.feature_extraction.text import TfidfVectorizer import pandas as pd corpus = [ 'Global climate change poses significant risks to global ecosystems.', 'Global warming and climate change demand urgent action.', 'Sustainable environmental practices support environmental conservation.', ] # Include only bigrams vectorizer = TfidfVectorizer(ngram_range=(2, 2)) tfidf_matrix = vectorizer.fit_transform(corpus) tfidf_matrix_df = pd.DataFrame(tfidf_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(tfidf_matrix_df)
Це найбільш часто використовувані параметри, однак, якщо ви бажаєте ознайомитися з іншими, зверніться до документації.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 3.45
Реалізація TF-IDF
Свайпніть щоб показати меню
Стандартна реалізація
Реалізація моделі TF-IDF у sklearn подібна до моделі мішок слів. Для навчання цієї моделі на корпусі використовується клас TfidfVectorizer із знайомим методом .fit_transform().
123456789101112131415from sklearn.feature_extraction.text import TfidfVectorizer import pandas as pd corpus = [ 'Global climate change poses significant risks to global ecosystems.', 'Global warming and climate change demand urgent action.', 'Sustainable environmental practices support environmental conservation.', ] # Create a default TF-IDF model vectorizer = TfidfVectorizer() # Generate a TF-IDF matrix tfidf_matrix = vectorizer.fit_transform(corpus) # Convert a sparse matrix into a DataFrame tfidf_matrix_df = pd.DataFrame(tfidf_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(tfidf_matrix_df)
Окрім використання іншого класу, решта реалізації є ідентичною моделі мішка слів. За замовчуванням матриця TF-IDF обчислюється з L2-нормалізацією.
Налаштування TF-IDF
Аналогічно до CountVectorizer, можна вказати параметри min_df та max_df, щоб включати лише ті терміни, які зустрічаються щонайменше у min_df документах і щонайбільше у max_df документах. Ці параметри можна задавати як абсолютними числами документів, так і часткою від загальної кількості документів.
Ось приклад, де включаються лише ті терміни, які зустрічаються рівно у 2 документах, встановивши і min_df, і max_df рівними 2:
12345678910111213from sklearn.feature_extraction.text import TfidfVectorizer import pandas as pd corpus = [ 'Global climate change poses significant risks to global ecosystems.', 'Global warming and climate change demand urgent action.', 'Sustainable environmental practices support environmental conservation.', ] # Include terms which appear in exactly 2 documents vectorizer = TfidfVectorizer(min_df=2, max_df=2) tfidf_matrix = vectorizer.fit_transform(corpus) tfidf_matrix_df = pd.DataFrame(tfidf_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(tfidf_matrix_df)
Щоб вказати, які n-грамми включати у матрицю, можна використати параметр ngram_range. Далі буде включено лише біграми у результуючу матрицю:
12345678910111213from sklearn.feature_extraction.text import TfidfVectorizer import pandas as pd corpus = [ 'Global climate change poses significant risks to global ecosystems.', 'Global warming and climate change demand urgent action.', 'Sustainable environmental practices support environmental conservation.', ] # Include only bigrams vectorizer = TfidfVectorizer(ngram_range=(2, 2)) tfidf_matrix = vectorizer.fit_transform(corpus) tfidf_matrix_df = pd.DataFrame(tfidf_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(tfidf_matrix_df)
Це найбільш часто використовувані параметри, однак, якщо ви бажаєте ознайомитися з іншими, зверніться до документації.
Дякуємо за ваш відгук!