Alura > Cursos de Inteligência Artificial > Cursos de IA para Mobile > Conteúdos de IA para Mobile > Primeiras aulas do curso Android com IA: extraindo entidades e gerando respostas inteligentes com ML Kit

Android com IA: extraindo entidades e gerando respostas inteligentes com ML Kit

Identificando identidades - Apresentação

Quer aprender a criar aplicativos que geram sugestões de respostas com base no conteúdo em tela, ou até mesmo sugerir ações inteligentes, como ligar para alguém, abrir um mapa ou um link, com base no conteúdo dinâmico do seu aplicativo? Vamos mostrar como fazer isso! Meu nome é Junior e serei o seu instrutor.

Audiodescrição: Junior é um homem de pele clara, com cabelos loiros escuros compridos que vão até a altura dos ombros e estão amarrados atrás do pescoço. Usa óculos de armação preta arredondada e uma camiseta na cor preta. Atrás dele há um fundo degradê que vai do rosa, à esquerda, até o azul à direita.

Para prosseguir com este conteúdo, continuaremos utilizando um aplicativo que pode já ter visto em outros cursos, o Mail. Este é um aplicativo que utiliza recursos de Machine Learning (Aprendizado de Máquina) e Inteligência Artificial para auxiliar nas questões de envio e recebimento de e-mails. O Mail tem um visual colorido no início, seguindo um padrão de uso do Material Design.

Ao abrirmos esse aplicativo, notamos que o conteúdo do e-mail aparece quando clicamos em alguma das conversas existente. Ele demora um pouco para carregar, mas gera alguns recursos que, provavelmente, você já viu em outros aplicativos. Na parte inferior, temos uma lista de chips, que são algumas sugestões.

Para gerar essas sugestões, utilizamos uma biblioteca do ML Kit que faz a extração de entidades. Vamos entender o que é cada uma dessas entidades, mas podemos notar que algumas já estão destacadas no nosso texto. Destacamos alguns endereços e links.

Notamos também que tem como sublinhar algumas dessas informações. Vamos entender que isso está atrelado ao que a própria biblioteca oferece. Para chegar nesse ponto, precisamos compreender como a biblioteca funciona, como instalar, como lidar não só com a extração das entidades, mas também da posição de cada uma delas.

Além dessas entidades que temos na parte inferior e destes destaques, dependendo do e-mail que abrirmos, também haverá algumas sugestões de resposta na parte inferior, conhecidas como respostas inteligentes. Por exemplo, temos um e-mail que possui uma espécie de conversa, onde temos uma entidade para extrair algumas ações na parte inferior, mas também sugeriu como resposta um emoji, a pergunta "Onde você está?", entre outras opções, tudo em uma mesma linha.

A biblioteca que utilizamos para lidar com as respostas inteligentes é a Smart Reply, que faz parte do ML Kit. Vamos entender como ela funciona, quais são as suas limitações, como podemos utilizá-la integrada dentro do nosso aplicativo e com a geração de ações inteligentes.

Para trabalhar com tudo isso, recomendamos que tenha noção de como lidar com o Jetpack Compose e com o sistema de gerenciamento de estados utilizando os View Models. Além disso, é útil ter alguma experiência com nossa biblioteca de traduções, mas é algo que vamos comentar bastante ao longo do curso, então não precisa se preocupar, já adiantamos essa parte.

Esperamos que tenha gostado do que viu e com animação para começar.

Identificando identidades - Review do projeto

Para prosseguirmos com o conteúdo deste curso, vamos reutilizar o projeto do aplicativo Mail, que simula um aplicativo de troca de mensagens eletrônicas, os famosos e-mails. Este projeto possui algumas alterações, tanto visuais, quanto em seu código. Recomendamos que faça o download desse projeto e confira algumas das alterações conosco.

