SlideShare uma empresa Scribd logo
C# 8 & ML.NET:
Classificação de comentários
GABRIEL SCHADE CARDOSO
MVP,SOFTWAREENGINEEREESCRITOR
GABRIEL.SCHADE@OUTLOOK.COM
Gabriel Schade Cardoso
 Mestre em Computação Aplicada (IA)
 Microsoft MVP – Dev. Technologies
 Equipe de Inovação - ResourceIT
 Revisor
 Escritor
Novidades do C# 8
Novidades do C# 8
 Código seguro evitando null;
 Updates no pattern matching;
 Array slicing;
 IAsyncEnumerable;
 Default interface members;
Evitando o null
Evitando o null
 Não há como extinguir o null e a famosa
ArgumentNullException;
 Agora poderemos gerar Warnings, não erros.
Evitando o null
Evitando o null
Evitando o null
 É possível utilizar esta feature em uma única classe
através de diretivas de compilação;
 Ou no projeto inteiro através de uma configuração.
Evitando o null
Evitando o null
Evitando o null
 Se você ainda quiser inserir o valor null em algum
objeto (não faça isso) e não quiser receber o warning.
 Você pode utilizar nullables, mesmo em tipos de
referência:
Switch Expressions
(pattern matching)
Switch Expressions
 A sintaxe ainda é um pouco verbosa, mas permite
múltiplos retornos com um JUMP.
Switch Expressions
Array Slicing
Array Slicing
 O array slicing é uma forma de obter pedaços do
array, semelhante ao que o Python faz.
Array Slicing
Array Slicing
 A sintaxe de inicio..fim cria o que chamamos de range;
 O range é uma struct que determina a distância entre
elementos de um array.
Array Slicing
 Agora também é possível utilizar índices negativos:
 Você também pode utilizá-los em ranges:
Array Slicing
IAsyncEnumerable
IAsyncEnumerable
 O IEnumerable permite coleções lazy load, agora com
o IAsyncEnumerable é possível ter esse comportamento
de forma assíncrona.
IAsyncEnumerable
 Para consumir utilizamos o await foreach.
IAsyncEnumerable
Resultado do async
foreach:
Default Interface
Members
Default Interface Members
 Agora as interfaces permitem uma implementação
padrão:
Default Interface Members
 Neste exemplo, não conseguiremos acessar o
método Enviar mensagem na classe Teste
 Para fazer isso, é necessário um cast para a interface.
Default Interface Members
 Também é possível criar métodos virtuais em uma
interface, ou seja, que possuam corpo na interface, mas
possam ser sobrescritos.
Default Interface Members
 Isso gera um problema com múltiplas implementações
do mesmo método:
Default Interface Members
Default Interface Members
ML .NET
Quem já ouviu falar de
Machine Learning?
E o que é Machine
Learning?
Antes disso, o que é
IA?
O que é IA?
Marvin Minsky : I.A. é conceder aos computadores a
habilidade de resolver problemas complexos.
Elaine Rich: I.A. é o estudo de como fazer os
computadores realizarem tarefas que no momento as
pessoas fazem melhor.
Patrick Winston: I.A. é o estudo de conceitos que
permitem aos computadores serem inteligentes.
O que é Machine Learning?
Machine learning é uma área da ciência da computação que
concede à computadores a habilidade de aprender sem
precisar serem explicitamente programados.
Quem usa isso?
O que todos eles tem em comum?
Todos os exemplos
1. Analisam dados;
2. Buscam padrões;
3. Tentam extrapolar os padrões encontrados para novos
casos.
Mas o que isso tem a
ver com aprender?
Aprendendo a ler
1. Analisamos as letras;
2. Buscamos padrões;
3. Construímos sentenças.
4. ... Mas cadê predição?
Aprendendo a ler
Depois que aprender a ler criamos a associação entre a
palavra escrita e a palavra falada, com isso, mesmo sem
nunca termos escutado a palavra, conseguimos predizer
com uma boa acuracidade a sua pronúncia.
As três perguntas
 Qual problema estamos tentando resolver?
 Tenho dados suficientes para responder isso?
 Consigo medir e avaliar o resultado?
Vamos encontrar um padrão
 Nome com “J”?
 Mais de 30 mil reais na conta
Temperatura Global X Piratas no mundo
Filmes com Nicolas Cage vs Afogamentos
Entendendo o
processo
As três etapas
Em geral podemos definir o processo de machine
learning:
Pré-processamento;
Treinamento;
Avaliação.
Processos em Machine Learning
Processos em Machine Learning
Processos em Machine Learning
Processos em Machine Learning
Processos em Machine Learning
Processos em Machine Learning
Processos em Machine Learning
Processos em Machine Learning
Classificando comentários
Respondendo as três perguntas
 Qual problema estamos tentando resolver?
 Identificar se um comentário é positivo ou negativo
 Tenho dados suficientes para responder isso?
 Vamos utilizar três bases de dados diferentes para treinar nosso
modelo
 Consigo medir e avaliar o resultado?
 Utilizaremos parte da base de dados para tirar métricas a
respeito do modelo gerado
Etapa 1: Pré-processamento
 No pré-processamento precisamos coletar nossos dados
 Serão utilizados dados de três diferentes bases de dados
públicas:
Etapa 1: Pré-processamento
 Os comentários já estavam formatados da mesma
maneira, então tudo que precisamos fazer é torna-los
acessíveis para a aplicação e unir as 3 bases em uma
única.
 Todos os comentários estão em arquivos CSV, onde cada
linha possui 2 cabeçalhos: Text e Value
Etapa 1: Pré-processamento
Etapa 1: Pré-processamento
 No caso do F#, basta inserirmos os arquivos de dataset
em uma pasta acessível ao programa e carrega-los:
Etapa 1: Pré-processamento
 Agora precisamos unir os três datasets em um único
local:
Etapa 1: Pré-processamento
 Por fim, precisamos separar os dados de treinamento e
avaliação. Para isso, vamos criar um contexto de Machine
Learning:
Etapa 1: Pré-processamento
Etapa 2: Treinamento
 Depois dos dados prontos, precisamos identificar um
algoritmo para atender nossa necessidade.
 Neste ponto é de fundamental importância o
conhecimento dos diferentes algoritmos para machine
learning.
Etapa 2: Treinamento
 A Microsoft lançou um guia para iniciantes que pode nos
ajudar nisso.
C# 8 e ML.NET
Etapa 2: Treinamento
 É importante notar que este mapa só mostra os
algoritmos já implementados pelo Azure Machine
Learning.
 Existem outros algoritmos que não estão presentes.
Etapa 2: Treinamento
 Um recurso importante aqui e específico ao tipo de
problema é como analisar um texto.
 Geralmente quando estamos tratando deste tipo de
dado, precisamos realizar um processo chamado
Vectorização ou Featurização.
Etapa 2: Treinamento
 Este processo consiste em criar um dicionário com todas
as palavras que aparecem em nossa base de dados;
 Depois disso, para cada comentário é gerado um array
de verdadeiros e falsos, representando se o texto contém
ou não, cada palavra do dicionário.
Etapa 2: Treinamento
 Para fins de exemplo, vamos supor que nosso dicionário
inteiro é composto por:
 hello, this, is, a, list, for, test
 Ao relizarmos a vectorização no comentário: This is a
test, teríamos o seguinte resultado:
Etapa 2: Treinamento
Etapa 2: Treinamento
 Este processo será utilizado para o algoritmo que
treinará nosso modelo.
 Através dele, é possível identificar quantas vezes uma
palavra aparece em cada comentário.
 Esse valor é utilizado para gerar o coeficiente positivo e
negativo de cada palavra.
Etapa 2: Treinamento
 Por exemplo, a palavra love, para definir sua pontuação
positiva utilizamos a seguinte equação:
Etapa 2: Treinamento
 Para a pontuação negativa, basta fazermos o cálculo:
1- pontuação positiva
 Calculando a pontuação de cada palavra, chegamos na
pontuação do comentário.
Etapa 2: Treinamento
 Felizmente esse processo já é implementado nas
