segunda-feira, 9 de janeiro de 2023

O Chat GPT na Promotoria de Justiça

O que é o ChatGPT?

O Chat GPT é uma solução de inteligência artificial criada para a conversação em forma de chat.

O algoritmo possui uma ampla gama de tarefas de processamento de linguagem natural e usa técnicas de aprendizagem de máquina por reforço com feedback humano. Em outras palavras, quanto mais interage com pessoas, mais esperta fica a solução.

De acordo com a OpenAI, que desenvolve o produto e o disponibiliza gratuitamente (ainda) para teste, “o formato de diálogo permite que o ChatGPT responda a perguntas complementares (follow-up questions), admita seus erros, conteste premissas incorretas e rejeite solicitações inadequadas”. A IA pode ser testada, após cadastro, em <https://chat.openai.com/chat>.


Polêmicas

O que impressiona no ChatGPT é que ele pode conversar sobre quase tudo e pode aprofundar o assunto conforme o desejo do usuário. Os testes mostram que a IA pode se mostrar criativa, compor música e poemas, escrever textos acadêmicos, fundamentar teses e escrever software. 

Por isso, advogados, jornalistas e programadores já temem que essa IA seja capaz de substituí-los em alguns de seus postos de trabalho.


Testando ...

Testei a IA em duas tarefas relacionadas à Promotoria de Justiça.

Na mais óbvia, usei o chat para que ela desse fundamentos para rebater um argumento da Defesa lançado em um processo judicial.

Eis o print de tela relativo à primeira tarefa (e, abaixo, a reprodução do diálogo):



Na tarefa menos trivial, solicitei à solução que criasse um programa em Python para automatizar uma tarefa (real) do meu trabalho como Promotor de Justiça. Pedi que convertesse um lote de arquivos "docx" existentes em uma pasta em PDFs. Dada a maior complexidade desse tópico, gravei um vídeo para documentá-lo e o disponibilizei no YouTube.

O código gerado pelo ChatGPT pode ser encontrado no meu GitHub. Funcionou perfeitamente.


Conclusão

O Chat GPT é uma solução que surpreende pela acurácia e fluidez de suas respostas e tem potencial para otimizar rotinas de trabalho.

quarta-feira, 4 de janeiro de 2023

Reconhecimento de padrões e classificação com o uso do dataset BreastCancer do pacote mlbench (da linguagem R)

Introdução

O dataset BreastCancer, disponível no pacote "mlbench", contém 699 observações de 11 variáveis, sendo uma delas ("Class") a variável dependente (ou alvo), que rotula a lesão como sendo um câncer ou não ("benign" ou "malignant").

As características do dataframe puderam ser conferidas com os comandos str(BreastCancer), summary(BreastCancer) e ?BreastCancer.


As variáveis independentes foram convertidas em numéricas gravando-se o dataset em arquivo "csv" e realizando-se sua leitura com o comando read.table("bc.csv", header=TRUE, sep=",", stringsAsFactors=FALSE).

As bibliotecas utilizadas na análise foram sendo instaladas e chamadas conforme a necessidade e estão indicadas no código, que pode ser conferido no meu GitHub.


Objetivo: reconhecimento de padrões

Realizar análises de reconhecimento de padrões no conjunto BreastCancer.


Desenvolvimento

Para o reconhecimento de padrões no conjunto de dados foi preciso supor que a variável “Class” não era conhecida. Um novo dataframe foi criado após a exclusão da coluna-alvo.

Usamos a técnica do PCA (Principal Component Analysis) para a redução do número de variáveis do conjunto de dados, de forma a poder plotar as observações, na tentativa de constatar visualmente os padrões.

Foi visto que os dois componentes principais explicavam 74,17% das variâncias, sendo suficientes para a análise que se pretendia fazer.

Aplicada a técnica, foram plotados os “scores” e gerado o “biplot”, sendo possível delinear os agrupamentos.

Na sequência, usando o “autoplot” da biblioteca “ggfortify”, agora com a variável “Class” para a coloração das observações, foi possível relacionar os grupos delineados às lesões benignas (em vermelho) e malignas (em azul).

Por fim, o gráfico gerado permitiu conhecer a contribuição de cada variável para a geração dos componentes principais, havendo um destaque visual para as mitoses, com menor correlação com as demais variáveis.



Objetivo: classificação

Realizar análises de classificação com o mesmo conjunto de dados.


Desenvolvimento

Para a tarefa de classificação, a variável dependente “Class” foi modificada para o tipo “factor”, que informa ao “R” tratar-se de uma variável categórica.

O dataset foi dividido entre treino e teste, na proporção de 80 e 20%, respectivamente. Essa providência é necessária no campo da aprendizagem de máquina supervisionada para a medição da performance do modelo.

Foram usados os algoritmos de árvore de classificação, floresta aleatória com o “mtry” (quantidade de variáveis sorteadas por árvore) de valor 4 e Naive Bayes, com acurácias medidas de, respectivamente, 0,9489, 0,9635 e 0,9562, constatadas a partir da matriz de confusão.



Conclusão

Os algoritmos disponíveis no pacote “R” permitiram o emprego da técnica do PCA para redução da dimensionalidade do dataset analisado e a plotagem bidimensional das observações favoreceu a identificação visual de padrões no conjunto de dados.

Além disso, o algoritmo de floresta aleatória mostrou ser o mais performático para a tarefa de classificação do conjunto de dados analisado.


Referências:

CRAN.R.PROJECT.ORG. Plotting PCA (Principal Component Analysis). Disponível em: https://cran.r-project.org/web/packages/ggfortify/vignettes/plot_pca.html. Acesso em: 3 Jan. 2023.

MONIZ, Paulo. Uma abordagem prática para avaliar o desempenho de algoritmos para um problema de classificação binária em um projeto de machine learning. Disponível em: https://rpubs.com/PMONIZ80/506010. Acesso em: 3 Jan. 2023.

MORETTIN, Pedro Alberto; SINGER, Júlio da Morra. Estatística e ciência de dados, 1ª. ed., Rio de Janeiro: LTC, 2022. 

PÉREZ, Fernando L. MLExemplo09: regressão logística. Disponível em: http://leg.ufpr.br/~lucambio/CE225/20211S/MLGExemplo09.html. Acesso em: 3 Jan. 2023.

SAMINATHAN. Breast Cancer Classification Problem Analysis. 29 mar. 2018. Disponível em: https://rstudio-pubs-static.s3.amazonaws.com/374852_57bcde1cc74f4950ab66a6a6d58781a5.html. Acesso em: 3 Jan. 2023.


Erro de SSL na instalação de pacotes do Anaconda

O OpenSSL é uma biblioteca escrita em C, de código aberto, dos protocolos SSL e TSL, que implementam criptografia. Inclui os módulos libssl (que implementa o protocolo TLS), libcrypto (biblioteca criptográfica de propósito geral) e openlss (ferramenta de linha de comando considerada o “canivete suíço” para tarefas bibliográficas).

É comum aos usuários do Anaconda enfrentarem problemas de SSL na instalação de alguns pacotes, observando-se a seguinte mensagem de erro:

 


A solução para o problema consiste em copiar os arquivos libcrypto-1_1-x64.* e libssl-1_1-x64.*, já presentes no S.O. ou no diretório Library\bin do Anaconda, para a pasta DLL do Anaconda, conforme a figura abaixo.