Adicione classificação de texto no dispositivo ao seu aplicativo com TensorFlow Lite e Firebase - iOS Codelab

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

1. Visão Geral

class_result_screen.png

Bem-vindo ao codelab de classificação de texto com TensorFlow Lite e Firebase. Neste codelab, você aprenderá a usar o TensorFlow Lite e o Firebase para treinar e implantar um modelo de classificação de texto no seu aplicativo. Este codelab é baseado neste exemplo do TensorFlow Lite.

A classificação de texto é o processo de atribuir tags ou categorias ao texto de acordo com seu conteúdo. É uma das tarefas fundamentais no Processamento de Linguagem Natural (NLP) com aplicações amplas, como análise de sentimentos, rotulagem de tópicos, detecção de spam e detecção de intenção.

A análise de sentimento é a interpretação e classificação de emoções (positivas, negativas e neutras) dentro de dados de texto usando técnicas de análise de texto. A análise de sentimento permite que as empresas identifiquem o sentimento do cliente em relação a produtos, marcas ou serviços em conversas e comentários online.

Este tutorial mostra como construir um modelo de aprendizado de máquina para análise de sentimentos, em particular classificando o texto como positivo ou negativo. Este é um exemplo de classificação binária ou de duas classes, um tipo importante e amplamente aplicável de problema de aprendizado de máquina.

O que você vai aprender

  • Treine um modelo de análise de sentimentos do TF Lite com o TF Lite Model Maker
  • Implante modelos do TF Lite no Firebase ML e acesse-os do seu aplicativo
  • Acompanhe o feedback do usuário para medir a precisão do modelo com o Firebase Analytics
  • Desempenho do modelo de perfil por meio do Firebase Performance Monitoring
  • Selecione qual dos vários modelos implantados é carregado por meio do Configuração remota
  • Faça experiências com diferentes modelos por meio do Firebase A/B Testing

O que você precisará

  • Xcode 11 (ou superior)
  • CocoaPods 1.9.1 (ou superior)

Como você vai usar este tutorial?

Leia-o apenas Leia e complete os exercícios

Como classificaria sua experiência com a criação de aplicativos Android?

Novato Intermediário Proficiente

2. Crie um projeto de console do Firebase

Adicionar o Firebase ao projeto

  1. Acesse o console do Firebase .
  2. Selecione Criar novo projeto e nomeie seu projeto como "Firebase ML iOS Codelab".

3. Obtenha o Projeto de Amostra

Baixe o Código

Comece clonando o projeto de amostra e executando a pod update no diretório do projeto:

git clone https://github.com/FirebaseExtended/codelab-textclassification-ios.git
cd codelab-textclassification-ios
pod install --repo-update

Caso não tenha o git instalado, você também pode baixar o projeto de exemplo na página do GitHub ou clicando neste link . Depois de baixar o projeto, execute-o no Xcode e brinque com a classificação de texto para ter uma ideia de como ele funciona.

Configurar o Firebase

Siga a documentação para criar um novo projeto do Firebase. Depois de obter seu projeto, baixe o arquivo GoogleService-Info.plist do seu projeto do console do Firebase e arraste-o para a raiz do projeto Xcode.

9efb62a92f27e939.png

Adicione o Firebase ao seu Podfile e execute a instalação do pod.

pod 'FirebaseMLModelDownloader', '9.3.0-beta'

No método didFinishLaunchingWithOptions do seu AppDelegate , importe o Firebase na parte superior do arquivo

import FirebaseCore

E adicione uma chamada para configurar o Firebase.

FirebaseApp.configure()

Execute o projeto novamente para garantir que o aplicativo esteja configurado corretamente e não falhe na inicialização.

4. Treine um modelo de análise de sentimentos

Usaremos o TensorFlow Lite Model Maker para treinar um modelo de classificação de texto para prever o sentimento de um determinado texto.

Esta etapa é apresentada como um notebook Python que você pode abrir no Google Colab.

Abrir no Colab

