Análisis de sentimiento
Le entrega un lote de reseñas, tickets o comentarios y le devuelve, para cada uno, si el tono es positivo, negativo o neutro, junto con su nivel de confianza. Existe para que una bandeja de soporte, un feed de reseñas o una columna de texto libre en una encuesta dejen de depender de que alguien las lea una por una antes de poder actuar.
Ejecútela online
Ejecute esto en nuestros servidores con su cuenta. Las herramientas gratuitas corren en su navegador; esta cobra de su saldo del KIT según el precio de arriba.
El problema que resuelve de verdad
La mayoría de los equipos no tiene un documento largo que evaluar, tiene miles de textos cortos: reseñas de pedidos, comentarios de tienda de aplicaciones, transcripciones de chat, campos abiertos de encuestas. Leerlos uno a uno funciona hasta unos cientos, y una calificación promedio esconde que un mismo producto puede ser amado por su precio y odiado por el envío en el mismo párrafo. text/sentiment le pone a cada texto una etiqueta y un puntaje para convertir el montón en una tabla que se puede ordenar, filtrar y seguir en el tiempo.
Qué pasa cuando lo llamas
Envía un arreglo de textos a POST /text/sentiment, recibe de inmediato un task_id y la tarea corre de forma asíncrona sobre nuestra red global. Cuando termina, llega un webhook firmado con la clase de sentimiento y la confianza de cada elemento, o puede recuperar el mismo resultado desde un enlace firmado válido por 24 horas. Nada queda esperando en una pestaña del navegador ni bloquea su hilo de ejecución.
De dónde viene la clasificación de sentimiento
Juzgar el tono de un texto es una de las tareas más antiguas de la lingüística computacional, con raíces en métodos basados en léxicos que simplemente contaban palabras positivas y negativas. Los clasificadores modernos leen contexto en vez de palabras sueltas, por eso 'no está nada mal' se lee correctamente como positivo en lugar de arrastrarse hacia lo negativo por la palabra mal. Esa sensibilidad al contexto es lo que hace confiable clasificar en lote para decisiones reales.
Quién lo usa en la práctica
Líderes de soporte que quieren tickets etiquetados por ánimo antes de que un humano los abra. Equipos de producto que arman un tablero cruzando sentimiento con fechas de lanzamiento. Marketplaces que califican reseñas de vendedores al recibirlas. Plataformas de comunidad que detectan si un hilo se está poniendo tenso en tiempo real, no después de que alguien lo reporte.
Cómo encaja en un flujo automatizado
Como el endpoint es asíncrono y sin estado, entra sin fricción en un flujo basado en colas: recibir el texto, llamar al endpoint, dejar que el webhook escriba el resultado en su base de datos y disparar lógica adicional solo para las etiquetas que le importan. No hace falta un bucle de sondeo ni vigilar un tablero, y una tarea fallida no cuesta nada gracias a los reintentos automáticos antes de llegar a un error facturable.
Qué puede hacer con ella
Priorización de tickets de soporte
Etiquete cada ticket con su sentimiento apenas llega, para que los clientes realmente enojados aparezcan antes que las consultas rutinarias en vez de esperar en orden de llegada.
Monitoreo de reseñas a gran escala
Clasifique miles de reseñas de productos durante la noche y alimente un tablero que muestra la tendencia del sentimiento por SKU, semana a semana.
Pulso post-lanzamiento
Corra el análisis de sentimiento sobre comentarios de tienda de aplicaciones después de cada versión para detectar un cambio de ánimo en horas, no en el próximo ciclo de encuesta.
Análisis de encuestas abiertas
Convierta miles de respuestas de texto libre tipo '¿algo más que agregar?' en una proporción positivo/negativo que cabe en una sola diapositiva.
Preguntas frecuentes
¿Cómo se usa la api de análisis de sentimiento?
Envía sus textos como un arreglo JSON a POST /text/sentiment, guarda el task_id que recibe y obtiene el resultado etiquetado por webhook o mediante un enlace firmado válido por 24 horas cuando termina el procesamiento.
¿Hay plan gratuito o prueba gratis?
No hay capa gratuita: las capas gratis se abusan y ralentizan a todos. El acceso funciona con un saldo prepago de ForHosting KIT: se recarga desde $10.00 (no caduca) y cada solicitud se cobra a su precio publicado, así que una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens ni créditos inventados, y una tarea fallida no se cobra.
¿En qué idiomas funciona?
El clasificador funciona en los idiomas escritos principales; el desempeño es más sólido en los idiomas con más recursos, así que conviene probar una muestra representativa de su propio texto antes de procesar todo el volumen.
¿Cuánto cuesta?
$0.003 por solicitud más $0.0135 por ítem, así que un lote de 100 reseñas cortas cuesta la tarifa base más $1.30, y solo se cobra por los ítems que efectivamente se completan.
¿Puedo enviar miles de textos en una sola solicitud?
Sí, puede agrupar tantos textos como tenga en un solo arreglo; la tarea corre de forma asíncrona precisamente para que los lotes grandes no bloqueen su hilo de solicitud.
¿Qué pasa si la tarea falla?
Los ítems fallidos se reintentan automáticamente hasta tres veces antes de devolver un error claro, y nunca se cobra por una tarea que no se completó.
¿En qué se diferencia de solo contar palabras positivas y negativas?
Contar palabras clave malinterpreta la negación y el sarcasmo; nuestro clasificador lee el contexto completo, así que frases como 'no está mal' quedan bien clasificadas.
¿Por cuánto tiempo están disponibles los resultados?
El enlace firmado del resultado es válido por 24 horas, y su texto original se elimina al terminar la ventana de retención; nunca se usa para entrenar modelos.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, y pronto desde nuestra app, el email y Telegram.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/text/sentiment \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"items":["valor-1","valor-2"]}'const res = await fetch("https://api.kit.forhosting.com/text/sentiment", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"items": [
"valor-1",
"valor-2"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/text/sentiment",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"items": [
"valor-1",
"valor-2"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/text/sentiment", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"items":["valor-1","valor-2"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"items":["valor-1","valor-2"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/text/sentiment", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"items": [
"valor-1",
"valor-2"
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.sentiment",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_tokens | 20000 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
422 | task_failed | La tarea falló tras 3 reintentos. No se cobra. |