1. Visão geral
Este é o codelab de classificação de texto com o TensorFlow Lite e o Firebase. Neste codelab, você vai aprender a usar o TensorFlow Lite e o Firebase para treinar e implantar um modelo de classificação de texto no seu app. Este codelab é baseado neste exemplo do TensorFlow Lite.
A classificação de texto é o processo de atribuir tags ou categorias a um texto de acordo com o conteúdo dele. É uma das tarefas fundamentais no processamento de linguagem natural (PLN) com diversas aplicações, como análise de sentimento, 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) em dados de texto usando técnicas de análise de texto. Com a análise de sentimento, as empresas identificam a opinião dos clientes sobre produtos, marcas ou serviços em conversas e feedback on-line.
Neste tutorial, você vai aprender a criar um modelo de aprendizado de máquina para análise de sentimento, em especial para classificar textos como positivos ou negativos. Esse é um exemplo de classificação binária ou de duas classes, um tipo importante e amplamente aplicável de problema de machine learning.
O que você vai aprender
- Treinar 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 no seu app
- Rastrear o feedback dos usuários para medir a acurácia do modelo com o Firebase Analytics
- Performance do modelo de perfil com o Monitoramento de desempenho do Firebase
- Selecionar qual dos vários modelos implantados é carregado pela Configuração remota
- Teste diferentes modelos com o Teste A/B do Firebase
Pré-requisitos
- Xcode 11 (ou mais recente)
- CocoaPods 1.9.1 (ou versões mais recentes)
Como você usará este tutorial?
Como você classificaria sua experiência com a criação de apps Android?
2. Criar um projeto do console do Firebase
Adicionar o Firebase ao projeto
- Acesse o Console do Firebase.
- Selecione Criar novo projeto e nomeie o projeto como "Firebase ML iOS Codelab".
3. Acessar o projeto de exemplo
Faça o download do código
Comece clonando o projeto de amostra e executando 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
Se o git não estiver instalado, você também poderá baixar o projeto de exemplo na página do GitHub ou clicando neste link. Depois de baixar o projeto, execute-o no Xcode e teste a classificação de texto para entender como ela funciona.
Configurar o Firebase
Siga a documentação para criar um projeto do Firebase. Depois de ter o projeto, faça o download do arquivo GoogleService-Info.plist
no Console do Firebase e arraste-o para a raiz do projeto Xcode.
Adicione o Firebase ao seu Podfile e execute "pod install".
pod 'FirebaseMLModelDownloader', '9.3.0-beta'
No método didFinishLaunchingWithOptions
do seu AppDelegate
, importe o Firebase na parte de cima do arquivo.
import FirebaseCore
e adicione uma chamada para configurar o Firebase.
FirebaseApp.configure()
Execute o projeto novamente para garantir que o app esteja configurado corretamente e não falhe na inicialização.
4. Treinar um modelo de análise de sentimento
Vamos usar o TensorFlow Lite Model Maker para treinar um modelo de classificação de texto e prever o sentimento de um determinado texto.
Esta etapa é apresentada como um notebook Python que pode ser aberto no Google Colab.
Abrir no Colab
Depois de concluir esta etapa, você terá um modelo de análise de sentimentos do TensorFlow Lite pronto para implantação em um app para dispositivos móveis.
5. Implantar um modelo no Firebase ML
Implantar um modelo no Firebase ML é útil por dois motivos principais:
- Podemos manter o tamanho da instalação do app pequeno e fazer o download do modelo apenas se necessário.
- O modelo pode ser atualizado regularmente e com um ciclo de lançamento diferente do app inteiro.
O modelo pode ser implantado pelo console ou de forma programática usando o SDK Admin do Firebase. Nesta etapa, vamos fazer a implantação pelo console.
Primeiro, abra o console do Firebase e clique em "Machine Learning" no painel de navegação à esquerda. Clique em "Começar" se esta for a primeira vez que você está abrindo. Em seguida, acesse "Personalizado" e clique no botão "Adicionar modelo".
Quando solicitado, nomeie o modelo como sentiment_analysis
e faça upload do arquivo baixado do Colab na etapa anterior.
6. Baixar modelo do Firebase ML
Escolher quando baixar o modelo remoto do Firebase para o app pode ser complicado, já que os modelos do TFLite podem ficar relativamente grandes. O ideal é evitar carregar o modelo imediatamente quando o app é iniciado. Se o modelo for usado apenas para 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 conectados ao Wi-Fi. Se você quiser garantir que o modelo esteja disponível mesmo sem uma conexão de rede, é importante também agrupar sem o app como um backup.
Para simplificar, vamos remover o modelo agrupado padrão e sempre fazer o download de um modelo do Firebase quando o app for iniciado pela primeira vez. Assim, 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 de cima de ModelLoader.swift
, importe o módulo do 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)) } } }
Em ViewController.swift
's viewDidLoad
, substitua a chamada para loadModel()
pelo novo método de download do 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 o app novamente. Após alguns segundos, um registro vai aparecer no Xcode indicando que o modelo remoto foi baixado. Digite um texto e confirme se o comportamento do app não mudou.
7. Integrar o modelo ao app
A biblioteca de tarefas do TensorFlow Lite ajuda você a integrar modelos do TensorFlow Lite ao seu app com apenas algumas linhas de código. Vamos inicializar uma instância TFLNLClassifier
usando o modelo do TensorFlow Lite baixado do Firebase. Em seguida, vamos usá-lo para classificar a entrada de texto dos usuários do app e mostrar o resultado na interface.
Adicionar a dependência
Acesse o Podfile do app e adicione a biblioteca de tarefas do TensorFlow Lite (texto) nas dependências do app. Adicione a dependência abaixo da 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, vamos carregar o modelo de análise de sentimento baixado do Firebase usando o NLClassifier
da biblioteca de tarefas.
ViewController.swift
Vamos declarar uma variável de instância TFLNLClassifier. Na parte de cima do arquivo, importe a nova dependência:
import TensorFlowLiteTaskText
Encontre este comentário acima do método que modificamos na última etapa:
// TODO: Add a 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 classifier
for configurada, você poderá executar a análise de sentimentos com uma única chamada de método.
ViewController.swift
No método classify(text:)
, encontre 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. Executar o app final
Você integrou o modelo de análise de sentimento ao app. Agora, vamos testá-lo. Conecte seu dispositivo iOS e clique em Executar ( ) na barra de ferramentas do Xcode.
O app precisa prever corretamente o sentimento da crítica de filme que você inserir.
9. Melhore o app com mais recursos do Firebase
Além de hospedar seus modelos do TFLite, o Firebase oferece vários outros recursos para potencializar seus casos de uso de machine learning:
- Monitoramento de desempenho do Firebase para medir a velocidade de inferência do modelo em execução no dispositivo dos usuários.
- O Firebase Analytics para medir a performance do modelo em produção com base na reação dos usuários.
- Teste A/B do Firebase para testar várias versões do seu modelo
- Você se lembra de que treinamos duas versões do nosso modelo do TFLite antes? O teste A/B é uma boa maneira de descobrir qual versão tem melhor performance em produção.
Para saber mais sobre como aproveitar esses recursos no seu app, confira os codelabs abaixo:
10. Parabéns!
Neste codelab, você aprendeu a treinar um modelo do TFLite de análise de sentimentos e implantá-lo no seu app para dispositivos móveis usando o Firebase. Para saber mais sobre o TFLite e o Firebase, confira outros exemplos do TFLite e os guias de primeiros passos do Firebase.
O que vimos
- TensorFlow Lite
- Firebase ML
Próximas etapas
- Meça a velocidade de inferência do modelo com o Monitoramento de desempenho do Firebase.
- Implante o modelo do Colab diretamente no Firebase usando a API Firebase ML Model Management.
- Adicione um mecanismo para permitir que os usuários enviem feedback sobre o resultado da previsão e use o Firebase Analytics para rastrear o feedback dos usuários.
- Faça testes A/B com o modelo de vetor de palavra média e o MobileBERT usando o Teste A/B do Firebase.
Saiba mais
- Documentação do Firebase Machine Learning
- Documentação do TensorFlow Lite
- Medir o desempenho do app com o Firebase
- Modelos de teste A/B com o Firebase
Perguntas?
- Stackoverflow "firebase-machine-learning" (link em inglês)