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.
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: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'
usandoapply
:Esto debería darte el resultado deseado en la columna
'normal'
de tu DataFrame.