• Skip to primary navigation
  • Skip to main content
  • Skip to footer

Codemotion Magazine

We code the future. Together

  • Discover
    • Events
    • Community
    • Partners
    • Become a partner
    • Hackathons
  • Magazine
    • DevOps
    • Carreras tech
    • Frontend
    • Inteligencia Artificial
    • Dev life
    • Desarrollo web
  • Talent
    • Discover Talent
    • Jobs
    • Manifiesto
  • Companies
  • For Business
    • EN
    • IT
    • ES
  • Sign in
ads

Orli Dunoctubre 13, 2025 5 min read

Primeros Pasos en PLN y el Análisis de Sentimientos

Inteligencia Artificial
facebooktwitterlinkedinreddit

¿Alguna vez te has preguntado cómo las máquinas logran “leer” y “entender” lo que sientes? En la era digital, la cantidad de texto que generamos es asombrosa: tweets, reseñas, comentarios… Detrás de cada palabra, hay una opinión o una emoción. El Procesamiento de Lenguaje Natural (PLN) o NLP (Natural Language Processing) es el campo de la Inteligencia Artificial que nos permite desbloquear ese tesoro de datos. Y la mejor forma de empezar es con el Análisis de Sentimientos (también conocido como Opinion Mining).

¿Qué es el Análisis de Sentimientos?

El Análisis de Sentimientos es la aplicación del PLN que busca identificar, extraer, cuantificar y estudiar los estados afectivos y la información subjetiva. El NLP es el puente entre el lenguaje humano y las máquinas. En términos sencillos, es enseñar a un sistema informático a determinar si un fragmento de texto expresa una opinión positiva, negativa o neutral.

Recommended article
octubre 1, 2025

Azure ML: Del Código a la Producción en la Nube

Orli Dun

Orli Dun

Aprendizaje automático

Conceptos básicos antes de empezar

  • Tokenización: dividir un texto en palabras o frases.
  • Lematización/Stemming: reducir palabras a su forma base (ej. corriendo → correr).
  • Vectorización: transformar texto en números para que un modelo pueda procesarlo.
  • Clasificación: asignar etiquetas (positivo, negativo, neutral) a un texto.

La Tríada Emocional 

En su forma más básica, el análisis de sentimientos clasifica el texto en una de estas tres categorías:

  • Positivo: Expresa satisfacción, agrado, apoyo, etc. (Ej.: “Este producto es increíble y superó mis expectativas.”)
  • Negativo: Expresa insatisfacción, disgusto, crítica, etc. (Ej.: “El servicio fue lento y la calidad es decepcionante.”)
  • Neutral : Expresa hechos, información objetiva o una opinión sin carga emocional clara. (Ej.: “La reunión está programada para el martes a las 10 a.m.”)

Tu Ruta de Inicio en PLN con Análisis de Sentimientos

Empezar en el mundo del PLN puede parecer abrumador, pero el Análisis de Sentimientos ofrece un camino claro y gratificante. ¡Aquí te muestro los pasos fundamentales!

1. Preprocesamiento del Texto: La Limpieza Inicial

Antes de que una máquina pueda “entender” el texto, este debe ser limpiado y estandarizado. Este paso es crítico:

  • Tokenización: Dividir el texto en unidades más pequeñas llamadas tokens (palabras o frases). Ej.: “La comida es buena.” → [‘La’, ‘comida’, ‘es’, ‘buena’, ‘.’]
  • Eliminación de Stop Words: Descartar palabras comunes que no añaden significado emocional (ej. ‘el’, ‘la’, ‘un’, ‘y’).
  • Lematización/Stemming: Reducir las palabras a su raíz o forma base para que el modelo las reconozca como la misma entidad. Ej.: ‘corriendo’, ‘correrá’ → ‘corr’ (Stemming) o ‘correr’ (Lematización).

2. Representación del Texto: De Palabras a Números

Las computadoras solo entienden números. Debemos convertir nuestros tokens en un formato numérico que el algoritmo de Machine Learning pueda procesar.

  • Bag-of-Words (BoW): Un método simple donde se cuenta la frecuencia de cada palabra en el documento. Esto ignora el orden, pero conserva la información de qué palabras están presentes.
  • TF-IDF (Frecuencia de Término — Frecuencia Inversa de Documento): Asigna pesos a las palabras. Un peso alto significa que la palabra es importante en un documento específico, pero no es común en toda la colección. Esto es genial para resaltar términos clave.
  • Word Embeddings (Embeddings de Palabras): Técnicas más avanzadas (como Word2Vec o modelos basados en Transformers como BERT) que mapean palabras en vectores de alta dimensión. Estos vectores capturan el contexto semántico de la palabra, ¡permitiendo a la máquina entender que ‘rey’ y ‘reina’ están relacionados!

3. Modelado: Elige tu Algoritmo 

Con los datos listos, es hora de entrenar al modelo de clasificación:

  • Enfoque Basado en Lexicones: Utiliza listas predefinidas de palabras que ya están etiquetadas como positivas o negativas (lexicones). Simplemente se suman los pesos de las palabras del texto. ¡Es simple y rápido!
  • Enfoque Basado en Machine Learning: Entrenar un clasificador (como Regresión Logística, Naïve Bayes, o Support Vector Machines) en un conjunto de datos previamente etiquetado (ej. reseñas que ya sabemos si son positivas o negativas). Es más preciso, pero requiere datos de entrenamiento.
  • Enfoque Basado en Deep Learning: Usar Redes Neuronales Recurrentes (RNNs) o, más popularmente, modelos basados en Transformers. Estos son el estado del arte y ofrecen la mayor precisión al capturar matices complejos y el orden de las palabras.

Herramientas Esenciales para Empezar

No tienes que empezar desde cero. El ecosistema de PLN es robusto y amigable para principiantes:

Ejemplo 1: Análisis de sentimientos con TextBlob

TextBlob es una librería sencilla para empezar en NLP.

from textblob import TextBlob

# Ejemplos de frases
frases = [
    "Me encanta este producto, es increíble!",
    "El servicio fue terrible, no lo recomiendo.",
    "Está bien, pero podría ser mejor."
]

for frase in frases:
    blob = TextBlob(frase)
    sentimiento = blob.sentiment.polarity  # valor entre -1 (negativo) y 1 (positivo)
    
    if sentimiento > 0:
        etiqueta = "Positivo"
    elif sentimiento < 0:
        etiqueta = "Negativo"
    else:
        etiqueta = "Neutral"
    
    print(f"Texto: {frase}")
    print(f"Polaridad: {sentimiento:.2f} → {etiqueta}\n")Lenguaje del código: PHP (php)

Explicación: Lo anterior con sentiment.polarity devuelve un número entre -1 y 1. Según el valor, clasificamos el texto en positivo, negativo o neutral.

Ejemplo 2: Usando NLTK y un clasificador Naive Bayes

Si quieres un poco más de control, puedes entrenar tu propio modelo.

import nltk
from nltk.corpus import movie_reviews
import random

# Descargar dataset de reseñas de películas
nltk.download('movie_reviews')

# Crear dataset con etiquetas
documentos = [(list(movie_reviews.words(fileid)), category)
              for category in movie_reviews.categories()
              for fileid in movie_reviews.fileids(category)]

random.shuffle(documentos)

# Extraer las 2000 palabras más frecuentes
all_words = nltk.FreqDist(w.lower() for w in movie_reviews.words())
palabras_caracteristicas = list(all_words)[:2000]

def extractor_caracteristicas(doc):
    palabras_doc = set(doc)
    return {palabra: (palabra in palabras_doc) for palabra in palabras_caracteristicas}

# Entrenar clasificador
caracteristicas = [(extractor_caracteristicas(d), c) for (d, c) in documentos]
train_set, test_set = caracteristicas[100:], caracteristicas[:100]
clasificador = nltk.NaiveBayesClassifier.train(train_set)

# Evaluar
print("Precisión:", nltk.classify.accuracy(clasificador, test_set))

# Probar con un texto nuevo
texto = "This movie was fantastic! I loved it."
print(clasificador.classify(extractor_caracteristicas(texto.split())))Lenguaje del código: PHP (php)

Explicación:

  • Usamos un dataset de reseñas de películas ya etiquetadas.
  • Extraemos palabras frecuentes como características.
  • Entrenamos un clasificador Naive Bayes.
  • Probamos con un texto nuevo para ver si lo clasifica como positivo o negativo.

¿Qué sigue después de estos primeros pasos?

  • Explorar modelos pre-entrenados como BERT o DistilBERT con transformers.
  • Aplicar análisis de sentimientos en redes sociales (ej. tweets).
  • Combinar NLP con visualización de datos para mostrar tendencias de opinión.

¡El Reto Real: Superando la Ironía y la Negación!

El PLN no es perfecto y el español, con su riqueza, presenta desafíos únicos:

  1. Sarcasmo e Ironía: Un modelo simple puede leer “El teléfono es tan rápido como un caracol” y clasificarlo como neutral o incluso positivo (si solo mira ‘rápido’). ¡El contexto es crucial!
  2. Doble Negación: Frases como “No me disgusta del todo” son complicadas de interpretar correctamente.
  3. Ambigüedad: “Me gustó la trama, pero el final fue aburrido.” (Implica tanto positivo como negativo). Aquí el análisis por frases (Aspect-Based Sentiment Analysis) es la solución.

El Análisis de Sentimientos no es solo un ejercicio académico; es una herramienta de negocios poderosísima. Permite a las empresas escuchar la “voz del cliente” a escala masiva y en tiempo real, mejorando productos y servicios. Es la puerta de entrada perfecta al mundo del NLP:

  • Es intuitivo (todos entendemos qué es positivo o negativo).
  • Tiene aplicaciones inmediatas en marketing, soporte, educación y comunidades.
  • Te permite escalar desde librerías simples como TextBlob hasta modelos de última generación como transformers.

El lenguaje humano es complejo, pero con estas herramientas ya tienes un mapa para empezar a explorarlo. ¡Así que desempolva tu Python y sumérgete! El mundo de las palabras te espera.

Codemotion Collection Background
ai
Seleccionados para ti

¿Te gustaría leer más artículos como este? Explora la colección ai , con una selección personalizada y siempre actualizada de contenido nuevo.

Share on:facebooktwitterlinkedinreddit

Tags:IA Machine Learning

Orli Dun
¡De las finanzas a la revolución digital! Software Developer - Cloud & AI - OCI Certified - Tech Content Creator #porunmillondeamigos
“Funciona mejor en la app”: una estrategia que puede estar jugando en contra
Artículo anterior
Nivel Avanzado en PLN: Análisis de Sentimientos con Hugging Face y Transformers
Próximo artículo

Footer

Discover

  • Events
  • Community
  • Partners
  • Become a partner
  • Hackathons

Magazine

  • Tech articles

Talent

  • Discover talent
  • Jobs

Companies

  • Discover companies

For Business

  • Codemotion for companies

About

  • About us
  • Become a contributor
  • Work with us
  • Contact us

Follow Us

© Copyright Codemotion srl Via Marsala, 29/H, 00185 Roma P.IVA 12392791005 | Privacy policy | Terms and conditions