NLP / NaturalLanguage: o que é, o framework de processamento de texto no iOS

Autor: IT Sectr Publicado: 2026-07-19 Tempo de leitura: 8 min

NaturalLanguage é um framework da Apple para processamento de linguagem natural em dispositivos iOS e macOS, fornecendo acesso a tokenização, reconhecimento de idiomas, etiquetagem de partes do discurso, lematização e reconhecimento de entidades nomeadas. De acordo com a Apple WWDC 2020, o framework realiza toda a análise no dispositivo, sem enviar dados para um servidor, garantindo a privacidade dos dados do usuário. O NaturalLanguage suporta mais de 30 idiomas e integra-se com o Core ML para modelos NLP personalizados.

Principais Conclusões

  • NaturalLanguage é um framework NLP no dispositivo da Apple que funciona sem enviar dados para a nuvem.
  • Suporta tokenização, reconhecimento de idiomas, lematização, etiquetagem de partes do discurso e NER.
  • Funciona com mais de 30 idiomas, incluindo russo, inglês, chinês e árabe.
  • NLTokenizer divide o texto em palavras, frases, parágrafos e documentos.
  • NLLanguageRecognizer determina o idioma do texto com probabilidade para cada opção.

O que é NaturalLanguage no iOS?

NaturalLanguage (NL) é um framework de aprendizado de máquina da Apple para análise de linguagem natural, parte do Foundation e disponível no iOS 12+, macOS 10.14+ e watchOS 5+. O framework fornece capacidades NLP prontas para uso sem a necessidade de treinar modelos personalizados.

Ao contrário dos serviços NLP em nuvem (Google Cloud NLP, Amazon Comprehend), o NaturalLanguage realiza toda a análise no dispositivo. Isso significa latência de rede zero, operação offline e privacidade total dos dados — o texto nunca sai do dispositivo do usuário.

De acordo com a Apple ML Research 2023, o NLP no dispositivo em chips A12+ processa solicitações 3–5 vezes mais rápido que soluções em nuvem similares, mantendo uma precisão acima de 85% para tarefas básicas. O framework é otimizado para o Neural Engine, capaz de processar até 100 solicitações por segundo em dispositivos modernos.

O NaturalLanguage é usado em aplicativos iOS para análise de avaliações, pesquisa inteligente, autocompletar, moderação de conteúdo e extração de dados estruturados de texto não estruturado. O framework suporta mais de 30 idiomas, incluindo russo, ucraniano, turco e árabe.

Tokenização de Texto com NLTokenizer

NLTokenizer é uma classe para dividir texto em unidades linguísticas: palavras, frases, parágrafos ou documentos. A tokenização é o primeiro passo de praticamente qualquer pipeline de NLP, e o NaturalLanguage a fornece pronta para uso.

O NLTokenizer leva em consideração as características específicas do idioma: ele lida corretamente com a tokenização para japonês (sem espaços entre palavras), árabe (escrita da direita para a esquerda) e chinês (escrita logográfica). Para inglês e russo, o tokenizador funciona por espaços e pontuação, mas leva em conta contrações (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
}

A tokenização no nível de frases é útil para dividir textos grandes em blocos lógicos antes da análise posterior. O NLTokenizer determinará os limites das frases mesmo quando não houver ponto no final ou quando houver frases 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 é a base para todas as outras capacidades do NaturalLanguage. Após a tokenização, o texto está pronto para reconhecimento de idiomas, etiquetagem e lematização.

Reconhecimento de Idiomas com NLLanguageRecognizer

NLLanguageRecognizer determina o idioma do texto e retorna a opção mais provável com uma pontuação de confiança. O framework suporta mais de 30 idiomas e pode trabalhar com texto de qualquer comprimento — de uma única palavra a um documento inteiro.

O algoritmo do NLLanguageRecognizer analisa n-gramas de caracteres e os compara com perfis de idiomas. Para textos curtos (até 50 caracteres), a precisão diminui, então a Apple recomenda enviar pelo menos 100–200 caracteres para uma identificação confiável do 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)")
}

O método languageHypotheses retorna um dicionário de idiomas com probabilidades em ordem decrescente. Isso é útil quando o texto contém uma mistura de idiomas ou quando você precisa mostrar ao usuário várias opções para escolher, em vez de apenas o idioma dominante.

O NaturalLanguage identifica o russo com 95% de precisão para textos de 100 caracteres ou mais. Para textos curtos (1–2 palavras), a precisão cai para 60–70% — nesses casos, é melhor usar languageHypotheses e mostrar as 3 principais opções.

Etiquetagem de Partes do Discurso e Lematização

NLTagScheme fornece esquemas de etiquetagem para análise linguística: partes do discurso (substantivo, verbo, adjetivo), lemas (forma base de uma palavra), tipos de entidade (pessoa, organização, lugar) e outras categorias.

A lematização reduz uma palavra à sua forma de dicionário: "correu" → "correr", "melhor" → "bom", "books" → "book". Isso é criticamente importante para pesquisa e análise de texto — sem lematização, "gato" e "gatos" são tratados como tokens diferentes, reduzindo a qualidade dos 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")"
}

Exemplo de saída: cats → Substantivo, were → Verbo, quickly → Advérbio. Combinando lematização e partes do discurso, você pode construir uma pesquisa inteligente que encontra "gatos correndo" a partir de uma consulta "correr gato".

NLTagScheme.lemma funciona para todos os idiomas suportados pelo NaturalLanguage, incluindo o russo. Isso torna o NLTagger uma ferramenta versátil para aplicativos multilíngues sem a necessidade de carregar modelos separados para cada idioma.

Reconhecimento de Entidades Nomeadas no NaturalLanguage

