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.
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:
Al dividir el texto en palabras y luego aplicar la verificación de stopwords en cada palabra, deberías obtener la salida esperada: