Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Implementación de TF-IDF | Modelos Básicos de Texto
Introducción al PLN

bookImplementación de TF-IDF

Implementación predeterminada

La implementación del modelo TF-IDF en sklearn es similar a la del modelo bolsa de palabras. Para entrenar este modelo en un corpus, se utiliza la clase TfidfVectorizer, empleando el conocido método .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

Aparte de utilizar una clase diferente, el resto de la implementación es idéntica a la del modelo bolsa de palabras. Por defecto, la matriz TF-IDF se calcula con normalización L2.

Personalización de TF-IDF

De manera similar a CountVectorizer, es posible especificar los parámetros min_df y max_df para incluir únicamente los términos que aparecen en al menos min_df documentos y como máximo en max_df documentos. Estos parámetros pueden definirse como números absolutos de documentos o como una proporción del número total de documentos.

A continuación, se muestra un ejemplo en el que se incluyen únicamente los términos que aparecen exactamente en 2 documentos, estableciendo tanto min_df como max_df en 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

Para especificar los n-gramas que se incluirán en nuestra matriz, se puede utilizar el parámetro ngram_range. Incluyamos únicamente bigramas en la matriz resultante:

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

Estos son los parámetros más utilizados; sin embargo, si desea explorar más opciones, puede consultar la documentación.

question mark

¿Qué clase de scikit-learn se puede utilizar para obtener los vectores TF-IDF del corpus de texto?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 7

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Awesome!

Completion rate improved to 3.45

bookImplementación de TF-IDF

Desliza para mostrar el menú

Implementación predeterminada

La implementación del modelo TF-IDF en sklearn es similar a la del modelo bolsa de palabras. Para entrenar este modelo en un corpus, se utiliza la clase TfidfVectorizer, empleando el conocido método .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

Aparte de utilizar una clase diferente, el resto de la implementación es idéntica a la del modelo bolsa de palabras. Por defecto, la matriz TF-IDF se calcula con normalización L2.

Personalización de TF-IDF

De manera similar a CountVectorizer, es posible especificar los parámetros min_df y max_df para incluir únicamente los términos que aparecen en al menos min_df documentos y como máximo en max_df documentos. Estos parámetros pueden definirse como números absolutos de documentos o como una proporción del número total de documentos.

A continuación, se muestra un ejemplo en el que se incluyen únicamente los términos que aparecen exactamente en 2 documentos, estableciendo tanto min_df como max_df en 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

Para especificar los n-gramas que se incluirán en nuestra matriz, se puede utilizar el parámetro ngram_range. Incluyamos únicamente bigramas en la matriz resultante:

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

Estos son los parámetros más utilizados; sin embargo, si desea explorar más opciones, puede consultar la documentación.

question mark

¿Qué clase de scikit-learn se puede utilizar para obtener los vectores TF-IDF del corpus de texto?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 7
some-alt