Reconhecimento de Entidades Nomeadas (NER) é a tarefa de extrair entidades nomeadas do texto: nomes de pessoas, nomes de organizações, localizações geográficas e dados pessoais. O NaturalLanguage suporta NER através do NLTagScheme.nameType.

NLTagScheme.nameType distingue três tipos de entidades: PersonalName, OrganizationName e PlaceName. Isso permite a extração automática de dados estruturados de notícias, e-mails e avaliações.

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. O NER do NaturalLanguage não requer treinamento personalizado e funciona imediatamente para inglês, francês, alemão, espanhol e outros idiomas.

Para o russo, o NER é suportado mas a precisão é um pouco menor — cerca de 70–75% contra 85% para inglês. Se for necessária alta precisão para russo, a Apple recomenda treinar um modelo Core ML personalizado com seus próprios dados usando o Create ML.

Análise de Sentimento com NLModel

NLModel é uma classe para trabalhar com modelos Core ML NLP treinados, incluindo o modelo integrado de análise de sentimento pré-treinado pela Apple. O modelo determina o sentimento do texto: positivo, negativo ou neutro.

O modelo integrado de análise de sentimento é treinado em avaliações da App Store e funciona para inglês, francês, alemão, italiano, espanhol, português, chinês e japonês. Para russo, o modelo não é pré-treinado — você precisa do Create ML e seus próprios dados rotulados.

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 também suporta modelos personalizados treinados através do Create ML. Você pode treinar um modelo de classificação de texto com seus próprios dados (categorias de produtos, tipos de tickets de suporte, estilos de linguagem) e usá-lo através da mesma interface NLModel.

De acordo com a documentação do Apple Create ML 2024, um modelo de texto personalizado treina com 500–5000 exemplos para alcançar 80–95% de precisão. O NaturalLanguage carrega o modelo uma vez e o armazena em cache para chamadas subsequentes, minimizando a latência para solicitações repetidas.

Tarefa NLPClasse NaturalLanguageSuporte Russo
TokenizaçãoNLTokenizerSim
Reconhecimento de IdiomaNLLanguageRecognizerSim
LematizaçãoNLTagger + .lemmaSim
Partes do DiscursoNLTagger + .lexicalClassSim
NERNLTagger + .nameTypeLimitado
SentimentoNLModel (pré-treinado)Não

Perguntas Frequentes

Como o NaturalLanguage é diferente do Core ML para NLP?

NaturalLanguage fornece modelos NLP prontos para uso sem necessidade de treinamento: tokenização, reconhecimento de idiomas, NER. O Core ML requer treinar um modelo com seus próprios dados e oferece mais flexibilidade para tarefas específicas. O NaturalLanguage é melhor para tarefas básicas prontas para uso, enquanto o Core ML é para tarefas altamente especializadas.

O NaturalLanguage funciona offline?

Sim, o NaturalLanguage funciona completamente no dispositivo sem conexão com a internet. Todos os modelos estão integrados no iOS e macOS, e os dados não são enviados para um servidor. Esta é uma vantagem key sobre serviços NLP em nuvem que requerem acesso à rede e criam riscos de privacidade.

Quais idiomas o NaturalLanguage suporta?

NaturalLanguage suporta mais de 30 idiomas, incluindo russo, inglês, espanhol, francês, alemão, italiano, português, chinês, japonês, coreano, árabe, turco e ucraniano. A precisão da tokenização e lematização é alta para todos os idiomas suportados, enquanto o NER e a análise de sentimento são principalmente para inglês.

Como treinar meu próprio modelo NLP para o NaturalLanguage?

Use o Create ML — o aplicativo da Apple para treinar modelos de aprendizado de máquina sem programação. Carregue um conjunto de dados rotulado (CSV ou JSON), escolha uma tarefa de classificação de texto ou etiquetagem, treine o modelo e exporte para o formato Core ML (.mlmodel). Em seguida, carregue o modelo através de NLModel(mlModel:) no código.

O NaturalLanguage funciona em todos os dispositivos Apple?

NaturalLanguage está disponível no iOS 12+, macOS 10.14+, watchOS 5+ e tvOS 12+. Em dispositivos com o chip A12+ e Neural Engine, o desempenho é maior — o processamento de texto é acelerado 3–5 vezes graças ao aprendizado de máquina acelerado por hardware. Em dispositivos mais antigos (A11 e anteriores), o framework funciona mas é mais lento.

Resumo

  • NaturalLanguage é o framework NLP no dispositivo da Apple para tokenização, reconhecimento de idiomas, lematização, etiquetagem POS e NER sem enviar dados para a nuvem.
  • NLTokenizer divide o texto em palavras, frases, parágrafos e documentos levando em conta as especificidades de mais de 30 idiomas, incluindo japonês e árabe.
  • NLLanguageRecognizer determina o idioma dominante do texto e retorna hipóteses com probabilidades para cenários multilíngues.
  • NLTagger com .lexicalClass e .lemma realiza a etiquetagem de partes do discurso e a lematização — reduzindo palavras à sua forma de dicionário para melhorar a pesquisa e análise.
  • Reconhecimento de Entidades Nomeadas através do NLTagScheme.nameType extrai nomes, organizações e lugares do texto em inglês, francês, alemão e outros idiomas.
  • NLModel fornece uma interface para modelos Core ML pré-treinados e personalizados, incluindo um modelo integrado de análise de sentimento para avaliações em 7 idiomas.
  • Para o russo, tokenização, reconhecimento de idiomas, lematização e etiquetagem POS estão disponíveis; NER e análise de sentimento são melhor implementados através de um modelo Core ML personalizado.

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também