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.

Intentando contar el número de palabras en un corpus y agregar el recuento como una columna en el conjunto de datos.

Estoy trabajando en un proyecto de texto y necesito contar la ocurrencia de palabras específicas por conversación. Tengo un bucle for que contará la ocurrencia para una fila pero tengo dificultades para agregar los resultados como columnas en el conjunto de datos.

Este es el bucle que estoy usando:

# Inicializar contadores de puntuación para cada área
meet = 0
location = 0
day = 0
time = 0
transferencia = 0
total = 0

# Cree una lista vacía donde se almacenarán las puntuaciones
puntuaciones = []


# Obtener las puntuaciones para cada área

for area in terms.keys():

if area == 'Conocer':
    for palabra in terms[area]:
        if palabra en texto:
            meet +=1
    puntuaciones.append(conocer)

elif area == 'Ubicación':
    for palabra in terms[area]:
        if palabra en texto:
            location +=1
    puntuaciones.append(localización)

elif area == 'Día':
    for palabra in terms[area]:
        if palabra en texto:
            day +=1
    puntuaciones.append(día)

elif area == 'Hora':
    for palabra in terms[area]:
        if palabra en texto:
            time +=1
    puntuaciones.append(tiempo)

elif area == 'Total':
    for palabra in terms[area]:
        if palabra en texto:
            total +=1
    puntuaciones.append(total)

else:
    for palabra in terms[area]:
        if palabra en texto:
            transferencia +=1
    puntuaciones.append(transferencia)

Se hace referencia a un diccionario y estoy trabajando con un df básico de 1000 filas x 5 columnas que se ve así:

_id mensaje                                  sum  variable objetivo recuento_palabras
0 5555555 Hola allí compañeros de Went  6    0                 852

La suma y el recuento de palabras no son relevantes en este momento.

He intentado esto pero parece que no funciona:

df['Meet_word'] = df['mensaje'].map(lambda x: x.count('conocer'))

¡Cualquier consejo es realmente apreciado!

Tags:  ,

Answer

  1. Avatar for davy.ai

    Puede modificar el bucle para agregar las puntuaciones calculadas como nuevas columnas en el marco de datos usando el método .loc. Aquí hay un ejemplo:

    # Inicialice los contadores de puntuación para cada área
    meet = 0
    location = 0
    day = 0
    time = 0
    transfer = 0
    total = 0
    
    # Cree listas vacías para cada tipo de puntuación
    meet_scores = []
    location_scores = []
    day_scores = []
    time_scores = []
    transfer_scores = []
    total_scores = []
    
    # Obtenga las puntuaciones para cada área
    for index, row in df.iterrows():
        text = row ['message']
        for area in terms.keys():
            score = 0
            for word in terms[area]:
                if word in text:
                    score += 1
            if area == 'Meet':
                meet_scores.append(score)
                df.loc[index, 'Meet_word'] = score
            elif area == 'Location':
                location_scores.append(score)
                df.loc[index, 'Location_word'] = score
            elif area == 'Day':
                day_scores.append(score)
                df.loc[index, 'Day_word'] = score
            elif area == 'Time':
                time_scores.append(score)
                df.loc[index, 'Time_word'] = score
            elif area == 'Total':
                total_scores.append(score)
                df.loc[index, 'Total_word'] = score
            else:
                transfer_scores.append(score)
                df.loc[index, 'Transfer_word'] = score
    
    # Agregue las listas de puntuación como nuevas columnas
    df['Meet_score'] = meet_scores
    df['Location_score'] = location_scores
    df['Day_score'] = day_scores
    df['Time_score'] = time_scores
    df['Transfer_score'] = transfer_scores
    df['Total_score'] = total_scores
    

    Esto itera a través de cada fila del marco de datos, calcula las puntuaciones para cada área usando el diccionario de términos y agrega cada puntuación a la lista de puntuaciones correspondiente. Luego utiliza el método .loc para agregar las puntuaciones como nuevas columnas al marco de datos.

    Tenga en cuenta que esto supone que el diccionario de términos contiene claves para cada área y que los nombres de las áreas coinciden con los nombres de las columnas en el marco de datos. Si este no es el caso, es posible que deba modificar el bucle en consecuencia.

Comments are closed.