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.

Palabras de normalización para el análisis de sentimientos.

Actualmente estoy haciendo análisis de sentimientos y tengo un problema.

Tengo una gran normalización de palabras y quiero normalizar el texto antes de tokenizarlo, como en este ejemplo:

data normal
kamu knp sayang kamu kenapa sayang
drpd sedih mending belajar dari pada sedih mending belajar
dmna sekarang di mana sekarang
  • knp: kenapa
  • drpd: dari pada
  • dmna: di mana

Este es mi código:

import pandas as pd

slang = pd.DataFrame({'before': ['knp', 'dmna', 'drpd'], 'after': ['kenapa', 'di mana', 'dari pada']})
df = pd.DataFrame({'data': ['kamu knp sayang', 'drpd sedih mending bermain']})

normalisasi = {}

for index, row in slang.iterrows():
  if row[0] not in normalisasi:
    normalisasi[row[0]] = row[1]

def normalized_term(document):
    return [normalisasi[term] if term in normalisasi else term for term in document]

df['normal'] = df['data'].apply(normalized_term)
df

Pero, el resultado es como este:

Quiero que el resultado sea como la tabla de ejemplo.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para obtener el resultado deseado, debes modificar la función normalized_term para unir la lista de términos normalizados en una única string usando espacios.

    Aquí está la función normalized_term actualizada:

    def normalized_term(document):
        return ' '.join([normalisasi[term] if term in normalisasi else term for term in document.split()])
    

    Esta nueva función divide la cadena de entrada en una lista de términos individuales usando split(), aplica las normalizaciones usando una comprensión de lista y luego une la lista resultante en una sola cadena usando espacios.

    Luego puedes aplicar esta función a la columna 'data' usando apply:

    df['normal'] = df['data'].apply(normalized_term)
    

    Esto debería darte el resultado deseado en la columna 'normal' de tu DataFrame.

Comments are closed.