<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Arquivos Jodavid Ferreira - Estatidados</title>
	<atom:link href="http://estatidados.com.br/category/professores-colaboradores/jodavid-ferreira-professores-colaboradores/feed/" rel="self" type="application/rss+xml" />
	<link>http://estatidados.com.br/category/professores-colaboradores/jodavid-ferreira-professores-colaboradores/</link>
	<description>Comunidade de Estatística</description>
	<lastBuildDate>Thu, 09 Jun 2022 19:50:22 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>CRISP-DM (Processo Padrão Inter-Indústrias para Mineração de Dados)</title>
		<link>http://estatidados.com.br/crisp-dm-processo-padrao-inter-industrias-para-mineracao-de-dados/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=crisp-dm-processo-padrao-inter-industrias-para-mineracao-de-dados</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 09 Jun 2022 18:35:17 +0000</pubDate>
				<category><![CDATA[ciencia de dados]]></category>
		<category><![CDATA[Jodavid Ferreira]]></category>
		<category><![CDATA[Machine learning]]></category>
		<category><![CDATA[cienciadedados]]></category>
		<category><![CDATA[crispdm]]></category>
		<category><![CDATA[machinelearning]]></category>
		<category><![CDATA[ml]]></category>
		<guid isPermaLink="false">http://estatidados.com.br/?p=703</guid>

					<description><![CDATA[<p>PUBLISHED ON 4 DE JUN DE 2022 —&#160;BIG DATA,&#160;MACHINE LEARNING,&#160;PROGRAMMING,&#160;R,&#160;STATISTICS Olá, no texto de hoje será abordado o&#160;CRISP-DM, este que é uma das metodologias ou processo&#160;(particularmente prefiro esse termo)&#160;que pode ser utilizado na jornada de desenvolvimento de soluções com dados.<a class="leiamais" href="http://estatidados.com.br/crisp-dm-processo-padrao-inter-industrias-para-mineracao-de-dados/" title="CRISP-DM (Processo Padrão Inter-Indústrias para Mineração de Dados)">...[Continuar lendo]</a></p>
<p>O post <a href="http://estatidados.com.br/crisp-dm-processo-padrao-inter-industrias-para-mineracao-de-dados/">CRISP-DM (Processo Padrão Inter-Indústrias para Mineração de Dados)</a> apareceu primeiro em <a href="http://estatidados.com.br">Estatidados</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h6 class="wp-block-heading">PUBLISHED ON 4 DE JUN DE 2022 —&nbsp;<a href="https://jodavid.github.io/categories/big-data">BIG DATA</a>,&nbsp;<a href="https://jodavid.github.io/categories/machine-learning">MACHINE LEARNING</a>,&nbsp;<a href="https://jodavid.github.io/categories/programming">PROGRAMMING</a>,&nbsp;<a href="https://jodavid.github.io/categories/r">R</a>,&nbsp;<a href="https://jodavid.github.io/categories/statistics">STATISTICS</a></h6>



<p>Olá, no texto de hoje será abordado o&nbsp;<strong>CRISP-DM</strong>, este que é uma das metodologias ou processo&nbsp;<em>(particularmente prefiro esse termo)</em>&nbsp;que pode ser utilizado na jornada de desenvolvimento de soluções com dados. Apesar do foco do texto caminhar pelo CRISP-DM, existem outros processos propostos na literatura, dois deles são o famoso&nbsp;<strong>KDD</strong>&nbsp;&#8211;&nbsp;<em>Knowledge Discovery in Databases (Descoberta de Conhecimento em Bases de Dados)</em>&nbsp;proposto por Fayyad et al (1996) e o&nbsp;<strong>SEMMA</strong>&nbsp;acrônimo de&nbsp;<em>Sample, Explore, Modify, Model e Assess (Amostra, Explorar, Modificar, Modelar e Avaliar)</em>, desenvolvido pelo Instituto SAS.</p>



<p>Desenvolvido em 1999 por meio dos esforços de um consórcio composto inicialmente pela&nbsp;<em>DaimlerChrysler</em>,&nbsp;<em>SPSS</em>&nbsp;e&nbsp;<em>NCR</em>, o&nbsp;<strong>CRISP-DM</strong>&nbsp;&#8211;&nbsp;<em>Cross Industry Standard Process for Data Mining (Processo Padrão Inter-Indústrias para Mineração de Dados)</em>&nbsp;<code>surgiu como forma de apoio ao processo de descoberta do conhecimento e para padronizar os processos de mineração de dados em todos os setores</code>. Desde então, este processo é um dos mais utilizados para projetos de mineração de dados, estatística, análise e ciência de dados.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Os times de ciência de dados que combinam uma implementação flexível do CRISP-DM com abordagens abrangentes de gerenciamento de projetos ágeis baseadas em equipe, provavelmente obterão melhores resultados.</p></blockquote>



<p>O&nbsp;<strong>CRISP-DM</strong>&nbsp;é formado por 6 fases, que podemos descrever como:</p>



<ol class="wp-block-list"><li><em>Compreensão do Negócio</em>: O que o negócio precisa?</li><li><em>Compreensão dos Dados</em>: Que dados temos/precisamos? Está ‘limpo’, tratado, prontos para uso?</li><li><em>Preparação dos Dados</em>: Como organizamos os dados para modelagem?</li><li><em>Modelagem</em>: Quais técnicas de modelagem devemos aplicar?</li><li><em>Avaliação</em>: Qual modelo melhor atende aos objetivos do negócio?</li><li><em>Desenvolvimento</em>:Como as partes interessadas acessam os resultados?</li></ol>



<p>Abaixo é mostrado uma figura que representa o processo&nbsp;<strong>CRISP-DM</strong>&nbsp;e como as fases se interrelacionam:<img decoding="async" src="https://jodavid.github.io/img/crispdm/grafico_crisp_dm.png" alt=""></p>



<p>Etapas do CRISP-DM.Fonte: próprio autor.</p>



<p>A seguir serão detalhados as etapas como forma de deixar mais claro o que é necessário extrair e executar em cada uma delas.</p>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">1. Compreensão do Negócio</h3>



<p>Nesta primeira fase de&nbsp;<em>compreensão do negócio</em>, o foco é no entendimento dos objetivos e requisitos do projeto.&nbsp;<code>Conhecer e compreender o problema a ser resolvido é de suma importância neste processo.</code>&nbsp;Perceba que no próprio diagrama existem retornos para esta fase a partir de outras etapas do processo, ou seja, podem ocorrer falhas durante o processo por má compreensão do negócio. Para fins de tentar mitigar estes riscos de má compreensão, o&nbsp;<em>CRISP-DM</em>&nbsp;determina algumas atividades nesta fase, conforme é descrito a seguir:</p>



<ul class="wp-block-list"><li><strong>Determine os objetivos de negócios</strong>: entender completamente de uma perspectiva de negócios, o que o cliente realmente deseja realizar e, em seguida, definir os critérios de sucesso do negócio.</li><li><strong>Avalie a situação</strong>: determine a disponibilidade de recursos, os requisitos do projeto, avalie riscos e contingências e realize uma análise de custo-benefício.</li><li><strong>Determine as metas</strong>: Além de definir os objetivos de negócios, você também deve definir como é o sucesso de uma perspectiva técnica.</li><li><strong>Produza o plano do projeto</strong>: selecione tecnologias e ferramentas e defina planos detalhados para cada fase do projeto.</li></ul>



<p>Outros pontos interessantes que podem deixar o entendimento mais completo são:</p>



<ul class="wp-block-list"><li><strong>Identificar os especialistas na organização</strong>: Os especialistas da área de negócio (domínio), o pessoal da TI, bem como os responsáveis pela tomada de decisão precisam conhecer o processo. É comum nesta etapa, realizar treinamentos para fins de nivelamento de conhecimento do pessoal em torno do processo e onde o&nbsp;<strong>CRISP-DM</strong>&nbsp;estará atuando.</li><li><strong>Levantar e esboçar as necessidades e expectativas</strong>: As pessoas que estarão envolvidas no processo, precisam expor suas necessidades, principalmente aqueles que irão lidar com os dados e informações obtidos para posterior análise e tomada de decisão. É comum serem feitas rodadas de reuniões com estas pessoas para fins de elencar os objetivos e necessidades.</li><li><strong>Levantamento dos hardwares e softwares</strong>: A organização não é feita apenas de pessoas, mas também de ferramentas e neste sentido se faz necessário conhecer o que existe disponível ou não. O&nbsp;<strong>CRISP-DM</strong>&nbsp;orienta que o processo seja realizado em plataforma que possua arquitetura expansível, com capacidade de suportar grandes volumes de dados, com grandes chances destes dados serem heterogêneos e que possa ter capacidade de processamento compatível com o volume de dados.</li><li><strong>Fazer inventário das bases de dados existentes</strong>: É importante conhecer o que a organização possui de bases de dados internas e do acesso e uso de bases de dados externas. Neste momento, se faz necessário também observar potenciais bases de dados externas que guardem relação com o negócio da organização e por isso podem fazer parte do processo.</li><li><strong>Verificar a existência de DW (Data Warehouses) na organização</strong>: Caso a organização possua dados armazenados em bases multidimensionais, como os Data Lake, Data Warehouses, Data Marts, é possível que ela já tenha estabelecido um processo&nbsp;<em>ETL</em>&nbsp;e neste caso haverá um ganho de esforço no restante do processo.</li></ul>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">2. Compreensão dos Dados</h3>



<p>Esta fase geralmente é executada juntamente com a fase anterior (<em>Compreensão do Negócio</em>), em que o estudo sobre as informações coletadas se faz necessário e deve ser feita de forma detalhista. Aqui neste caso, o foco é direcionado para identificar, coletar e analisar os conjuntos de dados que podem ajudá-lo a atingir as metas do projeto. Podemos definir essa fase através de algumas tarefas:</p>



<ul class="wp-block-list"><li><strong>Solicite dados iniciais</strong>: adquira os dados necessários e (se necessário) carregue-os em sua ferramenta de análise.</li><li><strong>Descreva os dados</strong>: examine os dados e&nbsp;<code>documente</code>&nbsp;suas propriedades de superfície, como formato de dados, número de registros ou identidades de campo.</li><li><strong>Explorar dados</strong>: aprofunde-se nos dados. Consulte-o, visualize-o e identifique relacionamentos entre os dados.</li><li><strong>Verificar a qualidade dos dados</strong>: o quão “limpos/sujos”, “tratados/não tratados” estão os dados? Documente quaisquer problemas de qualidade.</li><li><strong>Verificar se a volumetria dos dados atende ao negócio</strong>: refere-se a quantidade de dados que será utilizada, pois amostras pequenas de dados podem não ser úteis para o processo, portanto é importante que seja feito um acordo para o fornecimento de volume de dados adequado.</li></ul>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">3. Preparação dos Dados</h3>



<p>Esta fase, prepara o(s) conjunto(s) de dados final(is) para modelagem. As diversas ferramentas analíticas que podem ser usadas nesta fase, apesar de oferecerem muitos recursos, impõem alguns requisitos sobre os dados quanto ao seu formato, gerando a necessidade de formatações e/ou transformações dos mesmos. Nesta estapa é possível dividir em cinco tarefas distintas:</p>



<ul class="wp-block-list"><li><strong>Selecionar dados</strong>: determine quais conjuntos de dados serão usados e documente os motivos da inclusão/exclusão.</li><li><strong>Limpeza dos Dados</strong>: muitas vezes esta é a tarefa mais demorada. Sem ele, você provavelmente será vítima do&nbsp;<code>"lixo que entra e sai do lixo"</code>. Uma prática comum durante esta tarefa é corrigir, imputar ou remover valores incorretos.</li><li><strong>Construir dados</strong>: Derive novos atributos que serão úteis.&nbsp;<em>Por exemplo, derivar o índice de massa corporal de alguém dos campos de altura e peso.</em></li><li><strong>Integrar dados</strong>: crie novos conjuntos de dados combinando dados de várias fontes.</li><li><strong>Formatar dados</strong>: Reformate os dados conforme necessário.&nbsp;<em>Por exemplo, você pode converter valores de string que armazenam números em valores numéricos para poder realizar operações matemáticas</em>.</li></ul>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">4. Modelagem</h3>



<p>A&nbsp;<strong>modelagem</strong>&nbsp;é o principal local onde as técnicas são aplicadas aos dados. É importante ter alguma compreensão dos conceitos de modelagem, incluindo os tipos de técnicas e algoritmos existentes. É aqui que você provavelmente construirá e avaliará vários modelos com base em várias técnicas de modelagem diferentes. Esta fase tem quatro tarefas:</p>



<ul class="wp-block-list"><li><strong>Selecione técnicas de modelagem</strong>: Determine quais algoritmos se adequam a problemática,&nbsp;<em>por exemplo: regressão, rede neural, etc</em>.</li><li><strong>Gerar design de teste</strong>: enquanto aguarda sua abordagem de modelagem, pode ser necessário dividir os dados em conjuntos de treinamento, teste e validação.</li><li><strong>Modelo de construção</strong>: Aqui é etapa da execução da modelagem dos algoritmos utilizando a tecnologia selecionada.</li><li><strong>Modelo de avaliação</strong>: Geralmente, vários modelos estão competindo entre si, e o&nbsp;<strong>cientista de dados</strong>&nbsp;precisa interpretar os resultados do modelo com base no&nbsp;<code>conhecimento do domínio, nos critérios de sucesso predefinidos e no design do teste</code>.</li></ul>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">5. Avaliação</h3>



<p>O insumo desta fase é a saída da fase anterior em forma de um ou mais modelos. Aqui na fase avaliação, é analisado qual modelo atende melhor ao negócio e o que fazer em seguida. Esta fase possui três tarefas:</p>



<ul class="wp-block-list"><li><strong>Avalie os resultados</strong>: os modelos atendem aos critérios de sucesso do negócio? Qual(is) devemos aprovar para o negócio?</li><li><strong>Processo de revisão</strong>: revise o trabalho realizado. Alguma coisa foi esquecida? Todas as etapas foram executadas corretamente? Resuma as descobertas e corrija qualquer coisa, se necessário.</li><li><strong>Determine as próximas etapas</strong>: Com base nas três tarefas anteriores, determine se deve continuar com a implantação, iterar mais ou iniciar novos projetos.</li></ul>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">6. Desenvolvimento</h3>



<p>A fase de&nbsp;<strong>desenvolvimento</strong>&nbsp;consiste da definição das fases de implantação do projeto, levando em consideração que o modelo resultante da fase de modelagem precisa ser factível de ser usado, ou seja, digamos que&nbsp;<code>um modelo não é particularmente útil a menos que o cliente possa acessar seus resultados</code>. A complexidade desta fase varia muito. Esta fase final tem quatro tarefas:</p>



<ul class="wp-block-list"><li><strong>Planejar a implantação</strong>: desenvolva e documente um plano para implantar o modelo.</li><li><strong>Plano de monitoramento e manutenção</strong>: desenvolva um plano completo de monitoramento e manutenção para evitar problemas durante a fase operacional (ou fase pós-projeto) de um modelo.</li><li><strong>Produzir relatório final</strong>: a equipe do projeto documenta um resumo do projeto que pode incluir uma apresentação final dos resultados das etapas realizadas.</li><li><strong>Revisão do projeto</strong>: conduza uma retrospectiva do projeto sobre o que deu certo, o que poderia ter sido melhor e como melhorar no futuro.</li></ul>



<hr class="wp-block-separator"/>



<h4 class="wp-block-heading">Conclusão</h4>



<p>Como uma forma de finalização desse post, com uma conclusão, podemos escrever alguns pontos para que seja possível aproveitar ao máximo os benefícios da&nbsp;<strong>CRISP-DM</strong>, para suprir as fraquezas ou pontos negativos existentes.</p>



<p>Sendo assim, pense sempre em fazer a equipe se concentrar estritamente em entregar lançamentos menores de todas as etapas e frequentemente solicitar feedback ao longo do caminho, evitando dessa forma cair em uma armadilha em cascata trabalhando minuciosamente em todas as etapas do projeto, e raramente retornar a uma etapa anterior, e a entrega ser um “big bang” no final do projeto porque a sua primeira entrega pode não ser muito útil, por estar nas fases iniciais do processo.</p>



<p>As etapas do processo exigem muita documentação, assim o gasto de tempo fazendo documentações poderá ser maior do que fazendo qualquer outra coisa, entretanto, procure sempre documentar o que for suficiente… mas não precisa exagerar. Não se esqueça também das tecnologias atuais: adicione etapas para aproveitar arquiteturas de nuvem e práticas de software modernos, como controle de versão&nbsp;<code>git</code>&nbsp;e pipelines de CI/CD ao seu plano de projeto, quando apropriado.</p>



<p>O&nbsp;<strong>CRISP-DM</strong>&nbsp;carece de estratégias de comunicação com as partes interessadas. Portanto, certifique-se de definir expectativas e se comunicar com eles com frequência.</p>



<p>E por fim, combine com uma abordagem de gerenciamento de projetos. Como uma declaração mais generalizada do item anterior, o&nbsp;<strong>CRISP-DM</strong>&nbsp;não é realmente uma abordagem de gerenciamento de projetos. Assim, combine-o com uma estrutura de coordenação de ciência de dados. As abordagens ágeis populares incluem:&nbsp;<strong>Kanban</strong>,&nbsp;<strong>Scrum</strong>&nbsp;e&nbsp;<strong>Scrum Orientado a Dados</strong>.</p>



<p>Fontes:</p>



<p>Azevedo, A. e Manuel, F.S. “KDD, SEMMA and CRISP-DM: a parallel overview.” IADS-DM (2008).</p>



<p>Fayyad, U. M. “Data mining and knowledge discovery: making sense out of data”. IEEE Expert, Vol. 11 No.&nbsp;5, pp.&nbsp;20-25 (1996).</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-blog-dnc-group wp-block-embed-blog-dnc-group"><div class="wp-block-embed__wrapper">
https://dnc.group/blog/data-science/metodologia-crisp-dm/
</div></figure>



<figure class="wp-block-embed is-type-wp-embed is-provider-data-science-process-alliance wp-block-embed-data-science-process-alliance"><div class="wp-block-embed__wrapper">
https://www.datascience-pm.com/crisp-dm-2/
</div></figure>



<figure class="wp-block-embed"><div class="wp-block-embed__wrapper">
https://blog.grancursosonline.com.br/processo-de-mineracao-de-dados-com-crisp-dm/
</div></figure>



<p><br>Texto baseado nas fontes citadas.<br></p>



<h4 class="wp-block-heading">“Post gerado com framework HUGO (<a href="http://gohugo.io/">http://gohugo.io/</a>), R Markdown (<a href="http://rmarkdown.rstudio.com/">http://rmarkdown.rstudio.com/</a>), no qual os resultados são gerados na geração da página.”</h4>



<h6 class="wp-block-heading">TAGS: <a href="https://jodavid.github.io/tags/big-data">BIG DATA</a>, <a href="https://jodavid.github.io/tags/machine-learning">MACHINE LEARNING</a>, <a href="https://jodavid.github.io/tags/programming">PROGRAMMING</a>, <a href="https://jodavid.github.io/tags/r">R</a>, <a href="https://jodavid.github.io/tags/statistics">STATISTICS</a></h6>



<p>Post original: https://jodavid.github.io/post/2022-06-04-crisp-dm-processo-padr-o-inter-ind-strias-para-minera-o-de-dados/</p>



<h6 class="wp-block-heading"><a href="https://jodavid.github.io/"></a></h6>



<p></p>
<p>O post <a href="http://estatidados.com.br/crisp-dm-processo-padrao-inter-industrias-para-mineracao-de-dados/">CRISP-DM (Processo Padrão Inter-Indústrias para Mineração de Dados)</a> apareceu primeiro em <a href="http://estatidados.com.br">Estatidados</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Refresh de um script R com Crontab</title>
		<link>http://estatidados.com.br/refresh-de-um-script-r-com-crontab/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=refresh-de-um-script-r-com-crontab</link>
					<comments>http://estatidados.com.br/refresh-de-um-script-r-com-crontab/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 23 Feb 2021 13:25:56 +0000</pubDate>
				<category><![CDATA[Jodavid Ferreira]]></category>
		<category><![CDATA[Linguagens de programação]]></category>
		<category><![CDATA[Professores colaboradores]]></category>
		<guid isPermaLink="false">http://estatidados.com.br/?p=580</guid>

					<description><![CDATA[<p>Este post será breve e com um objetivo específico. Vamos criar um refessh em um script&#160;R&#160;com o&#160;Crontab, entretanto, esse&#160;refresh&#160;como mencionado nesse post, nada mais é do que um agendamento de tarefas, no qual o&#160;Crontab&#160;irá executar a tarefa agendada, toda vez<a class="leiamais" href="http://estatidados.com.br/refresh-de-um-script-r-com-crontab/" title="Refresh de um script R com Crontab">...[Continuar lendo]</a></p>
<p>O post <a href="http://estatidados.com.br/refresh-de-um-script-r-com-crontab/">Refresh de um script R com Crontab</a> apareceu primeiro em <a href="http://estatidados.com.br">Estatidados</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Este post será breve e com um objetivo específico. Vamos criar um refessh em um script&nbsp;<code>R</code>&nbsp;com o&nbsp;<code>Crontab</code>, entretanto, esse&nbsp;<code>refresh</code>&nbsp;como mencionado nesse post, nada mais é do que um agendamento de tarefas, no qual o&nbsp;<code>Crontab</code>&nbsp;irá executar a tarefa agendada, toda vez que a condição especificada ocorer.</p>



<h2 class="wp-block-heading">O que é Crontab?</h2>



<p>&#8220;O Cron é utilizado para agendar tarefas recorrentes, as tarefas são chamadas de cronjobs e são gerenciadas pelo crontab (tabela do cron).</p>



<p>Esta ferramenta vem instalada em diversas distribuições Linux, mas caso o Cron não esteja instalado na sua máquina é possível instalar através do comando abaixo (No Ubuntu)&#8221;:</p>



<pre class="wp-block-code"><code># apt-get install cron</code></pre>



<p>Para criar uma nova tarefa usamos o comando&nbsp;<strong>crontab -e</strong>&nbsp;que irá abrir o arquivo do cron para inserir o agendamento para o usuário atual.</p>



<pre class="wp-block-code"><code># crontab -e</code></pre>



<ul class="wp-block-list"><li>Se necessário usar o&nbsp;<strong>sudo</strong>&nbsp;nos comandos acima.</li></ul>



<p>O crontab possui seis colunas, que correspondem aos minutos, horas, dias, meses, semanas e, por fim, aos comandos que serão executados.</p>



<p>Abaixo segue detalhes sobre eles:</p>



<ul class="wp-block-list"><li><em>Minuto:</em>&nbsp;Valores de 0 a 59 ou *</li><li><em>Hora:</em>&nbsp;Valores de 0 a 23 ou *</li><li><em>Dia:</em>&nbsp;Valores de 1 a 31 ou *</li><li><em>Mês:</em>&nbsp;Valores de 1 a 12, jan a dec ou *</li><li><em>Semana:</em>&nbsp;0 a 6, sun a sat ou * (0 e 7 representa Domingo)</li><li><em>Comando:</em>&nbsp;O comando a ser executado ou script</li></ul>



<p>O caractere asterisco (*) significa do primeiro ao último.</p>



<p>Com o arquivo do&nbsp;<code>Crontab</code>&nbsp;aberto vamos adicionar a seginte linha&nbsp;<code>*/15 * * * * Rscript script.R</code>, após o Rscript coloca todo o caminho até o arquivo a ser executado, e nos minutos foram colocados ’*/15’ para o arquivo ser executado a cada 15 minutos.</p>



<pre class="wp-block-code"><code># 
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
# 
# For more information see the manual pages of crontab(5) and cron(8)
# 
# m h  dom mon dow   command

*/15 * * * * Rscript 'script.R'
</code></pre>



<h2 class="wp-block-heading">Script R</h2>



<p>Vamos utilizar um script R que envia uma mensagem para o Telegram toda vez que for executado. Para isso, vou utilizar um Bot que criei no post anterior:&nbsp;<a href="https://jodavid.github.io/post/construindo-um-chatbot-para-telegram-com-r/">https://jodavid.github.io/post/construindo-um-chatbot-para-telegram-com-r/</a></p>



<p><strong>script.R:</strong></p>



<pre class="wp-block-code"><code># Pacote Necessário: telegram.bot

# Token do Bot:
bot &lt;- telegram.bot::Bot(token = "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11")

# Adicionando id do Recepetor (abaixo como descobrir seu id no Telegram)
chatid &lt;- "574895214" #id aleatório aqui

# Enviando o horário atual
bot$sendMessage(chat_id = chatid,
                text = format(Sys.time(), "%X")
                )</code></pre>



<h2 class="wp-block-heading">Como descobrir seu id</h2>



<ol class="wp-block-list"><li>Acesse esse link pelo Telegram:&nbsp;<a href="https://t.me/my_id_bot">https://t.me/my_id_bot</a>;</li><li>Utiliza o&nbsp;<code>/start</code>;</li><li>Seu&nbsp;<code>id</code>&nbsp;do Telegram vai aparecer na tela de conversa.</li></ol>



<hr class="wp-block-separator"/>



<p>Com esse código acima, estando correto o token do bot e o id do receptor, a mensagem chegará no Telegram corretamente.</p>



<p><strong>OBS.:</strong>&nbsp;É necessário interagir com o bot após a criação dele, para que as mensagens cheguem corretamente. Não fazendo isso, o bot não consegue enviar mensagens ao usuário.</p>



<p>Fontes:</p>



<p><a href="https://medium.com/totvsdevelopers/entendendo-o-crontab-607bc9f00ed3">https://medium.com/totvsdevelopers/entendendo-o-crontab-607bc9f00ed3</a></p>



<h4 class="wp-block-heading">“Post gerado com framework HUGO (<a href="http://gohugo.io/">http://gohugo.io/</a>), R Markdown (<a href="http://rmarkdown.rstudio.com/">http://rmarkdown.rstudio.com/</a>), no qual os resultados são gerados na geração da página.”</h4>



<p>Post original:</p>



<p><a href="https://jodavid.github.io/post/construindo-um-chatbot-para-telegram-com-r/">https://jodavid.github.io/post/construindo-um-chatbot-para-telegram-com-r/</a></p>



<p>LinkedIndo autor:</p>



<p><a href="https://www.linkedin.com/in/jodavidferreira/">https://www.linkedin.com/in/jodavidferreira/</a></p>
<p>O post <a href="http://estatidados.com.br/refresh-de-um-script-r-com-crontab/">Refresh de um script R com Crontab</a> apareceu primeiro em <a href="http://estatidados.com.br">Estatidados</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://estatidados.com.br/refresh-de-um-script-r-com-crontab/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Construindo um ChatBot para Telegram com R</title>
		<link>http://estatidados.com.br/construindo-um-chatbot-para-telegram-com-r/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=construindo-um-chatbot-para-telegram-com-r</link>
					<comments>http://estatidados.com.br/construindo-um-chatbot-para-telegram-com-r/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 23 Feb 2021 13:10:56 +0000</pubDate>
				<category><![CDATA[Estatística]]></category>
		<category><![CDATA[Jodavid Ferreira]]></category>
		<category><![CDATA[Linguagens de programação]]></category>
		<category><![CDATA[Professores colaboradores]]></category>
		<guid isPermaLink="false">http://estatidados.com.br/?p=574</guid>

					<description><![CDATA[<p>O Chatbot é um programa de computador que simula uma conversa humana em um chat. Dessa forma, é possível automatizar tarefas repetitivas e burocráticas, como dúvidas frequentes, na forma de diálogo pré-definido entre o usuário e um ‘robô’. Essa tecnologia<a class="leiamais" href="http://estatidados.com.br/construindo-um-chatbot-para-telegram-com-r/" title="Construindo um ChatBot para Telegram com R">...[Continuar lendo]</a></p>
<p>O post <a href="http://estatidados.com.br/construindo-um-chatbot-para-telegram-com-r/">Construindo um ChatBot para Telegram com R</a> apareceu primeiro em <a href="http://estatidados.com.br">Estatidados</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>O Chatbot é um programa de computador que simula uma conversa humana em um chat. Dessa forma, é possível automatizar tarefas repetitivas e burocráticas, como dúvidas frequentes, na forma de diálogo pré-definido entre o usuário e um ‘robô’. Essa tecnologia automatiza conversas e já é usada por diversas empresas e organizações para atender clientes, dar informações sobre serviços, vender produtos, entregar conteúdo, entre outras funções.</p>



<p>Essas ferramentas usam inteligência artificial e estão cada vez mais aperfeiçoadas. Ou seja, você não sabe, mas provavelmente já conversou com um robô.</p>



<p>Neste post vamos criar um ChatBot para o Telegram e controlado com software R.</p>



<h3 class="wp-block-heading">Criando o Bot no Telegram</h3>



<p>Primeiro passo é criar o Bot no Telegram, para esse passo crie uma conta no&nbsp;<a href="https://web.telegram.org/">Telegram</a>&nbsp;e em seguida procure o usuário&nbsp;<a href="https://telegram.me/botfather">@BotFather</a>&nbsp;e inicie uma conversa da seguinte forma com o seguinte comando para criar um novo bot:</p>



<pre class="wp-block-code"><code>/newbot</code></pre>



<p>Você deve obter uma resposta instantânea:</p>



<pre class="wp-block-code"><code>Alright, a new bot. How are we going to call it? Please choose a name for your bot.</code></pre>



<p>que pede para você escolher um nome para o seu Bot. Você deve enviar então o nome que deseja para o bot, que pode ser qualquer um, por exemplo:</p>



<pre class="wp-block-code"><code>JFRBot</code></pre>



<p>Em seguida receberá a seguinte mensagem:</p>



<pre class="wp-block-code"><code>Good. Now let's choose a username for your bot. It must end in `bot`. Like this, for example: TetrisBot or tetris_bot.</code></pre>



<p>O BotFather agora pedirá que você escolha um&nbsp;<strong>nome de usuário</strong>&nbsp;para o seu Bot. Este nome de usuário deve terminar em&nbsp;<em>bot</em>&nbsp;e ser globalmente único. Neste tutorial, vou alterar um pouco o nome, mas levando em consideração que seja parecido como nome escolhido anteriormente. Envie seu nome de usuário escolhido para BotFather:</p>



<pre class="wp-block-code"><code>J_frbot</code></pre>



<p>Depois de fazer isso, o BotFather enviará a você uma mensagem de “Parabéns”, que incluirá um token.</p>



<pre class="wp-block-code"><code>Done! Congratulations on your new bot. You will find it at t.me/J_frbot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. By the way, when you've finished creating your cool bot, ping our Bot Support if you want a better username for it. Just make sure the bot is fully operational before you do this.

Use this token to access the HTTP API:
123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
Keep your token secure and store it safely, it can be used by anyone to control your bot.

For a description of the Bot API, see this page: https://core.telegram.org/bots/api</code></pre>



<p><strong>eu substituí o token pois ele é único, este acima é apenas um exemplo</strong>.</p>



<p>O token é esta parte: 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11</p>



<p>Alguns comandos do&nbsp;<a href="https://telegram.me/botfather">@BotFather</a>&nbsp;podem ser encontrados&nbsp;<a href="https://core.telegram.org/bots#6-botfather">https://core.telegram.org/bots#6-botfather</a>.</p>



<p>Para o restante deste tutorial, indicaremos onde você precisa colocar seu token usando &lt;your-bot-token&gt; ou apenas TOKEN. Anote o token, pois você precisará dele no código que está prestes a escrever.</p>



<h3 class="wp-block-heading">Iniciando código no R</h3>



<p>Com a criação do Bot pelo Telegram concluído, vamos agora configurar o&nbsp;<code>R</code>&nbsp;para que consigamos consevar com o Bot e assim criar esse robô que está cada vez mais ganhando espaço.</p>



<p>O primeiro passo é instalar e chamar a biblioteca no qual usaremos:</p>



<pre class="wp-block-code"><code># Pacote Necessário
# install.packages(telegram.bot)

library(telegram.bot) #Pacote para Telegram</code></pre>



<p>Com o pacote instalado, é o momento de utilização do Token:</p>



<pre class="wp-block-code"><code>#Token do Bot:
bot &lt;- Bot(token = "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11")
updater &lt;- Updater(token = "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11")

print(bot$getMe())</code></pre>



<pre class="wp-block-code"><code>## $id
## &#91;1] 1406230646
## 
## $is_bot
## &#91;1] TRUE
## 
## $first_name
## &#91;1] "JFRBot"
## 
## $username
## &#91;1] "J_frbot"
## 
## $can_join_groups
## &#91;1] TRUE
## 
## $can_read_all_group_messages
## &#91;1] FALSE
## 
## $supports_inline_queries
## &#91;1] FALSE</code></pre>



<p>Pelo resultado anterior é possível verificar que estamos conectados ao nosso Bot corretamente.</p>



<p>A seguir vamos criar algumas funções e verificar se obtemos respostas quando conversarmos com nosso Bot pelo Telegram.</p>



<pre class="wp-block-code"><code>#Funcao start
start &lt;- function(bot, update)
{
  bot$sendMessage(chat_id = update$message$chat_id,
                  text = sprintf("Olá %s, se estiver recebendo está mensagem, significa que eu existo e estou aqui!",
                                 update$message$from$first_name))
}
start_handler &lt;- CommandHandler("start", start)
updater &lt;- updater + start_handler

#Funcao hoje
hoje &lt;- function(bot, update)
{
  bot$sendMessage(chat_id = update$message$chat_id,
                  text = sprintf("A data de hoje é %s",
                                 format(Sys.Date(), "%d-%b-%Y")))
}
hoje_handler &lt;- CommandHandler("hoje", hoje)
updater &lt;- updater + hoje_handler

#Funcao echo
echo &lt;- function(bot, update){
  bot$sendMessage(chat_id = update$message$chat_id, text = update$message$text)
}

updater &lt;- updater + MessageHandler(echo, MessageFilters$text)

#Funcao histograma de uma normal
historama_normal &lt;- function(bot, update)
{
  png("my_plot.png")
  hist(rnorm(1000))
  dev.off()
  bot$sendPhoto(chat_id = update$message$chat_id, photo = 'my_plot.png')
}

hist_norm_handler &lt;- CommandHandler("hist_norm", historama_normal)
updater &lt;- updater + hist_norm_handler</code></pre>



<p>Para iniciar o chatBot utilize a função abaixo:</p>



<pre class="wp-block-code"><code>updater$start_polling()</code></pre>



<p>Nosso Bot atualmente possui 4 funções, que podem ser acessadas com&nbsp;<code>/start</code>,&nbsp;<code>/hoje</code>,&nbsp;<code>/hist_norm</code>&nbsp;e a quarta função é repetir tudo que é digitado.</p>



<p>Abaixo segue uma imagem das funções funcionando no Telegram:</p>



<figure class="wp-block-image is-resized"><img fetchpriority="high" decoding="async" src="https://jodavid.github.io/img/exemplo-chatbot.jpg#center" alt="" width="254" height="533"/></figure>



<h2 class="wp-block-heading">Menu de itens</h2>



<p>Será mostrado a seguir como criar um menu de itens como destacado na imagem abaixo. Este menu ajuda a definir e mostrar aos usuários os comandos prontos e existentes no Bot.</p>



<figure class="wp-block-image"><img decoding="async" src="https://jodavid.github.io/img/chatbot2.png" alt=""/></figure>



<p>Para criar o menu de itens, acesse o chat do&nbsp;<a href="https://telegram.me/botfather">@BotFather</a>&nbsp;que é quem comanda os Bot, e exeute o seguinte comando:</p>



<pre class="wp-block-code"><code>/setcommands</code></pre>



<p>Você receberá a mensagem abaixo se possuir mais de um Bot</p>



<pre class="wp-block-code"><code>Choose a bot to change the list of commands.</code></pre>



<p>ao escolher o Bot desejado será novamente emitida uma mensagem</p>



<pre class="wp-block-code"><code>OK. Send me a list of commands for your bot. Please use this format:

command1 - Description
command2 - Another description

Send /empty to keep the list empty.</code></pre>



<p>A seguir pode colocar a lista com todos os comandos e as descrições, no nosso exemplo, como possui 3 funções,&nbsp;<code>/start</code>,&nbsp;<code>/hoje</code>,&nbsp;<code>/hist_norm</code>&nbsp;foram colocadas essas funções como mostrados abaixo.</p>



<pre class="wp-block-code"><code>start - inicio do Bot
hoje - data atual
hist_norm - Histograma da distribuição Normal</code></pre>



<p>Se conseguiu chegar aqui e com o código em&nbsp;<code>R</code>&nbsp;mostrado estando em execução, o seu ChatBot deve estar funcionando e respondendo a seus comandos pelo Telegram.</p>



<p>O Bot só funciona se o arquivo estiver rodando no&nbsp;<code>R</code>, ou, uma outra forma é colocar num servidor que suporte códigos em&nbsp;<code>R</code>. Eu possuo o&nbsp;<code>shiny-server</code>&nbsp;instalado em minha máquina local, e dessa forma foi possível criar um arquivo, no qual, quando este aberto, o ChatBot fica funcionando, ou seja, quando eu estiver com o notebook ligado, esse Bot ensinado nesse post está funcionando e voê pode conversar com ele pesquisado-o no Telegram por&nbsp;<code>JFRBot</code>&nbsp;ou&nbsp;<code>@J_frbot</code>.</p>



<p>O artigo&nbsp;<em>Como Instalar o shiny server em seu Próprio Servidor</em>&nbsp;do Marcus Nunes mostra como instalar um servidor Shiny, o artigo é encontrado no link:&nbsp;<a href="https://marcusnunes.me/posts/como-instalar-o-shiny-em-seu-proprio-servidor/">https://marcusnunes.me/posts/como-instalar-o-shiny-em-seu-proprio-servidor/</a>.</p>



<p>Fontes:</p>



<p><a href="https://www.techtudo.com.br/noticias/2018/03/o-que-e-chatbot-entenda-como-funciona-o-robo-que-conversa-com-voce.ghtml">https://www.techtudo.com.br/noticias/2018/03/o-que-e-chatbot-entenda-como-funciona-o-robo-que-conversa-com-voce.ghtml</a></p>



<p><a href="https://cran.r-project.org/web/packages/telegram.bot/vignettes/telegrambot-introduction.html">https://cran.r-project.org/web/packages/telegram.bot/vignettes/telegrambot-introduction.html</a></p>



<p><a href="https://chatbotsmagazine.com/building-a-telegram-chatbot-with-r-2754cb75759f">https://chatbotsmagazine.com/building-a-telegram-chatbot-with-r-2754cb75759f</a></p>



<h4 class="wp-block-heading">“Post gerado com framework HUGO (<a href="http://gohugo.io/">http://gohugo.io/</a>), R Markdown (<a href="http://rmarkdown.rstudio.com/">http://rmarkdown.rstudio.com/</a>), no qual os resultados são gerados na geração da página.”</h4>



<p>Post original: </p>



<p><a href="https://jodavid.github.io/post/construindo-um-chatbot-para-telegram-com-r/">https://jodavid.github.io/post/construindo-um-chatbot-para-telegram-com-r/</a></p>



<p>LinkedIndo autor:</p>



<p><a href="https://www.linkedin.com/in/jodavidferreira/">https://www.linkedin.com/in/jodavidferreira/</a></p>
<p>O post <a href="http://estatidados.com.br/construindo-um-chatbot-para-telegram-com-r/">Construindo um ChatBot para Telegram com R</a> apareceu primeiro em <a href="http://estatidados.com.br">Estatidados</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://estatidados.com.br/construindo-um-chatbot-para-telegram-com-r/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