Uma das primeiras alterações que vamos conferir, já presentes no projeto, é a seguinte: ao abrirmos um e-mail, por exemplo, o da Anya, teremos um botão "Responder" no final do e-mail. Ao ser clicado, permitirá a digitação e o envio de uma resposta, que ficará armazenada. Adicionamos essa função porque vamos lidar com uma questão de respostas inteligentes, aplicadas não somente ao conteúdo do e-mail, mas também com base no que digitamos, gerando respostas em tempo real.

Existem também outras alterações que vamos conferir na parte visual ao longo das aulas. Caso queira conferir o código dessas alterações, disponibilizaremos o projeto para download. Vamos verificar alguns arquivos nesse primeiro momento.

Na coluna da esquerda na nossa IDE, navegaremos para "mlkit > EntityExtractor". Nesse arquivo, temos duas pequenas funções que deixei prontas no código. Elas não estão diretamente relacionadas com a nossa biblioteca, mas serão úteis conforme formos implementando outras funções.

Na mesma pasta, abriremos o arquivo ResponseGenerator, onde seguiremos com a mesma abordagem. Esses são códigos que, provavelmente, você já sabe implementar. Eles estão relacionados à lógica, e não à biblioteca em si, e já deixamos pronto para utilizarmos no momento oportuno.

Falando das alterações visuais e da parte lógica, dentro de "contentEmail", que é nossa pasta de UI, teremos o código da tela em si: o ContentEmailScreen.kt. Nele teremos várias alterações, que veremos conforme as funções forem sendo adicionadas.

Caso queira, vale a pena conferir este arquivo e o ContentEmailViewModule.kt, que possui algumas lógicas já prontas e que também vamos alterar ao longo deste conteúdo. Além disso, temos a classe ActionHandler, que podemos acessar através do caminho "util > ActionHandler. Essa classe é responsável por permitir a integração com um aplicativo de e-mail, de telefone ou outros, conforme a análise dos nossos e-mails for feita.

Realizamos também a atualização de algumas bibliotecas, para manter o nosso projeto o mais atualizado possível. Você pode acessar o link do GitHub do projeto, caso queira analisar e comparar o arquivo inicial deste projeto que você irá baixar com o da última aula do nosso curso de MailKit com traduções.

Isso permitirá que você veja o que foi atualizado e o que foi adicionado ou removido, e possa fazer essas alterações em seu projeto da aula anterior, se desejar. Contudo, boa parte do que foi atualizado, veremos ao longo das aulas enquanto implementamos as funções e conhecemos as possibilidades da extração de entidades e geração de respostas e ações inteligentes no nosso projeto.

Então, baixe o projeto e espero que estejam com empolgação para podermos continuar.

Identificando identidades - Entendendo o que são entidades

Começaremos esse vídeo fazendo um pequeno experimento Imagine que está desenvolvendo um aplicativo semelhante a este nosso. Por algum motivo, ele possui uma tela em que as pessoas podem receber e-mails e, neste e-mail, há um número de telefone, que é o "4002-8922". Precisamos ligar para alguém através desse número.

Se tiver uma boa memória, talvez consiga simplesmente abrir o aplicativo de telefone e digitar o número. No entanto, provavelmente, terá que ficar alternando entre esse aplicativo e o de telefone, ou até mesmo se quiséssemos copiar a informação de um e-mail, ou mesmo de um site.

Pensando nesse tipo de situação, podemos facilitar um pouco a vida da pessoa usuária para ela não precisar ficar alternando entre telas. Podemos escanear todo esse texto, ver quais são as entidades presentes, como o número de telefone e o e-mail, e gerar uma ação personalizada, por exemplo, já indicando para abrir o aplicativo de telefone com aquele número, ou mesmo abrir o e-mail ou site.

Pensando nesse tipo de situação, a Google já desenvolveu uma biblioteca que utiliza ferramentas de Inteligência Artificial (IA) e Machine Learning para poder auxiliar na construção desse tipo de solução dentro do aplicativo. A Entity Extraction (Extração de entidade), como a própria documentação que temos aberta nesse momento indica, é essa biblioteca. Inclusive, temos um pequeno exemplo sendo demonstrado em um GIF. Vocês podem acessar a página da documentação sobre Extração de entidade para saber mais.

