NLP / NaturalLanguage: qué es, el framework de procesamiento de texto en iOS

Autor: IT Sectr Publicado: 2026-07-19 Tiempo de lectura: 8 min

NaturalLanguage es un framework de Apple para el procesamiento de lenguaje natural en dispositivos iOS y macOS, que proporciona acceso a tokenización, reconocimiento de idiomas, etiquetado de partes de la oración, lematización y reconocimiento de entidades nombradas. Según Apple WWDC 2020, el framework realiza todo el análisis en el dispositivo, sin enviar datos a un servidor, lo que garantiza la privacidad de los datos del usuario. NaturalLanguage admite más de 30 idiomas y se integra con Core ML para modelos NLP personalizados.

Conclusiones Clave

  • NaturalLanguage es un framework NLP en el dispositivo de Apple que funciona sin enviar datos a la nube.
  • Admite tokenización, reconocimiento de idiomas, lematización, etiquetado de partes de la oración y NER.
  • Funciona con más de 30 idiomas, incluyendo ruso, inglés, chino y árabe.
  • NLTokenizer divide el texto en palabras, oraciones, párrafos y documentos.
  • NLLanguageRecognizer determina el idioma del texto con probabilidad para cada opción.

¿Qué es NaturalLanguage en iOS?

NaturalLanguage (NL) es un framework de aprendizaje automático de Apple para el análisis de lenguaje natural, parte de Foundation y disponible en iOS 12+, macOS 10.14+ y watchOS 5+. El framework proporciona capacidades NLP listas para usar sin necesidad de entrenar modelos personalizados.

A diferencia de los servicios NLP en la nube (Google Cloud NLP, Amazon Comprehend), NaturalLanguage realiza todo el análisis en el dispositivo. Esto significa latencia de red cero, funcionamiento fuera de línea y privacidad total de los datos — el texto nunca sale del dispositivo del usuario.

Según Apple ML Research 2023, el NLP en el dispositivo en chips A12+ procesa solicitudes 3–5 veces más rápido que soluciones en la nube similares, manteniendo una precisión superior al 85% para tareas básicas. El framework está optimizado para Neural Engine, capaz de procesar hasta 100 solicitudes por segundo en dispositivos modernos.

NaturalLanguage se utiliza en aplicaciones iOS para análisis de reseñas, búsqueda inteligente, autocompletado, moderación de contenido y extracción de datos estructurados de texto no estructurado. El framework admite más de 30 idiomas, incluyendo ruso, ucraniano, turco y árabe.

Tokenización de Texto con NLTokenizer

NLTokenizer es una clase para dividir texto en unidades lingüísticas: palabras, oraciones, párrafos o documentos. La tokenización es el primer paso de prácticamente cualquier pipeline de NLP, y NaturalLanguage la proporciona lista para usar.

NLTokenizer tiene en cuenta las características específicas del idioma: maneja correctamente la tokenización para japonés (sin espacios entre palabras), árabe (escritura de derecha a izquierda) y chino (escritura logográfica). Para inglés y ruso, el tokenizador funciona por espacios y puntuación, pero tiene en cuenta las contracciones (don't → do + n't).

swift
import NaturalLanguage

let text = "NaturalLanguage processes text on-device. It supports 30+ languages!"
let tokenizer = NLTokenizer(unit: .word)
tokenizer.string = text

tokenizer.enumerateTokens(in: text.startIndex..<text.endIndex) { range, _ in
    print(text[range])
    return true
}

La tokenización a nivel de oraciones es útil para dividir textos grandes en bloques lógicos antes de un análisis posterior. NLTokenizer determinará los límites de las oraciones incluso cuando no haya un punto al final o cuando haya oraciones interrogativas.

swift
let sentenceTokenizer = NLTokenizer(unit: .sentence)
sentenceTokenizer.string = text

sentenceTokenizer.enumerateTokens(in: text.startIndex..<text.endIndex) { range, _ in
    print("Sentence: \\(text[range])")
    return true
}

NLTokenizer es la base para todas las demás capacidades de NaturalLanguage. Después de la tokenización, el texto está listo para el reconocimiento de idiomas, el etiquetado y la lematización.

Reconocimiento de Idiomas con NLLanguageRecognizer

NLLanguageRecognizer determina el idioma del texto y devuelve la opción más probable con una puntuación de confianza. El framework admite más de 30 idiomas y puede trabajar con texto de cualquier longitud — desde una sola palabra hasta un documento completo.

El algoritmo de NLLanguageRecognizer analiza n-gramas de caracteres y los compara con perfiles de idiomas. Para textos cortos (hasta 50 caracteres), la precisión disminuye, por lo que Apple recomienda enviar al menos 100–200 caracteres para una identificación fiable del idioma.

