{"id":5981,"date":"2024-04-26T14:49:49","date_gmt":"2024-04-26T17:49:49","guid":{"rendered":"https:\/\/netproject.com.br\/blog\/?p=5981"},"modified":"2024-04-29T15:26:34","modified_gmt":"2024-04-29T18:26:34","slug":"case-ia-em-gestao-de-projetos-uso-de-nlp-e-redes-neurais-artificiais-para-estabelecer-ranking-de-tarefas-e-projetos-usando-o-status-rag","status":"publish","type":"post","link":"https:\/\/blog.netproject.com.br\/blog\/case-ia-em-gestao-de-projetos-uso-de-nlp-e-redes-neurais-artificiais-para-estabelecer-ranking-de-tarefas-e-projetos-usando-o-status-rag\/","title":{"rendered":"Case IA em Gest\u00e3o de Projetos &#8211; Uso de NLP e Redes Neurais Artificiais para estabelecer ranking de tarefas e projetos usando o status RAG"},"content":{"rendered":"<p class=\"estimated-read-time\">Tempo de leitura:<small> 21 minutos<\/small><\/p> \n<p>Muitas organiza\u00e7\u00f5es exigem que membros de equipes de projeto forne\u00e7am<strong> atualiza\u00e7\u00f5es regulares do status do projet<\/strong>o como parte do processo de monitoramento do projeto. <\/p>\n\n\n\n<p>Essas atualiza\u00e7\u00f5es geralmente consistem em coment\u00e1rios de texto associados a um<strong> status vermelho-\u00e2mbar-verde (RAG)<\/strong>, em que vermelho indica um projeto\/tarefa com falha, \u00e2mbar uma tarefa\/projeto em risco e verde uma tarefa\/projeto em andamento conforme planejado. <\/p>\n\n\n\n<p>Este trabalho prop\u00f5e o desenvolvimento de um <strong>modelo de aprendizado de m\u00e1quina, com apoio de NLP e Redes Neurais, para priorizar tarefas atrav\u00e9s de algoritmos de classifica\u00e7\u00e3o de n\u00edvel de riscos de acordo com marcadores RAG.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Objetivo do Case<\/h2>\n\n\n\n<p>Este projeto tem como objetivo utilizar uma combina\u00e7\u00e3o de <strong>APIs REST, processamento de linguagem natural (NLP) e Redes Neurais para prever o sentimento de risco em tarefas de projetos e possibilitar que os gerentes de projeto sejam notificados de forma proativa sobre poss\u00edveis impactos no projeto.<\/strong> <\/p>\n\n\n\n<p>Vamos realizar a classifica\u00e7\u00e3o usando a abordagem de tokeniza\u00e7\u00e3o, representa\u00e7\u00e3o vetorial e an\u00e1lise estat\u00edstica juntamente com a abordagem de aprendizado de m\u00e1quina por transfer\u00eancia, comparando o resultado de ambas.<\/p>\n\n\n\n<p>Para alcan\u00e7ar esse objetivo, o projeto se inspira no processo de classifica\u00e7\u00e3o de mensagens definido pela Oracle em seu software PPM. A base de dados a ser utilizada consiste em coment\u00e1rios de tarefas registrados no software PPM NetProject.<\/p>\n\n\n\n<p> Como resultados esperados, pretendemos <strong>integrar a API REST desenvolvida neste trabalho ao software de gest\u00e3o de projetos e portf\u00f3lio <a href=\"https:\/\/www.netproject.com.br\">NetProject<\/a>.<\/strong> Assim, ser\u00e1 poss\u00edvel definir previamente um farol de Status em Verde, Amarelo ou Vermelho, conforme magem abaixo:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" width=\"700\" height=\"438\" src=\"https:\/\/netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/netproject-700x438.png\" alt=\"\" class=\"wp-image-5998\" srcset=\"https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/netproject-700x438.png 700w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/netproject-300x188.png 300w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/netproject-768x480.png 768w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/netproject-1536x960.png 1536w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/netproject-2048x1280.png 2048w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Projetos e Gest\u00e3o de Projetos<\/h2>\n\n\n\n<p>Os projetos s\u00e3o os meios pelos quais as empresas <strong>implementam suas estrat\u00e9gias, o que significa que s\u00e3o um componente crucial do sucesso empresarial<\/strong>. <\/p>\n\n\n\n<p>A gest\u00e3o de projetos recebeu destaque nos \u00faltimos anos devido a uma combina\u00e7\u00e3o de fatores que t\u00eam impulsionado sua import\u00e2ncia e relev\u00e2ncia em diversos setores e organiza\u00e7\u00f5es. Dentre estes fatores podemos citar a complexidade dos projetos, a competitividade do mercado, o forco em resultados e a necessidade de inova\u00e7\u00e3o.<\/p>\n\n\n\n<p>Apesar do uso de ferramentas de controle e monitoramento de projetos, <strong>as taxas de sucesso do projeto ainda s\u00e3o muito baixas. <\/strong>Isso \u00e9 motivo de preocupa\u00e7\u00e3o, pois tem um impacto econ\u00f4mico significativo nas empresas e ind\u00fastrias como um todo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Captura do progresso de tarefas<\/h2>\n\n\n\n<p>Os gerentes de projeto devem <strong>capturar o progresso da tarefa dos membros da equipe<\/strong> para prever com precis\u00e3o os impactos no cronograma do projeto e comunicar o progresso e os riscos ao gerenciamento. Os gerentes, com este processo, buscam identificar status da tarefa e quaisquer <strong>impactos no cronograma do projeto.<\/strong> Por exemplo, quando um membro da equipe sabe que uma tarefa ser\u00e1 adiada, ele deve comunicar isso ao gerente do projeto. Se n\u00e3o o fizer, o gerente do projeto permanecer\u00e1 inconsciente dos impactos no cronograma do projeto. <\/p>\n\n\n\n<p>Os gerentes de projeto podem conversar com os membros da equipe usando m\u00f3dulos de mensagem presentes em ferramentas de gerenciamento de portf\u00f3lio de projetos, ou Portf\u00f3lio and Project Management (PPM). <\/p>\n\n\n\n<p><strong>O PPM \u00e9 uma ferramenta <\/strong>que desempenha um papel fundamental na coleta de informa\u00e7\u00f5es dos n\u00edveis operacionais e sua consolida\u00e7\u00e3o no n\u00edvel do portf\u00f3lio para a tomada de decis\u00f5es estrat\u00e9gicas.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Status Vermelho-\u00e2mbar-verde (RAG)<\/h2>\n\n\n\n<p>Muitas organiza\u00e7\u00f5es exigem que os gerentes de projeto fa\u00e7am atualiza\u00e7\u00f5es regulares do status do projeto como parte do processo de monitoramento do projeto.<\/p>\n\n\n\n<p><br>Essas atualiza\u00e7\u00f5es geralmente consistem em coment\u00e1rios de texto associados a um status v<strong>ermelho-\u00e2mbar-verde (RAG)<\/strong>, onde vermelho indica um projeto\/tarefa com falha, \u00e2mbar uma tarefa\/projeto em risco, verde uma tarefa\/projeto em andamento.<\/p>\n\n\n\n<p><br><strong>Ao automatizar esse processo, o gerente poderia focar seu trabalho de acompanhamento peri\u00f3dico apenas nas tarefas destacadas com maior chance de problemas, ou seja, as que possu\u00edrem maior pontua\u00e7\u00e3o no ranking proposto neste trabalho.<\/strong><\/p>\n\n\n\n<p>O rankeamento proposto permite que gerentes de projeto dediquem mais tempo na comunica\u00e7\u00e3o efetiva com a equipe. Importante ressaltar que as compet\u00eancias dos gerentes de projeto em aspectos de comunica\u00e7\u00e3o contribuem significativamente para a satisfa\u00e7\u00e3o e produtividade dos membros da equipe, consequentemente para o sucesso do projeto.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Processamento de Linguagens Naturais<\/h2>\n\n\n\n<p><strong>O Processamento de Linguagem Natural, ou Natural Language Processing (NLP) <\/strong>\u00e9 uma \u00e1rea interdisciplinar que envolve habilidades computacionais, human\u00edsticas e estat\u00edsticas-matem\u00e1ticas. O objetivo do NLP \u00e9 capacitar os computadores a entender, interpretar e interagir com a linguagem humana de forma natural. <\/p>\n\n\n\n<p>O objetivo \u00e9 permitir que as m\u00e1quinas <strong>compreendam textos escritos ou falados<\/strong>, gerem respostas coerentes, traduzam idiomas, extraiam informa\u00e7\u00f5es \u00fateis e realizem tarefas relacionadas \u00e0 linguagem, como an\u00e1lise de sentimentos e corre\u00e7\u00e3o ortogr\u00e1fica, entre outras aplica\u00e7\u00f5es.<\/p>\n\n\n\n<p>A linguagem humana pode ser definida como natural porque \u00e9 amb\u00edgua e mut\u00e1vel. Por outro lado, a linguagem de m\u00e1quina \u00e9 definida como formal porque \u00e9 inequ\u00edvoca e reconhecida internacionalmente. O NLP deve lidar de forma otimizada com a ambiguidade, imprecis\u00e3o e falta de dados inerentes \u00e0 linguagem natural.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Intelig\u00eancia Artificial e Redes Neurais Artificiais<\/h2>\n\n\n\n<p>Intelig\u00eancia Artificial pode ser descrita como a <strong>habilidade de uma m\u00e1quina para reproduzir o comportamento da intelig\u00eancia humana,<\/strong> buscando utilizar algoritmos para resolu\u00e7\u00e3o aproximada de problemas desafiadores.<\/p>\n\n\n\n<p><br><strong>Os principais subgrupos da IA s\u00e3o:<\/strong> o Reconhecimento de Padr\u00f5es, o Aprendizado de M\u00e1quina e o Aprendizado Profundo. <\/p>\n\n\n\n<p>Neste trabalho vamos utilizar o Reconhecimento de Padr\u00f5es e o Aprendizado de M\u00e1quina para estabelecer ranking de tarefas e projetos usando o status RAG (Red, Amber, Green).<\/p>\n\n\n\n<p>A IA tem sido usada para avan\u00e7ar em diferentes campos, como educa\u00e7\u00e3o, sa\u00fade, e finan\u00e7as. No entanto, a aplica\u00e7\u00e3o da IA campo do gerenciamento de projetos (GP) n\u00e3o tem progredido igualmente.<\/p>\n\n\n\n<p><strong>As redes neurais artificial s\u00e3o<\/strong> um tipo de intelig\u00eancia artificial que, at\u00e9 certo ponto, tentam, simular o pensamento humano. Elas s\u00e3o usados para v\u00e1rios fins, como aprova\u00e7\u00e3o de cr\u00e9dito, detec\u00e7\u00e3o de fraudes, sistemas de vigil\u00e2ncia e fins de previs\u00e3o. Um dos principais componentes das redes neurais \u00e9 o treinamento, que as ajuda a se ajustar aos padr\u00f5es de dados e fornecer melhores resultados.<\/p>\n\n\n\n<p><strong>Durante o treinamento, os resultados da rede neural s\u00e3o comparados com dados reais e conhecidos, e o processo \u00e9 repetido at\u00e9 que a taxa de erro seja muito baixa.<\/strong><\/p>\n\n\n\n<p><br>As redes neurais s\u00e3o mais precisas do que os modelos lineares baseados em modelos de regress\u00e3o, que t\u00eam sido frequentemente usados no gerenciamento de projetos. As redes neurais podem lidar com relacionamentos complexos e n\u00e3o lineares entre vari\u00e1veis. <\/p>\n\n\n\n<p>Portanto, as redes neurais podem ser uma ferramenta \u00fatil para a <strong>classifica\u00e7\u00e3o de status de projetos  e tarefas a partir de textos, pois podem fornecer previs\u00f5es e insights mais precisos.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Desenvolvendo o Modelo de Classifica\u00e7\u00e3o com Representa\u00e7\u00e3o Vetorial <\/h2>\n\n\n\n<p>Nesta etapa do trabalho, utilizamos o conjunto de dados de situa\u00e7\u00e3o de tarefas para implementar classificadores a partir de representa\u00e7\u00e3o vetorial TF-IDF.<\/p>\n\n\n\n<p><strong>Carga da Base de Dados e Valida\u00e7\u00e3o de Carga<\/strong><\/p>\n\n\n\n<p>A base de dados para este trabalho foi composta por coment\u00e1rios realizados sobre a situa\u00e7\u00e3o de tarefas juntamente de indicadores RAG (Red, \u00c2mber, Green) que indicam a situa\u00e7\u00e3o da tarefa em determinado momento do projeto. <\/p>\n\n\n\n<p>A Amostra de coment\u00e1rios e situa\u00e7\u00e3o em projetos realizados nos \u00faltimos 5 antos foram e<strong>xtra\u00eddas do software NetProject. <\/strong><\/p>\n\n\n\n<p>Para enriquecimento desta base foram adicionados os coment\u00e1rios e situa\u00e7\u00f5es trabalhados no<strong> artigo da Oracle.<\/strong><\/p>\n\n\n\n<p>N\u00famero de amostras: 1974<br>N\u00famero de coment\u00e1rios marcados como <strong>GREEN<\/strong>: 347<br>N\u00famero de coment\u00e1rios marcados como <strong>RED<\/strong>: 907<br>N\u00famero de coment\u00e1rios marcados como <strong>AMBER<\/strong>: 720<br><\/p>\n\n\n\n<p><strong>Prepara\u00e7\u00e3o dos dados<\/strong><\/p>\n\n\n\n<p>Os dados textuais brutos acima coletados s\u00e3o <strong>pr\u00e9-processados para transform\u00e1-los em um formato adequado para uso nos algoritmos<\/strong> de NLP e Redes Neurais deste artigo. Inclu\u00edmos a normaliza\u00e7\u00e3o a tokeniza\u00e7\u00e3o, remo\u00e7\u00e3o de stop words (palavras muito comuns que n\u00e3o agregam valor para a classifica\u00e7\u00e3o), lematiza\u00e7\u00e3o ou stemming (redu\u00e7\u00e3o de palavras \u00e0 sua forma b\u00e1sica) para prosseguirmos com a vetoriza\u00e7\u00e3o.<\/p>\n\n\n\n<p><strong>Normaliza\u00e7\u00e3o<\/strong><\/p>\n\n\n\n<p>Para a normaliza\u00e7\u00e3o foi utilizada a biblioteca <strong>Enelvo<\/strong>. A biblioteca Enelvo apoia diversas tarefas de Processamento de Linguagem Natural em portugu\u00eas porque possui a capacidade de normalizar textos, ou seja, corrige abrevia\u00e7\u00f5es, g\u00edrias, erros ortogr\u00e1ficos, capitaliza letras no come\u00e7o das frases, de nomes pr\u00f3prios e acr\u00f4nimos. Ela tamb\u00e9m possui uma fun\u00e7\u00e3o pr\u00f3pria para remover pontua\u00e7\u00f5es e emojis.<\/p>\n\n\n\n<p><strong>Tokeniza\u00e7\u00e3o e Lematiza\u00e7\u00e3o<\/strong><\/p>\n\n\n\n<p>Para a tarefas de tokeniza\u00e7\u00e3o e lematiza\u00e7\u00e3o foi utilizada a biblioteca <strong>spaCy<\/strong>. A biblioteca spaCy \u00e9 uma biblioteca de processamento de linguagem natural (NLP) para a linguagem de programa\u00e7\u00e3o Python, projetada para ser r\u00e1pida, eficiente e f\u00e1cil de usar, tornando-se uma das escolhas populares para tarefas de NLP em Python.<\/p>\n\n\n\n<p>Para a biblioteca spaCy conseguir realizar suas fun\u00e7\u00f5es, \u00e9 necess\u00e1rio que um modelo de linguagem esteja presente. Optamos pelo modelo &#8220;<strong>pt core news sm<\/strong>&#8220;. <\/p>\n\n\n\n<p>Este \u00e9 um modelo de linguagem pr\u00e9-treinado espec\u00edfico para a l\u00edngua portuguesa, que foi treinado com uma quantidade significativa de texto em portugu\u00eas e cont\u00e9m informa\u00e7\u00f5es sobre tokens, an\u00e1lise sint\u00e1tica, reconhecimento de entidades nomeadas e outras informa\u00e7\u00f5es lingu\u00edsticas \u00fateis.<\/p>\n\n\n\n<p>O sufixo &#8220;sm&#8221; no nome do modelo significa &#8220;small&#8221; (pequeno), indicando que este \u00e9 um modelo menor, com menos par\u00e2metros e, portanto, ocupa menos espa\u00e7o em mem\u00f3ria e \u00e9 mais r\u00e1pido para carregar e processar em compara\u00e7\u00e3o com modelos maiores. <\/p>\n\n\n\n<p>Ao utilizar o modelo &#8220;pt core news sm&#8221; no spaCy, pode-se fazer an\u00e1lises lingu\u00edsticas em textos em portugu\u00eas, incluindo tokeniza\u00e7\u00e3o, lematiza\u00e7\u00e3o, identifica\u00e7\u00e3o de entidades nomeadas, an\u00e1lise de depend\u00eancia sint\u00e1tica e muito mais. <strong>Esse modelo pr\u00e9-treinado economiza tempo e recursos, permitindo focar mais nas tarefas espec\u00edficas de processamento de linguagem natural para o idioma portugu\u00ea<\/strong>s.<\/p>\n\n\n\n<p><strong>Remo\u00e7\u00e3o de Stop Words<\/strong><\/p>\n\n\n\n<p>A remo\u00e7\u00e3o de stop words em portugu\u00eas foi utilizada com apoio da biblioteca NLTK. As stop words s\u00e3o palavras que aparecem com frequ\u00eancia em um idioma, mas geralmente n\u00e3o contribuem significativamente para o significado do texto, como artigos, preposi\u00e7\u00f5es e pronomes. A remo\u00e7\u00e3o dessas palavras pode ajudar a reduzir a dimensionalidade dos dados e melhorar o desempenho de certas tarefas de an\u00e1lise de texto, como a classifica\u00e7\u00e3o proposta nesse trabalho.<\/p>\n\n\n\n<p><strong>Vetoriza\u00e7\u00e3o<\/strong><\/p>\n\n\n\n<p>Para vetoriza\u00e7\u00e3o utilizamos a biblioteca <strong>TfidfVectorizer<\/strong>, que faz parte do m\u00f3dulo scikit-learn (sklearn). O TfidfVectorizer e \u00e9 uma ferramenta importante para pr\u00e9-processamento de texto e vetoriza\u00e7\u00e3o de documentos com base na frequ\u00eancia dos termos em um corpus. A ferramenta calcula a import\u00e2ncia relativa de cada palavra em um conjunto de documentos usando a m\u00e9trica TF-IDF (Term Frequency-Inverse Document Frequency). Essa m\u00e9trica \u00e9 frequentemente usada para representar textos em formato num\u00e9rico, que podem ser usados como entrada para algoritmos de aprendizado de m\u00e1quina.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Abordagens de Classifica\u00e7\u00e3o e Resultados<\/strong><\/h2>\n\n\n\n<p>Percebe-se um crescente interesse na categoriza\u00e7\u00e3o de documentos de texto em classifica\u00e7\u00f5es predefinidas, impulsionado pelo aumento de documentos em formato digital e a necessidade de organiz\u00e1-los de forma eficiente.<\/p>\n\n\n\n<p><br>A categoriza\u00e7\u00e3o de texto \u00e9 amplamente empregada em aplica\u00e7\u00f5es de processamento de linguagem natural (NLP), as quais t\u00eam obtido \u00eaxito por meio da utiliza\u00e7\u00e3o de algoritmos de aprendizado de m\u00e1quina. No entanto, a classifica\u00e7\u00e3o de texto ainda representa um desafio para os pesquisadores, que est\u00e3o em busca da melhor estrutura e t\u00e9cnica adequada para alcan\u00e7ar resultados satisfat\u00f3rios.<\/p>\n\n\n\n<p>Para cada abordagens inclu\u00edmos as m\u00e9tricas de<strong> Precis\u00e3o, Recall, F1-Score e Suporte, al\u00e9m do resultado da Matriz de Confus\u00e3o.<\/strong><\/p>\n\n\n\n<p><strong>Naive Bayes<\/strong><\/p>\n\n\n\n<p>Algoritmo de classifica\u00e7\u00e3o baseado no Teorema de Bayes, que assume independ\u00eancia condicional entre os atributos. \u00c9 especialmente \u00fatil para classifica\u00e7\u00e3o de texto e problemas de linguagem natural. <\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" width=\"700\" height=\"250\" src=\"https:\/\/netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/1_naive_bayes-700x250.png\" alt=\"\" class=\"wp-image-5983\" srcset=\"https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/1_naive_bayes-700x250.png 700w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/1_naive_bayes-300x107.png 300w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/1_naive_bayes-768x274.png 768w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/1_naive_bayes.png 948w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" width=\"539\" height=\"455\" src=\"https:\/\/netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/1_naive_bayes-1.png\" alt=\"\" class=\"wp-image-5990\" srcset=\"https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/1_naive_bayes-1.png 539w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/1_naive_bayes-1-300x253.png 300w\" sizes=\"(max-width: 539px) 100vw, 539px\" \/><\/figure>\n\n\n\n<p><strong>Decision Tree<\/strong><\/p>\n\n\n\n<p>(\u00c1rvore de Decis\u00e3o): Algoritmo de aprendizado supervisionado que cria uma estrutura de \u00e1rvore de decis\u00e3o para dividir o conjunto de dados em segmentos mais homog\u00eaneos, tomando decis\u00f5es com base em regras condicionais nos atributos. <\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" width=\"700\" height=\"249\" src=\"https:\/\/netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/2_decision_tree-700x249.png\" alt=\"\" class=\"wp-image-5984\" srcset=\"https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/2_decision_tree-700x249.png 700w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/2_decision_tree-300x107.png 300w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/2_decision_tree-768x273.png 768w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/2_decision_tree.png 946w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" width=\"539\" height=\"455\" src=\"https:\/\/netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/2_decision_tree-1.png\" alt=\"\" class=\"wp-image-5991\" srcset=\"https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/2_decision_tree-1.png 539w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/2_decision_tree-1-300x253.png 300w\" sizes=\"(max-width: 539px) 100vw, 539px\" \/><\/figure>\n\n\n\n<p><strong>SVM<\/strong><\/p>\n\n\n\n<p>(Support Vector Machine): Algoritmo de aprendizado de m\u00e1quina que busca encontrar o hiperplano que melhor separa as classes de dados, maximizando a margem entre elas. \u00c9 \u00fatil para problemas de classifica\u00e7\u00e3o bin\u00e1ria e tamb\u00e9m pode ser estendido para classifica\u00e7\u00e3o multi-classe. <\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" width=\"700\" height=\"243\" src=\"https:\/\/netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/3_svm-700x243.png\" alt=\"\" class=\"wp-image-5985\" srcset=\"https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/3_svm-700x243.png 700w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/3_svm-300x104.png 300w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/3_svm-768x267.png 768w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/3_svm.png 944w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" width=\"539\" height=\"455\" src=\"https:\/\/netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/3_svm-1.png\" alt=\"\" class=\"wp-image-5992\" srcset=\"https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/3_svm-1.png 539w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/3_svm-1-300x253.png 300w\" sizes=\"(max-width: 539px) 100vw, 539px\" \/><\/figure>\n\n\n\n<p><strong>Logistic Regression<\/strong><\/p>\n\n\n\n<p>(Regress\u00e3o Log\u00edstica): Algoritmo de aprendizado supervisionado usado para problemas de classifica\u00e7\u00e3o bin\u00e1ria. Ele modela a probabilidade de uma inst\u00e2ncia pertencer a uma determinada classe usando uma fun\u00e7\u00e3o log\u00edstica.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" width=\"700\" height=\"251\" src=\"https:\/\/netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/4_logistic_regression-700x251.png\" alt=\"\" class=\"wp-image-5986\" srcset=\"https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/4_logistic_regression-700x251.png 700w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/4_logistic_regression-300x108.png 300w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/4_logistic_regression-768x276.png 768w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/4_logistic_regression.png 964w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" width=\"539\" height=\"455\" src=\"https:\/\/netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/4_logistic_regression-1.png\" alt=\"\" class=\"wp-image-5993\" srcset=\"https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/4_logistic_regression-1.png 539w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/4_logistic_regression-1-300x253.png 300w\" sizes=\"(max-width: 539px) 100vw, 539px\" \/><\/figure>\n\n\n\n<p><strong>XGBoost<\/strong><\/p>\n\n\n\n<p>Implementa\u00e7\u00e3o eficiente e escal\u00e1vel de \u00e1rvores de decis\u00e3o usando gradient boosting. \u00c9 amplamente utilizado para problemas de classifica\u00e7\u00e3o e regress\u00e3o, e tem se destacado em competi\u00e7\u00f5es de ci\u00eancia de dados. <\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" width=\"700\" height=\"259\" src=\"https:\/\/netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/5_xgboost-700x259.png\" alt=\"\" class=\"wp-image-5987\" srcset=\"https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/5_xgboost-700x259.png 700w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/5_xgboost-300x111.png 300w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/5_xgboost-768x285.png 768w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/5_xgboost.png 928w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" width=\"539\" height=\"455\" src=\"https:\/\/netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/5_xgboost-1.png\" alt=\"\" class=\"wp-image-5994\" srcset=\"https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/5_xgboost-1.png 539w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/5_xgboost-1-300x253.png 300w\" sizes=\"(max-width: 539px) 100vw, 539px\" \/><\/figure>\n\n\n\n<p><strong>Random Forest<\/strong><\/p>\n\n\n\n<p>(Floresta Aleat\u00f3ria): Algoritmo de aprendizado de conjunto (ensemble learning) baseado em \u00e1rvores de decis\u00e3o. Ele cria v\u00e1rias \u00e1rvores de decis\u00e3o aleat\u00f3rias e combina suas previs\u00f5es para melhorar a precis\u00e3o e reduzir o overfitting. <\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" width=\"700\" height=\"256\" src=\"https:\/\/netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/6_ramdom_forest-700x256.png\" alt=\"\" class=\"wp-image-5988\" srcset=\"https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/6_ramdom_forest-700x256.png 700w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/6_ramdom_forest-300x110.png 300w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/6_ramdom_forest-768x281.png 768w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/6_ramdom_forest.png 980w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" width=\"539\" height=\"455\" src=\"https:\/\/netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/6_radom_forest.png\" alt=\"\" class=\"wp-image-5995\" srcset=\"https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/6_radom_forest.png 539w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/6_radom_forest-300x253.png 300w\" sizes=\"(max-width: 539px) 100vw, 539px\" \/><\/figure>\n\n\n\n<p><strong>MLP Classifier<\/strong><\/p>\n\n\n\n<p>O MLPClassifier \u00e9 uma classificador de Perceptron de m\u00faltiplas camadas. Ao contr\u00e1rio de outros algoritmos de classifica\u00e7\u00e3o, como SVM ou o Naive Bayes, o MLPClassifier se baseia em uma Rede Neural para realizar a tarefa de classifica\u00e7\u00e3o.<\/p>\n\n\n\n<p>A rede neural artificial do MLPClassifier \u00e9 composta por v\u00e1rias camadas de neur\u00f4nios, incluindo uma camada de entrada, uma ou mais camadas intermedi\u00e1rias (tamb\u00e9m chamadas de camadas ocultas) e uma camada de sa\u00edda. Cada neur\u00f4nio em uma camada est\u00e1 conectado a todos os neur\u00f4nios na camada seguinte por meio de pesos ajust\u00e1veis.<\/p>\n\n\n\n<p>O processo de treinamento de um MLPClassifier envolve a passagem dos dados de treinamento pela rede, ajustando os pesos das conex\u00f5es entre os neur\u00f4nios para minimizar o erro entre as sa\u00eddas previstas pela rede e as sa\u00eddas reais esperadas. Isso geralmente \u00e9 feito usando algoritmos de otimiza\u00e7\u00e3o, como o algoritmo de retropropaga\u00e7\u00e3o (backpropagation).<\/p>\n\n\n\n<p><br><\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" width=\"700\" height=\"256\" src=\"https:\/\/netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/7_mlp-700x256.png\" alt=\"\" class=\"wp-image-5989\" srcset=\"https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/7_mlp-700x256.png 700w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/7_mlp-300x110.png 300w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/7_mlp-768x281.png 768w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/7_mlp.png 936w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img loading=\"lazy\" src=\"https:\/\/netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/7_mlp-1.png\" alt=\"\" class=\"wp-image-5996\" style=\"width:539px;height:455px\" width=\"539\" height=\"455\" srcset=\"https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/7_mlp-1.png 539w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/7_mlp-1-300x253.png 300w\" sizes=\"(max-width: 539px) 100vw, 539px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Comparativo entre abordagens<\/strong><\/h2>\n\n\n\n<p>Nesta se\u00e7\u00e3o trabalhamos os resultados das abordagens de classifica\u00e7\u00e3o previamente citadas sobre a base de dados escolhida.<\/p>\n\n\n\n<ul>\n<li>A abordagem que melhor identificou a classe RED foi a Random Forest: 268 ocorr\u00eancias<\/li>\n\n\n\n<li>A abordagem que melhor identificou a classe AMBAR foi a XGBoost: 84 ocorr\u00eancias<\/li>\n\n\n\n<li>A abordagem que melhor identificou a classe GREEN foi a XGBoost: 197 ocorr\u00eancias<\/li>\n\n\n\n<li>A abordagem que mais identificou falsos positivos na classe RED foi a SVM: 41 ocorr\u00eancias<\/li>\n\n\n\n<li>A abordagem que mais identificou falsos positivos na classe AMBAR foi a Naive Bayes: 23 ocorr\u00eancias<\/li>\n\n\n\n<li>A abordagem que mais identificou falsos positivos na classe GREEN foi a SVM: 30 ocorr\u00eancias<\/li>\n\n\n\n<li>A abordagem que mais identificou falsos negativos na classe RED foi a SVM: 26 ocorr\u00eancias<\/li>\n\n\n\n<li>A abordagem que mais identificou negativos positivos na classe AMBAR foi a Logistic Regression: 28 ocorr\u00eancias<\/li>\n\n\n\n<li>As abordagens que mais indetificaram falsos negativos na classe GREEN foram a SVM e a MLP: 28 ocorr\u00eancias<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Desenvolvendo o Modelo de Classifica\u00e7\u00e3o com Aprendizado de M\u00e1quina<\/h2>\n\n\n\n<p>Nesta se\u00e7\u00e3o do trabalho propomos a utiliza\u00e7\u00e3o de redes neurais LSTM para realizar a classifica\u00e7\u00e3o das mensagens de projeto com o status RAG. O desenvolvimento do Modelo de Classifica\u00e7\u00e3o \u00e9 um processo que envolve etapas importantes, onde decis\u00f5es de implementa\u00e7\u00e3o s\u00e3o fundamentais para alcan\u00e7ar resultados mais eficazes e aprimorar a precis\u00e3o da classifica\u00e7\u00e3o. Nas subse\u00e7\u00f5es abaixo, seguiremos o fluxo padr\u00e3o de trabalho para resolver problemas de machine learning.<\/p>\n\n\n\n<p><strong>Coleta de dados<\/strong><\/p>\n\n\n\n<p>A base de dados \u00e9 estruturada de forma simples, sendo cada amostra constitu\u00edda por uma coluna com s\u00e9rie de palavras sobre a situa\u00e7\u00e3o da tarefa, uma coluna indicando a classifica\u00e7\u00e3o da situa\u00e7\u00e3o (RED, Amber, Green) e uma coluna de apoio para separa\u00e7\u00e3o entre base de treinamento e base de valida\u00e7\u00e3o.<\/p>\n\n\n\n<p>A base foi composta por duas fontes distintas. Primeiramente, realizamos a tradu\u00e7\u00e3o para portugu\u00eas dos dados utilizados pela Oracle no artigo previamente citado. Na sequ\u00eancia, alimentamos a base com coment\u00e1rios de tarefas e classifica\u00e7\u00f5es manuais realizados no software NetProject.<\/p>\n\n\n\n<p><strong>An\u00e1lise dos Dados<\/strong><\/p>\n\n\n\n<p>Ap\u00f3s carregar o dataframe com o Pandas, o pr\u00f3ximo passo \u00e9 percorrer os textos e analis\u00e1-los em tokens individuais, representando cada palavra com um n\u00famero inteiro para simplificar o processamento.<\/p>\n\n\n\n<p>Esses tokens num\u00e9ricos tamb\u00e9m ser\u00e3o utilizados como \u00edndices de coluna em uma matriz de contagem de ocorr\u00eancias, conhecida como matriz de termo do documento.<\/p>\n\n\n\n<p>Essa etapa de numera\u00e7\u00e3o tamb\u00e9m criar\u00e1 o vocabul\u00e1rio do corpus, que ser\u00e1 uma lista ordenada de palavras com base em sua frequ\u00eancia de ocorr\u00eancia em todo o conjunto de dados. Geralmente, palavras com frequ\u00eancia inferior a um valor m\u00ednimo, como 3 ou 2, ser\u00e3o exclu\u00eddas do vocabul\u00e1rio.<\/p>\n\n\n\n<p><strong>Escolha do Modelo e Prepara\u00e7\u00e3o dos dados<\/strong><\/p>\n\n\n\n<p>O calculo da propor\u00e7\u00e3o entre o n\u00famero de amostras e o n\u00famero de palavras por amostra foi menor que 1500. Nesse cen\u00e1rio o ideal \u00e9 tokeniza o texto em n-grams e utilizar um modelo simples de perceptron de m\u00faltiplas camadas (MLP) para classifica\u00e7\u00e3o<\/p>\n\n\n\n<p>Optamos pelo uso de aprendizado de transfer\u00eancia em nosso modelo. Com origem na modelagem de reconhecimento de imagem, o aprendizado de transfer\u00eancia aproveita modelos pr\u00e9-treinados (geralmente grandes) e adiciona ou ajusta as camadas finais para classifica\u00e7\u00e3o espec\u00edfica. A NLP cl\u00e1ssica, antes do advento das redes neurais profundas e do aprendizado por transfer\u00eancia, envolvia tokeniza\u00e7\u00e3o e an\u00e1lise estat\u00edstica de ocorr\u00eancias de palavras.<\/p>\n\n\n\n<p>O aprendizado por transfer\u00eancia indutiva teve um grande impacto na vis\u00e3o computacional, mas as abordagens existentes em PNL ainda exigem modifica\u00e7\u00f5es espec\u00edficas de tarefas e treinamento desde o in\u00edcio. Propomos o Ajuste Fino do Modelo de Linguagem Universal (ULMFiT), um m\u00e9todo eficaz de aprendizagem por transfer\u00eancia que pode ser aplicado a qualquer tarefa em PNL, e introduzimos t\u00e9cnicas que s\u00e3o essenciais para o ajuste fino de um modelo de linguagem. \\cite{howard2018universal}<\/p>\n\n\n\n<p>O tokenizador padr\u00e3o no fastai \u00e9 parte da biblioteca spaCy, j\u00e1 citado previamente neste artigo e que tamb\u00e9m ser\u00e1 utilizado no desenvolvimento do Modelo de Classifica\u00e7\u00e3o com Aprendizado de M\u00e1quina.<\/p>\n\n\n\n<p><strong>A Biblioteca Fast AI<\/strong><\/p>\n\n\n\n<p>A biblioteca fastai \u00e9 uma biblioteca de c\u00f3digo aberto de aprendizado profundo (deep learning) desenvolvida com o objetivo de tornar o processo de desenvolvimento de modelos de aprendizado de m\u00e1quina mais acess\u00edvel e eficiente. Ela foi criada com base na biblioteca PyTorch, outra popular biblioteca de aprendizado de m\u00e1quina.<\/p>\n\n\n\n<p>A fastai fornece uma interface de alto n\u00edvel que simplifica a cria\u00e7\u00e3o e treinamento de modelos de aprendizado profundo, permitindo que os desenvolvedores e cientistas de dados construam e treinem modelos poderosos com menos c\u00f3digo e esfor\u00e7o. A biblioteca foi projetada para ser amig\u00e1vel para iniciantes, enquanto ainda oferece flexibilidade para usu\u00e1rios avan\u00e7ados.<\/p>\n\n\n\n<p>A biblioteca oferece suporte para transfer\u00eancia de aprendizado (transfer learning), que permite aproveitar modelos pr\u00e9-treinados em grandes conjuntos de dados para tarefas espec\u00edficas. Facilita o treinamento de modelos com t\u00e9cnicas avan\u00e7adas, como aprendizado por curriculum e discriminative learning rates. Implementa algoritmos modernos de aprendizado de m\u00e1quina com m\u00e9todos atualizados e inovadores. Oferece suporte para tarefas espec\u00edficas, como processamento de linguagem natural (NLP) e vis\u00e3o computacional.<\/p>\n\n\n\n<p><strong>Cria\u00e7\u00e3o e treinamento do modelo<\/strong><\/p>\n\n\n\n<p>Nessa etapa do trabalho utilizamos a fun\u00e7\u00e3o TextDataLoaders from df da biblioteca fastai, para criar um conjunto de dados pronto para treinamento de modelos de Aprendizado Profundo (Deep Learning) a partir de um DataFrame do pandas contendo as amostras textuais de nossa base. A fun\u00e7\u00e3o permite que a cria\u00e7\u00e3o conjuntos de dados prontos para treinamento de modelos de linguagem ou modelos de classifica\u00e7\u00e3o de texto de maneira r\u00e1pida e f\u00e1cil. Ela realiza automaticamente o pr\u00e9-processamento do texto, tokeniza\u00e7\u00e3o, cria\u00e7\u00e3o de vocabul\u00e1rio, cria\u00e7\u00e3o de batches e outras tarefas relacionadas ao processamento de texto para o treinamento eficiente do modelo.<\/p>\n\n\n\n<p>Para treinar o classificador, usaremos uma t\u00e9cnica chamada descongelamento gradual. Podemos come\u00e7ar treinando as \u00faltimas camadas, depois retroceder e descongelar e treinar as camadas anteriores. Podemos usar a fun\u00e7\u00e3o do aprendiz (learner) learn.freeze-to(-2) para descongelar as duas \u00faltimas camadas.<\/p>\n\n\n\n<p>Tamb\u00e9m usamos a fun\u00e7\u00e3o learn.recorder.plot-losses() para acompanhar nossa fun\u00e7\u00e3o de perda ao longo das \u00e9pocas.<\/p>\n\n\n\n<p><strong>Avalia\u00e7\u00e3o do Modelo<\/strong><\/p>\n\n\n\n<p>A imagem abaixo apresenta a Matriz de confus\u00e3o do Modelo de Classifica\u00e7\u00e3o utilizando Aprendizado de M\u00e1quina. Em 166 amostras a classe GREEN foi predita corretamente. Em 59 amostras a classe RED foi predida corretamente. Em 116 amostras a classe AMBER foi predita corretamente.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img loading=\"lazy\" src=\"https:\/\/netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/confusao_final-700x694.png\" alt=\"\" class=\"wp-image-6004\" style=\"width:412px;height:408px\" width=\"412\" height=\"408\" srcset=\"https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/confusao_final-700x694.png 700w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/confusao_final-300x298.png 300w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/confusao_final.png 746w\" sizes=\"(max-width: 412px) 100vw, 412px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Aplica\u00e7\u00e3o dos Modelos no Software NetProject<\/h2>\n\n\n\n<p>Os modelos previamente treinados ser\u00e3o implantados para uso no software NetProject. A imagem abaixo apresenta a tela de trabalho inicial de um usu\u00e1rio da ferramenta. A coluna Far\u00f3is representa o status RAG da tarefa em quest\u00e3o. Por exemplo, a tarefa Lan\u00e7ar Despesas do setor financeiro apresenta uma predi\u00e7\u00e3o de status Green com acur\u00e1cia de 75 % na previs\u00e3o.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"700\" height=\"436\" src=\"https:\/\/netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/netproject1-700x436.png\" alt=\"\" class=\"wp-image-6005\" srcset=\"https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/netproject1-700x436.png 700w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/netproject1-300x187.png 300w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/netproject1-768x478.png 768w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/netproject1.png 1022w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/figure>\n\n\n\n<p>A imagem abaixo apresenta uma itera\u00e7\u00e3o do usu\u00e1rio com o sistema em que o usu\u00e1rio deseja modificar ou confirmar um status predito. Ser\u00e1 poss\u00edvel, por exemplo, confirmar o status Green predito ou alterar para um novo Status. O status que o usu\u00e1rio definir ficar\u00e1 ativo at\u00e9 a pr\u00f3xima atualiza\u00e7\u00e3o de predi\u00e7\u00e3o, com base nos novos coment\u00e1rios que forem adicionados a tarefa.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"700\" height=\"437\" src=\"https:\/\/netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/netproject2-700x437.png\" alt=\"\" class=\"wp-image-6006\" srcset=\"https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/netproject2-700x437.png 700w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/netproject2-300x187.png 300w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/netproject2-768x479.png 768w, https:\/\/blog.netproject.com.br\/blog\/wp-content\/uploads\/2024\/04\/netproject2.png 1026w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Conclus\u00e3o e Trabalhos Futuros <\/h2>\n\n\n\n<p>Este trabalho prop\u00f4s o desenvolvimento de um modelo de aprendizado de m\u00e1quina, com apoio de NLP e Redes Neurais, para priorizar tarefas atrav\u00e9s de algoritmos de classifica\u00e7\u00e3o de n\u00edvel de riscos de acordo com marcadores RAG.<\/p>\n\n\n\n<p>O Modelo de Classifica\u00e7\u00e3o utilizando aprendizado de m\u00e1quina foi realizado com transfer\u00eancia de aprendizado sobre um modelo que n\u00e3o foi pr\u00e9-treinado com um corpus da linguagem portugesa. Entendemos que o modelo possa ser pr\u00e9-treinado com um conjunto de informa\u00e7\u00f5es provenientes de grandes sistemas de acompanhamento de projetos e seus consequentes problemas que sejam p\u00fablicos, como o o StackOverflow ou o pr\u00f3prio GitHub. Os r\u00f3tulos RED poderiam ser atribu\u00eddos a coment\u00e1rios que n\u00e3o fossem de conclus\u00e3o do problema relatado. Os r\u00f3tulos GREEN poderiam ser atribu\u00eddos a coment\u00e1rios de conclus\u00e3o do problema.<\/p>\n\n\n\n<p>Outra possibilidade de trabalho futuro seria a inclus\u00e3o da perspectiva de an\u00e1lise de sentimento aos coment\u00e1rios de tarefas, explorando mais os trabalhos propostos por Bing Liu. Nesse trabalho, os autores fornecem uma investiga\u00e7\u00e3o abrangente sobre as capacidades de Modelos de Linguagem com Aprendizado de Linguagem (LLMs) na realiza\u00e7\u00e3o de v\u00e1rias tarefas de an\u00e1lise de sentimentos, desde a classifica\u00e7\u00e3o convencional de sentimentos at\u00e9 a an\u00e1lise de sentimentos baseada em aspectos e an\u00e1lise multifacetada de textos subjetivos.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p><small> 21 minutos<\/small> Muitas organiza\u00e7\u00f5es exigem que membros de equipes de projeto forne\u00e7am atualiza\u00e7\u00f5es regulares do status do projeto como parte do processo de monitoramento do projeto. Essas atualiza\u00e7\u00f5es geralmente consistem em coment\u00e1rios de texto associados a um status vermelho-\u00e2mbar-verde (RAG), em que vermelho indica um projeto\/tarefa com falha, \u00e2mbar uma tarefa\/projeto em risco e verde uma tarefa\/projeto em andamento conforme planejado. Este trabalho prop\u00f5e o desenvolvimento de um modelo de aprendizado de m\u00e1quina, com apoio de NLP e Redes Neurais, para priorizar tarefas atrav\u00e9s <a href=\"https:\/\/blog.netproject.com.br\/blog\/case-ia-em-gestao-de-projetos-uso-de-nlp-e-redes-neurais-artificiais-para-estabelecer-ranking-de-tarefas-e-projetos-usando-o-status-rag\/\" class=\"more-link\"><span>Continue<\/span>\u2192<\/a><\/p>\n","protected":false},"author":1,"featured_media":5998,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[303],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.netproject.com.br\/blog\/wp-json\/wp\/v2\/posts\/5981"}],"collection":[{"href":"https:\/\/blog.netproject.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.netproject.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.netproject.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.netproject.com.br\/blog\/wp-json\/wp\/v2\/comments?post=5981"}],"version-history":[{"count":5,"href":"https:\/\/blog.netproject.com.br\/blog\/wp-json\/wp\/v2\/posts\/5981\/revisions"}],"predecessor-version":[{"id":6007,"href":"https:\/\/blog.netproject.com.br\/blog\/wp-json\/wp\/v2\/posts\/5981\/revisions\/6007"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.netproject.com.br\/blog\/wp-json\/wp\/v2\/media\/5998"}],"wp:attachment":[{"href":"https:\/\/blog.netproject.com.br\/blog\/wp-json\/wp\/v2\/media?parent=5981"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.netproject.com.br\/blog\/wp-json\/wp\/v2\/categories?post=5981"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.netproject.com.br\/blog\/wp-json\/wp\/v2\/tags?post=5981"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}