bibliotecas:
Etapa 2: Treinamento
 Com isso já é possível criarmos nosso model:
Etapa 3: Avaliação
 Com isso já conseguimos testar nosso modelo:
Etapa 3: Avaliação
 Mas apenas um teste isolado, não nos dá muita
informação. Precisamos de mais do que isso.
 Vamos gerar as métricas de avaliação!
Etapa 3: Avaliação
Etapa 3: Avaliação
 Vamos entender as principais métricas:
Etapa 3: Avaliação
 Os campos à esquerda são a matriz de confusão:
Etapa 3: Avaliação
 Acurácia é a relação entre todos os acertos e o total:
 Precisão é a relação entre todas as previsões positivas
corretas e incorretas:
 De todos os comentários classificados como positivos, qual
percentual realmente é positivo?
Etapa 3: Avaliação
 Recall é a relação entre todas as previsões positivas do
modelo e todas as ocorrências positivas reais:
 De todos os comentários que realmente são positivos, qual
percentual é identificado corretamente pelo modelo?
Etapa 3: Avaliação
 F1 Score é a média harmônica entre precisão e recall:
 Geralmente em bases assimétricas o F1 Score é um valor
mais importante que a acurácia
Etapa 3: Avaliação
Etapa 3: Avaliação
 Nós podemos gerar gráficos dessas métricas!
Etapa 3: Avaliação
Etapa 3: Avaliação
 Podemos testar mais algoritmos e tentar chegar em uma
solução que atenda seu negócio.
Como usar?
 Ok, tudo pronto, como usamos isso no mundo real?
 No caso do ML.NET, qualquer código .NET pode acessá-
lo normalmente, ou você pode exportar o modelo para o
formato ONNX e utilizar em qualquer plataforma.
Como usar?
 Ok, tudo pronto, como usamos isso no mundo real?
 No caso do ML.NET, qualquer código .NET pode acessá-
lo normalmente, ou você pode exportar o modelo para o
formato ONNX e utilizar em qualquer plataforma.
Como usar?
 Para salvar, basta utilizar o método Save:
Consumindo em ASP.NET
 Assim como o método Save, também é possível utilizar o
método Load, para carregar um modelo previamente
gravado;
Consumindo em ASP.NET
Consumindo em ASP.NET
Consumindo em ASP.NET
https://notebooks.azure.com/
https://studio.azureml.net
Outras ferramentas em:
https://gabrielschade.github.io
/@gabrielschade
/gabrielschade
/gabrielschade
Me encontre em

Mais conteúdo relacionado

PPTX
Machine Learning: Classificação de Comentários com Azure ML & Python
PPTX
Machine Learning e Artificial Intelligence para desenvolvedores .NET
PDF
[DTC21] Raphael Castilho - Começando com Inteligência Artificial e Machine Le...
PDF
Apresentção sobre machine learning, IA, inteligencia artificial
PDF
(curso) Inteligência Artificial nos negócios
PPTX
Prevendo mercados com Azure Machine Learning
PDF
Machine learning com Python: a vida como ela é!
PDF
TDC2016SP - Trilha BigData
Machine Learning: Classificação de Comentários com Azure ML & Python
Machine Learning e Artificial Intelligence para desenvolvedores .NET
[DTC21] Raphael Castilho - Começando com Inteligência Artificial e Machine Le...
Apresentção sobre machine learning, IA, inteligencia artificial
(curso) Inteligência Artificial nos negócios
Prevendo mercados com Azure Machine Learning
Machine learning com Python: a vida como ela é!
TDC2016SP - Trilha BigData

Semelhante a C# 8 e ML.NET (20)

