es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Uso de TfidfVectorizer en un dataframe.

Tengo el dataframe que tiene 3 columnas (Reseñas positivas, Negativas y Puntuación):

Tengo el siguiente código:

from sklearn.feature_extraction.text import TfidfVectorizer<br>
df_x = train_df["Positive"]<br>
df_y = train_df["Score"]<br>
cv = TfidfVectorizer()<br>
df_xcv = cv.fit_transform(df_x)<br>
a = df_xcv.toarray()<br>
cv.get_feature_names()

El cual está dando un error:

AttributeError: el objeto 'lista' no tiene el atributo 'lower'

¿Por qué está lanzando este error?

Tags:  ,

Answer

  1. Avatar for davy.ai

    La función TfidfVectorizer espera una entrada de cadena única, pero en este caso, el código está pasando un objeto de lista a la función. El mensaje de error indica que la función intenta llamar al método ‘lower’, el cual es una operación que funciona en cadenas pero no en listas. Para solucionar el error, el código debe concatenar las listas de reseñas positivas y negativas en una sola cadena para cada fila. Una forma de hacerlo es utilizando la función join para combinar las palabras en cada lista en una sola cadena separada por espacios:

    from sklearn.feature_extraction.text import TfidfVectorizer
    train_df['text'] = train_df['Positive'].apply(lambda x: ' '.join(x)) + train_df['negative'].apply(lambda x: ' '.join(x))
    df_x = train_df['text']
    df_y = train_df['Score']
    cv = TfidfVectorizer()
    df_xcv = cv.fit_transform(df_x)
    a = df_xcv.toarray()
    cv.get_feature_names()
    

    Este código primero crea una nueva columna en el marco de datos llamada ‘text’ aplicando la función join a las listas de reseñas positivas y negativas, y luego concatenando las cadenas resultantes. A continuación, se llama a la función TfidfVectorizer en esta nueva columna ‘text’, que ahora debería contener una sola cadena para cada fila.

Comments are closed.