Criando um modelo de classificação de texto no Playground com CoreML

Juliano Vaz
Apple Developer Academy | UFPE
4 min readSep 10, 2020

Se seu intuito é construir um modelo de Inteligência Artificial de maneira simples para um dispositivo da Apple, você está no lugar certo.

Photo by Darius Bashar on Unsplash

Uma breve introdução

Atualmente estamos no meio de uma pandemia, e eu estou morando no interior da Bahia, na Chapada Diamantina. Enfrentando tudo de uma forma diferente, inclusive na aprendizagem formal. Foi um desafio para mim escolher mexer com algo novo e espero que esteja de mãos lavadas, vamos lá?

Se você já usou alguma aplicação que classificava uma imagem ou um texto em alguma categoria, você estava lidando com algum tipo de aplicação de Aprendizagem de Máquina, do inglês, Machine Learning. Quando falamos de classificação de texto estamos falando do tipo de aprendizado de máquina supervisionado.
A classificação de texto é uma das aplicações de mineração de texto e pode ser usada em vários contextos, como o de análise de sentimentos, que foi o caso que utilizei em um dos meus projetos.

Ao mesmo tempo, quando falamos de classificação de texto, é importante termos em mente que existe uma interseção com Processamento de Linguagem Natural (PLN) que é uma sub-área também da Inteligência Artificial que estuda a capacidade e as limitações de uma máquina em entender linguagem natural do mais alto nível, ou seja, a linguagem dos seres humanos.
E bem, a gente, que mexe com desenvolvimento de código, sabe como é complicado achar material em português.

Então, chega de enrola e vamos lá!

Partindo para mão na massa

Primeiro, para continuar esse tutorial você deve ter um macbook, pois utilizaremos o Xcode como plataforma de desenvolvimento. Supondo que já tenha o Xcode instalado, e já tenha um nível básico de familiaridade, você deve criar um projeto Playground, com template em branco (Blank) para macOS.

Em segundo lugar, você deve ter um conjunto de sentenças, de preferência em um arquivo Json nesse formato linkado onde, o label recebe as categorias, e o text, as sentenças a serem usadas para treinar e testar nosso modelo. E acredite, essa com certeza será a parte mais demorada que você terá, pois terá de buscar, e tratar os dados.

Sem isso, continuar a tutorial pode ser inútil do ponto de vista prático, mas você também pode utilizar esse arquivo como amostra. Lembrando que várias coisas ai podem influenciar na sua classificação: tamanho da sentença, se há desbalanceamento entre as categorias, por exemplo negativo e positivo, o ideal é cobrir o máximo de casos possíveis do seu contexto, e depois ir remodelando, ou fazendo algo como transferência de aprendizado/conhecimento.

Após isso, você deve importar as bibliotecas/frameworks.

Para maiores detalhes sobre cada um desses imports bem como as função abaixo, sugiro dar um google ou buscar na documentação da Apple.

Um pequeno detalhe: Os valores aqui utilizados foram extraídos de exemplos de lá, ou de recomendações de outros tutoriais. Geralmente são considerados padrões de boas práticas de balanceamento, para obter um resultado de modelo satisfatório.

Nessa linha 1, a gente importa os dados que usarem pare treinar e testar o modelo. Na linha 3, fazemos uma espécie de modularização de dado, feito um pré-processamento para deixar os dados tabulados.

Na linha 1, a gente divide nosso banco de sentenças em dois, sendo o de treinamento com 80%, e o de teste com 20%. Na linha 3, a gente chama as aplicações de Deep Learning via algoritmos de PLN, ou seja de classificação de textos, já abstraídos pela Apple via biblioteca CoreML para treinar os nossos dados. A linha 3 cria um classificador a partir de um conjunto de treinamento em uma tabela de dados.

Aqui nessa parte acima a gente pega algumas medições do desempenho do classificador no conjunto de dados de treinamento. Na linha 1, a gente define um percentual para ter acurácia do treinamento do modelo, e na linha 2, o um percentual para obter uma medida de validação. Importante ressaltar que aqui você pode filtrar várias medições, como a matriz de confusão e o recall (sensibilidade) do seu modelo.

Aqui o que fazemos nessas linhas é adicionar uma pequena descrição e exporta o classificador de texto como um arquivo de modelo Core ML no caminho de arquivo especificado.

Agora, só verificar as saídas das predições e o seu modelo para utilizar em um projeto iOS/macOS — não sei se rola pra watchOS e tvOS, mas deve rolar — já está na sua área de trabalho!

O artigo onde mostro como utilizar o modelo em uma aplicação está em construção, e logo mais linkarei aqui, mas se você já quiser dar uma colada, olhe aqui.

Espero que tenha sido de algum, proveito! Não esqueça de salvar o artigo, me seguir e deixar aquelas boas claps (:

--

--

Juliano Vaz
Apple Developer Academy | UFPE

Baiano, cientista da computação, educador, dev iOS. Além de antirracista, artista, aleatório e eclético.