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.

Segmentación de palabras clave

Hola querido, tengo un problema con las stopwords de nltk: si hago un ciclo de verificación de stopwords en letra y no en palabra. ¿Cómo puedo cambiar este comportamiento?
Un ejemplo:

import pandas as pd
import nltk

stopword = nltk.corpus.stopwords.words('italian')
pd.set_option('display.max_colwidth', None)

df = pd.read_csv('esempioTweet.csv', sep=',')

def remove_stop(text):
    text = [word for word in text if word not in stopword]
    return text

df['Testo_no_stop'] = df['Testo_token'].apply(lambda x: remove_stop(x))
df.head()

# Dado una columna anterior como esta:
# [covid, calano, i, nuovi, contagi, e, tamponi]
# Espero una salida como esta:
# [covid, calano, nuovi, contagi, tamponi]
# Pero tengo una salida como esta:
# [v,d,n, ...]

Entiendo que las stopwords están operando en una sola letra y no en toda la palabra, ¿por qué? Estoy seguro de que mi función remove_stop está funcionando de manera correcta, pero ¿por qué las stopwords operan de una manera incorrecta? Gracias por la paciencia que has tenido conmigo.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para cambiar el comportamiento de la verificación de stopwords y hacer que verifique la palabra completa en lugar de una sola letra, puedes modificar tu función remove_stop. En lugar de iterar sobre cada letra del texto, debes dividir el texto en palabras primero y luego verificar cada palabra en la lista de stopwords. Aquí tienes una versión actualizada de la función:

    def remove_stop(texto):
        palabras = texto.split()
        palabras = [palabra for palabra in palabras if palabra not in stopwords]
        return palabras
    

    Al dividir el texto en palabras y luego aplicar la verificación de stopwords en cada palabra, deberías obtener la salida esperada:

    ['covid', 'calano', 'nuovi', 'contagi', 'tamponi']
    

Comments are closed.