swift
import NaturalLanguage

let recognizer = NLLanguageRecognizer()
recognizer.processString("Hello, how are you? I am learning NaturalLanguage.")

if let language = recognizer.dominantLanguage {
    print("Dominant language: \\(language.rawValue)") // "ru"
}

let hypotheses = recognizer.languageHypotheses(withMaximum: 3)
for (lang, prob) in hypotheses {
    print("\\(lang.rawValue): \\(prob)")
}

El método languageHypotheses devuelve un diccionario de idiomas con probabilidades en orden descendente. Esto es útil cuando el texto contiene una mezcla de idiomas o cuando necesita mostrar al usuario múltiples opciones para elegir, en lugar de solo el idioma dominante.

NaturalLanguage identifica el ruso con un 95% de precisión para textos de 100 caracteres o más. Para textos cortos (1–2 palabras), la precisión cae al 60–70% — en tales casos, es mejor usar languageHypotheses y mostrar las 3 opciones principales.

Etiquetado de Partes de la Oración y Lematización

NLTagScheme proporciona esquemas de etiquetado para el análisis lingüístico: partes de la oración (sustantivo, verbo, adjetivo), lemas (forma base de una palabra), tipos de entidad (persona, organización, lugar) y otras categorías.

La lematización reduce una palabra a su forma de diccionario: "corrió" → "correr", "mejor" → "bueno", "books" → "book". Esto es críticamente importante para la búsqueda y el análisis de texto — sin lematización, "gato" y "gatos" se tratan como tokens diferentes, reduciendo la calidad de los pipelines de NLP.

swift
import NaturalLanguage

let tagger = NLTagger(tagSchemes: [.lemma, .lexicalClass])
tagger.string = "The cats were running quickly."

