Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Реалізація TF-IDF | Секція
Practice
Projects
Quizzes & Challenges
Вікторини
Challenges
/
Обробка природної мови

bookРеалізація TF-IDF

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

Стандартна реалізація

Реалізація моделі TF-IDF у sklearn подібна до моделі мішка слів. Для навчання цієї моделі на корпусі використовується клас TfidfVectorizer із знайомим методом .fit_transform().

123456789101112131415
from 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)
copy

Окрім використання іншого класу, решта реалізації є ідентичною до моделі мішка слів. За замовчуванням матриця TF-IDF обчислюється з L2-нормалізацією.

Налаштування TF-IDF

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

Нижче наведено приклад, де включаються лише ті терміни, які зустрічаються рівно у 2 документах, встановивши і min_df, і max_df рівними 2:

12345678910111213
from 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)
copy

Щоб вказати, які n-грамми включати у нашу матрицю, можна використати параметр ngram_range. Далі включаємо лише біграми у результуючу матрицю:

12345678910111213
from 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)
copy

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

question mark

Який клас scikit-learn можна використати для отримання TF-IDF векторів з текстового корпусу?

Select the correct answer

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

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

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

Секція 1. Розділ 24

Запитати АІ

expand

Запитати АІ

ChatGPT

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

Секція 1. Розділ 24
some-alt