PPTX
Machine learning na Academia vs na Indústria
PDF
"Desaprendizado de maquina" - Desmistificando machine learning na sua realidade
PDF
DataTechDay4 - Carlos Oeiras
PDF
Machine learning java ce conference 2012 - fortaleza ce
PPTX
Analise de Dados com Azure Machine Learning, R e Power BI
PDF
Aprendizagem de máquina aplicada na neurociência
PDF
Guia completo para definição de estatística de modelos e algoritmos de machin...
PDF
Inteligência Artificial
PPTX
Introduction to Data Science in IoT Projects.
PPTX
Deploy Azure ML Connect
PDF
Inteligência Artificial nos negócios usando os serviços do Google AI
PPTX
Webinar: Amazon Machine Learning
PDF
BSDDAY 2019 - Data Science e Artificial Intelligence usando Freebsd
PDF
Minicurso de mineração de dados
PDF
Aula 01 - O Aprendizado de Máquina IA.pdf
PPTX
First Big Data Week
PPTX
Analise de Dados - SQL Sat 817
PPTX
Analise de Dados - SQL Sat 817
PPTX
Integrando Azure Machine Learning na prática
PPTX
ABC da Aprendizagem de Máquinas
Machine learning na Academia vs na Indústria
"Desaprendizado de maquina" - Desmistificando machine learning na sua realidade
DataTechDay4 - Carlos Oeiras
Machine learning java ce conference 2012 - fortaleza ce
Analise de Dados com Azure Machine Learning, R e Power BI
Aprendizagem de máquina aplicada na neurociência
Guia completo para definição de estatística de modelos e algoritmos de machin...
Inteligência Artificial
Introduction to Data Science in IoT Projects.
Deploy Azure ML Connect
Inteligência Artificial nos negócios usando os serviços do Google AI
Webinar: Amazon Machine Learning
BSDDAY 2019 - Data Science e Artificial Intelligence usando Freebsd
Minicurso de mineração de dados
Aula 01 - O Aprendizado de Máquina IA.pdf
First Big Data Week
Analise de Dados - SQL Sat 817
Analise de Dados - SQL Sat 817
Integrando Azure Machine Learning na prática
ABC da Aprendizagem de Máquinas
Anúncio

Mais de Gabriel Schade Cardoso (17)

PPTX
Usando Visão Computacional para Identificar Letras em Libras
PPT
Programação Funcional usando F#
PPT
Clean Architecture com .NET Core
PPTX
Desmistificando Machine Learning
PPTX
Programação Funcional usando C# e F#
PPT
Programação Funcional usando C#
PPT
Programação Funcional para Humanos
PPT
Arquitetura Limpa em .NET Core
PPT
Aplicações inteligentes com o Azure Cognitive Services
PPT
Abordagem Funcional para Gerenciamento de Erros em .NET
PPTX
Desmistificando machine learning
PPTX
Uma abordagem funcional para gerenciamento de erros
PPTX
Introdução à programação funcional
PPTX
A importância da programação funcional no dia a-dia
PPTX
DDD linguagem ubiqua + codigo expressivo
PPTX
TDC - Desenvolvendo com Kinect
PPTX
Desenvolvendo com Kinect
Usando Visão Computacional para Identificar Letras em Libras
Programação Funcional usando F#
Clean Architecture com .NET Core
Desmistificando Machine Learning
Programação Funcional usando C# e F#
Programação Funcional usando C#
Programação Funcional para Humanos
Arquitetura Limpa em .NET Core
Aplicações inteligentes com o Azure Cognitive Services
Abordagem Funcional para Gerenciamento de Erros em .NET
Desmistificando machine learning
Uma abordagem funcional para gerenciamento de erros
Introdução à programação funcional
A importância da programação funcional no dia a-dia
DDD linguagem ubiqua + codigo expressivo
TDC - Desenvolvendo com Kinect
Desenvolvendo com Kinect
Anúncio

Último (9)

PPTX
Eng. Software - pontos essenciais para o início
PDF
Manejo integrado de pragas na cultura do algodão
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PPTX
Utilizando code blockes por andre backes
PPTX
Tipos de servidor em redes de computador.pptx
PPTX
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
PDF
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Eng. Software - pontos essenciais para o início
Manejo integrado de pragas na cultura do algodão
Viasol Energia Solar -Soluções para geração e economia de energia
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Utilizando code blockes por andre backes
Tipos de servidor em redes de computador.pptx
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...

C# 8 e ML.NET