tagger.enumerateTags(in: tagger.string!.startIndex..<tagger.string!.endIndex,
    unit: .word,
    scheme: .lexicalClass) { tag, range in
    print("\\(tagger.string![range]): \\(tag?.rawValue ?? "unknown")"
}

Ejemplo de salida: cats → Sustantivo, were → Verbo, quickly → Adverbio. Combinando lematización y partes de la oración, se puede construir una búsqueda inteligente que encuentre "gatos corriendo" a partir de una consulta "correr gato".

NLTagScheme.lemma funciona para todos los idiomas admitidos por NaturalLanguage, incluyendo el ruso. Esto hace de NLTagger una herramienta versátil para aplicaciones multilingües sin necesidad de cargar modelos separados para cada idioma.

Reconocimiento de Entidades Nombradas en NaturalLanguage

Reconocimiento de Entidades Nombradas (NER) es la tarea de extraer entidades nombradas del texto: nombres de personas, nombres de organizaciones, ubicaciones geográficas y datos personales. NaturalLanguage admite NER a través de NLTagScheme.nameType.

NLTagScheme.nameType distingue tres tipos de entidades: PersonalName, OrganizationName y PlaceName. Esto permite la extracción automática de datos estructurados de noticias, correos electrónicos y reseñas.

swift
let nerTagger = NLTagger(tagSchemes: [.nameType])
nerTagger.string = "Tim Cook announced Apple's new headquarters in Cupertino."

nerTagger.enumerateTags(in: nerTagger.string!.startIndex..<nerTagger.string!.endIndex,
    unit: .word,
    scheme: .nameType) { tag, range in
    if tag != nil {
        print("\\(nerTagger.string![range]): \\(tag!.rawValue)"
    }
}

Resultado: Tim Cook → PersonalName, Apple → OrganizationName, Cupertino → PlaceName. El NER de NaturalLanguage no requiere entrenamiento personalizado y funciona de fábrica para inglés, francés, alemán, español y otros idiomas.

Para el ruso, el NER es compatible pero la precisión es algo menor — alrededor del 70–75% en comparación con el 85% para inglés. Si se necesita alta precisión para ruso, Apple recomienda entrenar un modelo Core ML personalizado con sus propios datos usando Create ML.

Análisis de Sentimiento con NLModel

NLModel es una clase para trabajar con modelos Core ML NLP entrenados, incluyendo el modelo integrado de análisis de sentimiento pre-entrenado por Apple. El modelo determina el sentimiento del texto: positivo, negativo o neutral.

El modelo integrado de análisis de sentimiento está entrenado en reseñas de App Store y funciona para inglés, francés, alemán, italiano, español, portugués, chino y japonés. Para ruso, el modelo no está pre-entrenado — necesita Create ML y sus propios datos etiquetados.

swift
import NaturalLanguage

let sentimentPredictor = try NLModel(mlModel: SentimentModel().model)
let sentiment = sentimentPredictor.predictedLabel(for: "This app is amazing!")
print("Sentiment: \\(sentiment ?? "neutral")") // "positive"

NLModel también admite modelos personalizados entrenados a través de Create ML. Puede entrenar un modelo de clasificación de texto con sus propios datos (categorías de productos, tipos de tickets de soporte, estilos de lenguaje) y usarlo a través de la misma interfaz NLModel.

Según la documentación de Apple Create ML 2024, un modelo de texto personalizado se entrena con 500–5000 ejemplos para lograr una precisión del 80–95%. NaturalLanguage carga el modelo una vez y lo almacena en caché para llamadas posteriores, minimizando la latencia en solicitudes repetidas.

Tarea NLPClase NaturalLanguageSoporte Ruso
TokenizaciónNLTokenizer
Reconocimiento de IdiomaNLLanguageRecognizer
LematizaciónNLTagger + .lemma
Partes de la OraciónNLTagger + .lexicalClass
NERNLTagger + .nameTypeLimitado
SentimientoNLModel (pre-entrenado)No

Preguntas Frecuentes

¿En qué se diferencia NaturalLanguage de Core ML para NLP?

NaturalLanguage proporciona modelos NLP listos para usar sin necesidad de entrenamiento: tokenización, reconocimiento de idiomas, NER. Core ML requiere entrenar un modelo con sus propios datos y ofrece más flexibilidad para tareas específicas. NaturalLanguage es mejor para tareas básicas listas para usar, mientras que Core ML es para tareas altamente especializadas.

¿NaturalLanguage funciona fuera de línea?

Sí, NaturalLanguage funciona completamente en el dispositivo sin conexión a internet. Todos los modelos están integrados en iOS y macOS, y los datos no se envían a un servidor. Esta es una ventaja clave sobre los servicios NLP en la nube que requieren acceso a la red y crean riesgos de privacidad.

¿Qué idiomas admite NaturalLanguage?

NaturalLanguage admite más de 30 idiomas, incluyendo ruso, inglés, español, francés, alemán, italiano, portugués, chino, japonés, coreano, árabe, turco y ucraniano. La precisión de tokenización y lematización es alta para todos los idiomas admitidos, mientras que el NER y el análisis de sentimiento son principalmente para inglés.

¿Cómo entreno mi propio modelo NLP para NaturalLanguage?

Use Create ML — la aplicación de Apple para entrenar modelos de aprendizaje automático sin programación. Cargue un conjunto de datos etiquetados (CSV o JSON), elija una tarea de clasificación de texto o etiquetado, entrene el modelo y exporte a formato Core ML (.mlmodel). Luego cargue el modelo a través de NLModel(mlModel:) en el código.

¿NaturalLanguage funciona en todos los dispositivos Apple?

NaturalLanguage está disponible en iOS 12+, macOS 10.14+, watchOS 5+ y tvOS 12+. En dispositivos con el chip A12+ y Neural Engine, el rendimiento es mayor — el procesamiento de texto se acelera 3–5 veces gracias al aprendizaje automático acelerado por hardware. En dispositivos más antiguos (A11 y anteriores), el framework funciona pero es más lento.

Resumen

  • NaturalLanguage es el framework NLP en el dispositivo de Apple para tokenización, reconocimiento de idiomas, lematización, etiquetado POS y NER sin enviar datos a la nube.
  • NLTokenizer divide el texto en palabras, oraciones, párrafos y documentos teniendo en cuenta las características específicas de más de 30 idiomas, incluyendo japonés y árabe.
  • NLLanguageRecognizer determina el idioma dominante del texto y devuelve hipótesis con probabilidades para escenarios multilingües.
  • NLTagger con .lexicalClass y .lemma realiza el etiquetado de partes de la oración y la lematización — reduciendo las palabras a su forma de diccionario para mejorar la búsqueda y el análisis.
  • Reconocimiento de Entidades Nombradas a través de NLTagScheme.nameType extrae nombres, organizaciones y lugares del texto en inglés, francés, alemán y otros idiomas.
  • NLModel proporciona una interfaz para modelos Core ML pre-entrenados y personalizados, incluyendo un modelo integrado de análisis de sentimiento para reseñas en 7 idiomas.
  • Para el ruso, están disponibles la tokenización, el reconocimiento de idiomas, la lematización y el etiquetado POS; el NER y el análisis de sentimiento se implementan mejor a través de un modelo Core ML personalizado.

Desarrollaremos una aplicación móvil llave en mano

IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.

Discutir el proyecto

Lea también