Реалізація 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)
Це найбільш часто використовувані параметри, проте, якщо ви бажаєте ознайомитися з іншими, зверніться до документації.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат