Tengo una duda.
Si en el content estoy tomando solo las palabras que no esten en stopwd, ¿ Como es que len(content)/len(text) es el porcentaje de stopwords?, ¿no deberia ser 1 - len(content)/len(text)?
Introducción al Procesamiento de Lenguaje Natural
Fundamentos del Procesamiento de Lenguaje Natural con Python y NLTK
Evolución y Técnicas del Procesamiento del Lenguaje Natural
Procesamiento del Lenguaje Natural con Python y NLTK
Fundamentos con NLTK
Procesamiento de Lenguaje Natural con Python en Google Colab
Expresiones Regulares en Python: Patrones de Búsqueda Avanzados
Tokenización de Texto con Expresiones Regulares en Python
Estadística para Procesamiento del Lenguaje: Riqueza Léxica y Métricas
Cálculo de frecuencias con NLTK y diccionarios en Python
Filtrado y Visualización de Frecuencias de Palabras con NLTK y NumPy
Estadísticas de Ennegramas y Colocaciones en Textos
Extracción de Ngramas y Bigramas con NLTK en Python
Análisis de Colocaciones con NLTK y Pandas en Python
Visualización de Colocaciones en Textos con Pandas y Plotly
Identificación de Colocaciones en Textos con NLTK y PMI
Recursos Léxicos: Uso y Aplicación en Procesamiento del Lenguaje
Recursos Léxicos en Python: Vocabularios, Frecuencias y Stopwords
Traducción de palabras con Swadesh en procesamiento de lenguaje natural
Uso de WarNet para Procesamiento del Lenguaje Natural
Análisis de Sinsets e Hipónimos con NLTK y WordNet en Google Colab
Medición de Similitud Semántica con WordNet en Python
Extracción y Procesamiento de Texto desde Páginas Web con NLTK
Organización de Código en Google Colab con Funciones y Módulos
Funciones y Buenas Prácticas en Google Colab y Python
Perspectivas de lo que viene
Fundamentos del Procesamiento del Lenguaje Natural con NLTK
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Los recursos léxicos son colecciones de palabras que contienen información sobre su uso, categoría léxica y contexto, lo cual es vital al trabajar con procesamiento de lenguaje natural (NLP, por sus siglas en inglés). Comprender su clasificación y aplicaciones es crucial para mejorar nuestros modelos y análisis de texto. Estos se dividen en dos categorías principales:
Eliminar las stopwords es esencial para procesar texto de manera significativa, ya que estas palabras comunes no aportan información relevante. La librería NLTK facilita esta tarea al proporcionar una lista de stopwords para distintos idiomas. Veamos cómo se lleva a cabo el proceso:
import nltk
from nltk.corpus import stopwords
# Definimos la función que calculará el porcentaje de stopwords en un texto
def stopwords_porcentaje(texto):
# Seleccionar las stopwords en el idioma requerido, aquí usamos inglés
stop_words = set(stopwords.words('english'))
# Filtrar el texto eliminando cualquier stopword
contenido_filtrado = [w for w in texto if w.lower() not in stop_words]
# Calcular el porcentaje de stopwords
return len(contenido_filtrado) / len(texto)
# Aplicar la función sobre un texto, por ejemplo, el libro Moby Dick
texto = nltk.book.text1
print(f"Porcentaje de stopwords: {stopwords_porcentaje(texto)}")
El uso de recursos léxicos es esencial para mejorar la precisión y eficiencia en el procesamiento del lenguaje. Estas son algunas de las razones clave para implementar recursos léxicos en tus proyectos de NLP:
En conclusión, dominar el uso de recursos léxicos es crucial para cualquier profesional interesado en el procesado de datos textuales. Instamos a todos a experimentar y aplicar estos conceptos en sus propios proyectos para seguir avanzando en este fascinante campo.
Aportes 10
Preguntas 3
Tengo una duda.
Si en el content estoy tomando solo las palabras que no esten en stopwd, ¿ Como es que len(content)/len(text) es el porcentaje de stopwords?, ¿no deberia ser 1 - len(content)/len(text)?
Exacto, como mencionan otros estudiantes, la funcion stopwords_percentage tal y como esta en la clase devuelve la cantidad de palabras que no son stopwords.
Para arreglarlo como ya mencionaron otros estudiantes, se pudiera cambiar la condicion del list comprehension de not in
a in
O cambiar len(content)/len(text)
a 1 - len(content)/len(text)
def stopwords_percentage(text):
stopwd = stopwords.words('english')
# content = [w for w in text if w.lower() not in stopwd]
content = [w for w in text if w.lower() in stopwd]
return len(content)/len(text)
Sólo quitamos el not y listo
Porcentaje de stop words
Recursos léxicos
Colecciones de palabras o frases que puede o no contener metadatos de la colección
ejemplo
Le puedes decir que se calle que ame va a enloquecer
Calle[verbo] conjugación del verbo callar
Ten cuidado al cruzar la calle porque el semáforo esta en rojo
Calle[sustantivo] Referencia al espacio publico por donde hay transito
Librerias
import nltk
nltk.download('book')
from nltk.book import *
from nltk.corpus import stopwords
Vocabulario y frecuencia
# eL VOCABULARIO SON PALABRAS UNICAS EN EL CORPUS
vocab= sorted(set(text1))
vocab
#Distribucion es la frecuencia en que aparece una palabra
word_freq= FreqDist(text1)
Uso de stopwords (porcentaje)
def stopwords_percentage(text):
stopwd= stopwords.words('english')
content = [w for w in text if w.lower() in stopwd]
return len(content)/len(text)
Uso de la funcion
stopwords_percentage(text1)
Saber de los stopwords me hubiera sido tan util hace un año cuando implementé en PHP a mano limpia (y sucia) una coleccion de “stopwords” sin saberlo. 🤦♂️
Vocabulario: Lista donde tenemos todas las palabras únicas de un corpus.
Ahí en esa parte dentro de la función, aún aparece la confusión que hizo el usuario ** gersonrpq**.
Comprobe jugando con el “not in” y el “in” dentro del objeto “content” y me salió que el porcentaje de stopwords es de 47% (0.471…):
content = [word for word in text if word.lower() in stopwd]
Y el resto del contenido del texto, un 53% (0.528…)
content = [word for word in text if word.lower() not in stopwd]
Y así le encontré sentido a la función. Lo que sumado ambos porcentajes da 100%.
Saludos.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?