
Clasificacion de texto en el dispositivo para apps moviles
Como construir clasificacion de texto rapida y precisa que se ejecuta en el telefono del usuario. Analisis de sentimiento, categorizacion de contenido, deteccion de intencion y filtrado de spam sin llamadas a API.
La clasificacion de texto es la funcion de IA en el dispositivo mas practica. Es rapida (menos de 100ms), precisa (90%+ con fine-tuning), funciona en los modelos mas pequenos (1B) y se ejecuta en practicamente cualquier telefono moderno.
Si tu app necesita categorizar contenido, detectar intencion, filtrar spam, analizar sentimiento o enrutar mensajes, la clasificacion en el dispositivo es el enfoque mas eficiente.
Por que la clasificacion es ideal para el dispositivo
La clasificacion tiene propiedades que la hacen perfecta para movil:
Salida corta: El modelo genera una sola palabra o frase corta (la etiqueta de categoria). Esto toma milisegundos, no segundos.
Modelo pequeno suficiente: Un modelo 1B fine-tuned maneja clasificacion con 90-94% de precision. No se necesitan modelos mas grandes y lentos.
Alta frecuencia: La clasificacion frecuentemente se ejecuta en cada pieza de contenido (cada mensaje, cada nota, cada titulo de foto). A alta frecuencia, los costos de API en la nube se acumulan rapido. En el dispositivo, cada clasificacion es gratuita.
Compatible con segundo plano: La clasificacion puede ejecutarse en segundo plano sin interaccion del usuario. Auto-categorizar gastos mientras se ingresan. Auto-etiquetar notas al guardar. Auto-detectar spam al recibir mensajes.
Casos de uso de clasificacion
Analisis de sentimiento
Determina el tono emocional de la entrada del usuario. Util para:
- Apps de retroalimentacion de clientes (positivo/negativo/neutral)
- Monitoreo de redes sociales
- Apps de diario/seguimiento de animo
- Enrutamiento de prioridad de tickets de soporte
Categorizacion de contenido
Asigna categorias automaticamente al contenido del usuario:
- Categorizacion de gastos (comida, transporte, entretenimiento, servicios)
- Etiquetado de notas (trabajo, personal, ideas, referencia)
- Clasificacion de correos (importante, boletin, social, transaccional)
- Organizacion de albumes de fotos (viaje, comida, personas, naturaleza)
Deteccion de intencion
Entiende lo que el usuario quiere hacer:
- Enrutamiento de asistente de voz (reproducir musica, poner temporizador, enviar mensaje, buscar)
- Clasificacion de intencion de chatbot (hacer pregunta, presentar queja, solicitar reembolso)
- Clasificacion de consultas de busqueda (navegacion, informacion, transaccion)
Filtrado de contenido
Detecta y filtra contenido no deseado:
- Deteccion de spam en apps de mensajeria
- Marcado de contenido inapropiado
- Deteccion de mensajes fuera de tema en apps de comunidad
Deteccion de idioma
Identifica el idioma del texto de entrada para apps multilingues. Enruta al modelo o pipeline de traduccion apropiado.
Implementacion
El patron de prompt
Para clasificacion basada en LLM, el prompt es simple:
Classify the following text into one of these categories: [Food, Transport, Entertainment, Utilities, Shopping, Healthcare, Other]
Text: "Uber ride to airport"
Category:
El modelo genera una sola palabra: "Transport"
Fine-tuning para clasificacion
Crea ejemplos de entrenamiento en formato de chat:
{"messages": [
{"role": "user", "content": "Classify: Uber ride to airport"},
{"role": "assistant", "content": "Transport"}
]}
{"messages": [
{"role": "user", "content": "Classify: Netflix monthly subscription"},
{"role": "assistant", "content": "Entertainment"}
]}
{"messages": [
{"role": "user", "content": "Classify: Grocery store visit"},
{"role": "assistant", "content": "Food"}
]}
Con 500-1,000 ejemplos en todas las categorias, un modelo 1B fine-tuned logra 90-94% de precision. Esto supera lo que GPT-4o con prompts logra en la misma tarea (tipicamente 78-85%).
Salida estructurada
Para parsing confiable, instruye al modelo a generar JSON:
{"messages": [
{"role": "user", "content": "Classify this expense: Uber ride to airport\nOutput JSON with 'category' and 'confidence' fields."},
{"role": "assistant", "content": "{\"category\": \"Transport\", \"confidence\": \"high\"}"}
]}
Los modelos fine-tuned aprenden a producir JSON consistente. Parsea la salida directamente en el codigo de tu app.
Optimizacion de velocidad
La clasificacion genera muy pocos tokens (1-10). Puedes optimizar para maximo rendimiento:
- Configura
n_predicta un valor bajo (10-20 tokens maximo) - Usa tokens de
stoppara detener la generacion despues de la etiqueta de categoria - Usa temperatura 0 para salida determinista
- Agrupa multiples clasificaciones si procesas una lista
Con estas optimizaciones, un modelo 1B clasifica 5-15 elementos por segundo en un telefono flagship.
Expectativas de rendimiento
Precision por tamano de datos de entrenamiento
| Ejemplos de entrenamiento | Precision 1B | Precision 3B |
|---|---|---|
| 100 | 78-82% | 82-86% |
| 250 | 84-88% | 87-91% |
| 500 | 88-92% | 91-94% |
| 1,000 | 90-94% | 93-96% |
| 2,000 | 92-95% | 94-97% |
Rendimientos decrecientes por encima de 1,000 ejemplos para la mayoria de tareas de clasificacion. Comienza con 500 y agrega mas solo si la precision es insuficiente.
Velocidad por dispositivo
| Dispositivo | Tiempo de clasificacion 1B | Clasificaciones/segundo |
|---|---|---|
| iPhone 16 Pro | 30-60ms | 15-30 |
| iPhone 14 | 50-80ms | 12-20 |
| Galaxy S24 | 40-70ms | 14-25 |
| Android gama media | 80-130ms | 8-12 |
Cada clasificacion se completa en menos de 150ms en cualquier telefono moderno. Los usuarios lo perciben como instantaneo.
Comparacion con APIs en la nube
| Metrica | API en la nube | En dispositivo 1B (fine-tuned) |
|---|---|---|
| Latencia | 500-2,000ms | 30-130ms |
| Precision (dominio) | 78-85% (con prompts) | 90-94% (fine-tuned) |
| Costo por clasificacion | $0.00003-0.0003 | $0 |
| Offline | No | Si |
| Privacidad | Datos enviados a terceros | En el dispositivo |
En el dispositivo gana en cada metrica para clasificacion: mas rapido, mas preciso (cuando esta fine-tuned), gratuito, offline y privado.
Patron de arquitectura
Servicio de clasificacion en segundo plano
Para apps que necesitan clasificar contenido automaticamente:
// Android: Clasificacion en segundo plano
class ClassificationService {
private val model: LlamaModel = LlamaModel()
fun classifyExpense(description: String): ExpenseCategory {
val prompt = "Classify: $description"
val result = model.generate(prompt, maxTokens = 10, temperature = 0f)
return ExpenseCategory.fromString(result.trim())
}
fun classifyBatch(items: List<String>): List<ExpenseCategory> {
return items.map { classifyExpense(it) }
}
}
Clasificacion en tiempo real
Para funciones que clasifican mientras el usuario escribe (auto-sugerir categoria mientras ingresa un gasto):
// iOS: Clasificacion en tiempo real con debounce
class ClassificationViewModel: ObservableObject {
@Published var suggestedCategory: String = ""
private var classifyTask: Task<Void, Never>?
func onTextChanged(_ text: String) {
classifyTask?.cancel()
classifyTask = Task {
try? await Task.sleep(nanoseconds: 300_000_000) // 300ms debounce
guard !Task.isCancelled else { return }
let category = await classifier.classify(text)
await MainActor.run { suggestedCategory = category }
}
}
}
Como empezar
- Define tus categorias. Lista las 5-20 etiquetas que tu clasificador debe producir.
- Crea ejemplos de entrenamiento. 500 ejemplos minimo, cubriendo todas las categorias con entradas realistas.
- Fine-tunea un modelo 1B. Usa una plataforma como Ertas: sube tus ejemplos, selecciona un modelo base 1B, entrena con LoRA, exporta GGUF.
- Integra llama.cpp. Agrega la libreria de inferencia a tu proyecto iOS o Android.
- Prueba con datos reales. Ejecuta tu conjunto de evaluacion a traves del modelo. Apunta a 90%+ de precision.
- Despliega. Incluye el modelo en el bundle o entrega via descarga post-instalacion.
La clasificacion es el camino mas rapido a IA en el dispositivo de calidad de produccion. El modelo es pequeno, la tarea es simple y los resultados son mediblemente mejores que las APIs en la nube para categorias especificas de dominio.
Ship AI that runs on your users' devices.
Early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.
Keep reading

Building an On-Device AI Assistant for Your Mobile App
Architecture patterns for building a conversational AI assistant that runs entirely on the user's device. Model selection, conversation management, UI patterns, and production considerations.

On-Device Semantic Search: AI-Powered Search Without a Server
How to build semantic search that runs entirely on the user's phone. Local embeddings, vector similarity, and natural language queries across user content without a server or API.

On-Device Content Generation: AI Drafts That Work Offline
How to build AI-powered drafting features that work without internet. Email replies, message suggestions, note expansion, and content templates generated entirely on the user's device.