Após concluir esta etapa, você terá um modelo de análise de sentimentos do TensorFlow Lite pronto para implantação em um aplicativo móvel.

5. Implante um modelo no Firebase ML

A implantação de um modelo no Firebase ML é útil por dois motivos principais:

  1. Podemos manter o tamanho da instalação do aplicativo pequeno e baixar o modelo apenas se necessário
  2. O modelo pode ser atualizado regularmente e com um ciclo de lançamento diferente de todo o aplicativo

O modelo pode ser implantado por meio do console ou programaticamente, usando o SDK Admin do Firebase. Nesta etapa, implantaremos por meio do console.

Primeiro, abra o Firebase Console e clique em Machine Learning no painel de navegação esquerdo. Clique em 'Começar' se estiver abrindo pela primeira vez. Em seguida, navegue até "Personalizado" e clique no botão "Adicionar modelo".

Quando solicitado, nomeie o modelo sentiment_analysis e carregue o arquivo que você baixou do Colab na etapa anterior.

3c3c50e6ef12b3b.png

6. Faça o download do modelo do Firebase ML

Escolher quando baixar o modelo remoto do Firebase para seu aplicativo pode ser complicado, pois os modelos TFLite podem crescer relativamente. Idealmente, queremos evitar carregar o modelo imediatamente quando o aplicativo for iniciado, pois se nosso modelo for usado para apenas um recurso e o usuário nunca usar esse recurso, teremos baixado uma quantidade significativa de dados sem motivo. Também podemos definir opções de download, como buscar modelos apenas quando conectado ao wifi. Se você quiser garantir que o modelo esteja disponível mesmo sem uma conexão de rede, é importante agrupá-lo também sem o aplicativo como backup.

Para simplificar, removeremos o modelo em pacote padrão e sempre faremos o download de um modelo do Firebase quando o aplicativo for iniciado pela primeira vez. Dessa forma, ao executar a análise de sentimentos, você pode ter certeza de que a inferência está sendo executada com o modelo fornecido pelo Firebase.

Na parte superior de ModelLoader.swift , importe o módulo Firebase.

import FirebaseCore
import FirebaseMLModelDownloader

Em seguida, implemente os seguintes métodos.

static func downloadModel(named name: String,
                          completion: @escaping (CustomModel?, DownloadError?) -> Void) {
  guard FirebaseApp.app() != nil else {
    completion(nil, .firebaseNotInitialized)
    return
  }
  guard success == nil && failure == nil else {
    completion(nil, .downloadInProgress)
    return
  }
  let conditions = ModelDownloadConditions(allowsCellularAccess: false)
  ModelDownloader.modelDownloader().getModel(name: name, downloadType: .localModelUpdateInBackground, conditions: conditions) { result in
          switch (result) {
          case .success(let customModel):
                  // Download complete.
                  // The CustomModel object contains the local path of the model file,
                  // which you can use to instantiate a TensorFlow Lite classifier.
                  return completion(customModel, nil)
          case .failure(let error):
              // Download was unsuccessful. Notify error message.
            completion(nil, .downloadFailed(underlyingError: error))
          }
  }
}

No ViewController.swift de viewDidLoad , substitua a chamada para loadModel() pelo nosso novo método de download de modelo.

// Download the model from Firebase
print("Fetching model...")
ModelLoader.downloadModel(named: "sentiment_analysis") { (customModel, error) in
  guard let customModel = customModel else {
    if let error = error {
      print(error)
    }
    return
  }

  print("Model download complete")

  // TODO: Initialize an NLClassifier from the downloaded model
}

Execute novamente seu aplicativo. Após alguns segundos, você deverá ver um log no Xcode indicando que o modelo remoto foi baixado com sucesso. Tente digitar algum texto e confirme se o comportamento do aplicativo não mudou.

7. Integre o modelo em seu aplicativo

A biblioteca de tarefas do Tensorflow Lite ajuda você a integrar os modelos do TensorFlow Lite ao seu aplicativo com apenas algumas linhas de código. Inicializaremos uma instância TFLNLClassifier usando o modelo TensorFlow Lite baixado do Firebase. Em seguida, vamos usá-lo para classificar a entrada de texto dos usuários do aplicativo e mostrar o resultado na interface do usuário.

Adicione a dependência

Acesse o Podfile do aplicativo e adicione a Biblioteca de tarefas do TensorFlow Lite (Texto) nas dependências do aplicativo. Certifique-se de adicionar a dependência na declaração target 'TextClassification' .

pod 'TensorFlowLiteTaskText', '~> 0.2.0'

Execute pod install para instalar a nova dependência.

Inicializar um classificador de texto

Em seguida, carregaremos o modelo de análise de sentimentos baixado do Firebase usando o NLClassifier da biblioteca de tarefas.

ViewController.swift

Vamos declarar uma variável de instância TFLNLClassifier. Na parte superior do arquivo, importe a nova dependência:

import TensorFlowLiteTaskText

Encontre este comentário acima do método que modificamos na última etapa:

// TODO: Add an TFLNLClassifier property.

Substitua o TODO pelo seguinte código:

private var classifier: TFLNLClassifier?

Inicialize a variável textClassifier com o modelo de análise de sentimentos baixado do Firebase. Encontre este comentário que adicionamos na última etapa:

// TODO: Initialize an NLClassifier from the downloaded model

Substitua o TODO pelo seguinte código:

let options = TFLNLClassifierOptions()
self.classifier = TFLNLClassifier.nlClassifier(modelPath: customModel.path, options: options)

Classificar texto

Depois que a instância do classifier for configurada, você poderá executar a análise de sentimento com uma única chamada de método.

ViewController.swift

No método classify(text:) , localize o comentário TODO:

// TODO: Run sentiment analysis on the input text

Substitua o comentário pelo seguinte código:

guard let classifier = self.classifier else { return }

// Classify the text
let classifierResults = classifier.classify(text: text)

// Append the results to the list of results
let result = ClassificationResult(text: text, results: classifierResults)
results.append(result)

8. Execute o aplicativo final

Você integrou o modelo de análise de sentimentos ao aplicativo, então vamos testá-lo. Conecte seu dispositivo iOS e clique em Executar ( execute.png ) na barra de ferramentas do Xcode.

O aplicativo deve ser capaz de prever corretamente o sentimento da crítica do filme que você insere.

class_result_screen.png

9. Ative o aplicativo com mais recursos do Firebase

Além de hospedar seus modelos TFLite, o Firebase oferece vários outros recursos para potencializar seus casos de uso de machine learning:

  • Firebase Performance Monitoring para medir a velocidade de inferência do modelo em execução no dispositivo dos usuários.
  • Firebase Analytics para avaliar o desempenho do seu modelo na produção medindo a reação do usuário.
  • Teste A/B do Firebase para testar várias versões do seu modelo
  • Você se lembra que treinamos duas versões do nosso modelo TFLite anteriormente? O teste A/B é uma boa maneira de descobrir qual versão tem melhor desempenho em produção!

Para saber mais sobre como aproveitar esses recursos em seu aplicativo, confira os codelabs abaixo:

10. Parabéns!

Neste codelab, você aprendeu a treinar um modelo TFLite de análise de sentimentos e implantá-lo em seu aplicativo para dispositivos móveis usando o Firebase. Para saber mais sobre o TFLite e o Firebase, consulte outros exemplos de TFLite e os guias de primeiros passos do Firebase.

O que cobrimos

  • TensorFlow Lite
  • Firebase ML

Próximos passos

  • Meça a velocidade de inferência do seu modelo com o Firebase Performance Monitoring.
  • Implante o modelo do Colab diretamente no Firebase por meio da API Firebase ML Model Management.
  • Adicione um mecanismo para permitir que os usuários dêem feedback sobre o resultado da previsão e use o Firebase Analytics para acompanhar o feedback dos usuários.
  • Teste A/B no modelo Average Word Vector e no modelo MobileBERT com teste A/B do Firebase.

Saber mais

Ter uma questão?

Relatar problemas