GIF da página da documentação sobre extração de entidade. Na sequência de imagens vemos uma mensagem que tem um endereço e, ao selecioná-lo, aparece a opção de abrir o aplicativo "Maps". Ao clicar nessa opção, o aplicativo do Google Maps abre com o endereço da mensagem.

Ao abrirmod essa documentação, existe um alerta informando que essa biblioteca atualmente possui uma versão beta, e que ela tem algumas restrições que vamos conferir melhor ao longo do curso. Mas vale ressaltar que ela está na versão Beta hpa alguns anos, e os aplicativos da Google, assim como outros, já a utilizam. É interessante notar esse alerta e ficar ciente que existe, sim, uma versão beta que tem algumas restrições.

Podemos utilizar a biblioteca e a documentação é bem vasta, contendos exemplos muito úteis. Caso queira conferir a documentação e ver do que se trata cada uma dessas entidades, existem alguns exemplos. É listado que podemos identificar vários tipos de informações, como endereços, data, hora, e-mail, alguns dados bancários e URLs.

Para começar a utilizá-la no nosso aplicativo, no começo da documentação, ao lado esquerdo do GIF de demonstração, clicaremos no botão "Android". Assim, abriremos outra página da documentação, ensinando a extrair entidades no Android. Nela, deslizando um pouco mais para baixo, encontramos a sessão "antes de começar".

Dentro dessa sessão, encontramos o código implementation 'com.google.mlkit:entity-extraction e o número da versão, que pode ter mudado quando você estiver vendo esse conteúdo. Vamos copiar esse código implementation e voltaremos para o Android Studio.

implementation 'com.google.mlkit:entity-extraction:16.0.0-beta4'

No Android Studio, abriremos o arquivo para instalar essa dependência. No caso, no "Gradle Scripts", abriremos o build.gradle.kts, do módulo app (Module :app). Ao final dele, na linha 86, vamos colar o código que copiamos.

Vale lembrar que, nesse momento, esse projeto está com a nova maneira de instalação de dependências que será usada em projetos Android daqui para frente. Vou deixar uma atividade sobre isso, caso não esteja familiarizado para conhecer essa nova maneira de lidar com as dependências. Porém, para instalação funcionar corretamente, vamos substituir as aspas simples, do código que copiamos, por aspas duplas e colocar essa string entre parênteses.

Arquivo build.gradle.kts

// código omitido

implementation ("com.google.mlkit:entity-extraction:16.0.0-beta4")

O trecho dentro dos parênteses está marcado em amarelo. Clicaremos sobre ele e pressionaremos "Alt + Enter". No menu, selecionaremos a opção "Replace with new library catalog declaetion for entity-extraction". Ao selecionarmos essa opção, o trecho que estava marcado muda para libs.entity.extraction.

Arquivo build.gradle.kts

// código omitido

implementation (libs.entity.extraction)

Isso modifica outro arquivo, que é o libs.version.toml. Na parte superior do código desse arquivo tem uma barra azul com o botão "Sync now" (Sincronizar agora), no canto direito da barra. Clicaremos nesse botão. Voltando para o build.gradle.kts, ainda encontramos um erro em entity, que está em vermelho, mas depois que o build acabar, ele não apresentará mais esse erro.

[Animação de uma barra de carregamento sendo preenchida. Sons de circuitos duarante o carregamento.]

O projeto já fez a sincronização e a biblioteca foi instalada corretamente. Podemos começar a explorar um pouco com ela e entender como funciona. Faremos isso a seguir.

Sobre o curso Android com IA: extraindo entidades e gerando respostas inteligentes com ML Kit

O curso Android com IA: extraindo entidades e gerando respostas inteligentes com ML Kit possui 98 minutos de vídeos, em um total de 44 atividades. Gostou? Conheça nossos outros cursos de IA para Mobile em Inteligência Artificial, ou leia nossos artigos de Inteligência Artificial.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda IA para Mobile acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas