;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Será o fim dos boatos? Robô do WhatsApp vai desmentir fake news para você

Chatbot da IFCN traz informações sobre boatos relacionados ao novo coronavírus - Divulgação
Chatbot da IFCN traz informações sobre boatos relacionados ao novo coronavírus Imagem: Divulgação

Rodrigo Trindade

De Tilt, em São Paulo

04/08/2020 10h00

Sem tempo, irmão

  • Chatbot da IFCN trará maiores informações sobre boatos no WhatsApp
  • Ferramenta fará breve análise de notícias falsas e dirá por que são mentirosas
  • Recurso chega para ajudar com boatos sobre covid-19, mas será expandido a outros temas

Depois de ter se tornado uma plataforma repleta de desinformação, o WhatsApp ganhou nesta terça-feira (4) mais uma ferramenta para perder a má fama. O aplicativo de mensagens agora conta com um chatbot —um robô de conversas, em bom português— para checar se aquela "notícia" que chegou no grupo da família, ou do trabalho, é falsa ou enganosa.

O recurso é produzido desde o começo de maio pela IFCN (Rede Internacional de Checagem de Fatos, da sigla em inglês) e estava disponível em mais de 70 países em inglês, espanhol e hindi. Agora é a estreia da versão em português, em parceria com o Instituto de Tecnologia e Sociedade do Rio de Janeiro (ITS Rio).

Por enquanto, a ferramenta atende apenas casos de boatos relacionados à pandemia do novo coronavírus. A proposta da IFCN é que no futuro o robô atenda outros tipos de dúvidas.

"Esse chatbot chega dia 4 de agosto e vai durar até a covid-19 acabar. De cara vai cruzar com eleições. Evidentemente tudo o que for de eleição, política, que cruze com covid vai aparecer no robô", afirma Cristina Tardáguila, diretora-adjunta da IFCN. "Ali vai ser uma fonte para identificar candidatos que desinformarem sobre o coronavírus."

Para usar o serviço, que é gratuito, você precisa antes de tudo gravar o número +1 (727) 291 2606 na agenda do celular —ou clicar aqui. Isto feito, basta mandar um "oi" que o chatbot vai iniciar uma conversa em português.

Ele sugerirá, principalmente:

  1. A busca por uma checagem específica;
  2. A apresentação das checagens mais recentes; e
  3. Dicas de como combater a desinformação.

Há também outras opções para obter informações sobre a própria IFCN, a privacidade do serviço e uma maneira de alterar o idioma do robô. Para ativar as funções, você deve selecionar o número indicado. No caso da busca por uma checagem específica, é necessário apenas escrever "1".

O chatbot vai explicar como fazer a busca, que pode ser feita a partir de uma simples palavra-chave ou de perguntas. Testamos o que viria de resposta ao digitar apenas "cloroquina" e, como resultado, vieram dois conteúdos classificados como falsos:

  • Que os ingredientes ativos da cloroquina e ivermectina também são encontrados nas cascas de limão e laranja; e
  • Que, de acordo com Olavo de Carvalho, três ministros do governo francês estavam sob investigação por conta de erros de regulamentação em relação à cloroquina.

O primeiro caso veio com uma explicação da agência Aos Fatos, enquanto o segundo foi checado pelo Estadão Verifica. Cada mensagem trouxe a notícia original, carimbada como falsa e acompanhada de uma explanação do porquê a informação não era procedente. O texto também traz a data em que foi feita a verificação dos fatos.

Ao escrever "2" o sistema forneceu as checagens mais recentes. Primeiro veio o boato sobre os ministros da França, seguido de outra notícia classificada como falsa: que o tratamento domiciliar à base de ivermectina, cloroquina, azitromicina e vitaminas pode curar a infecção causada pelo novo coronavírus.

Segundo Tardáguila, o robô chega com exatas 2.260 checagens em português. Este material foi produzido por 24 organizações que fazem parte da rede internacional de verificadores de fatos, sendo quatro delas brasileiras e duas portuguesas. Conteúdos feitos por entidades de países de língua espanhola, mas relevantes para seus vizinhos que falam português, também foram traduzidos para aumentar o banco de informações.

Veja o robô em ação

Quebrando barreiras de informação

Uma questão apontada por especialistas é que serviços como Facebook, Twitter, Instagram e WhatsApp não consomem a franquia dos planos de dados oferecidos pelas operadoras de telefonia. Para eles, este fator facilita a disseminação de desinformação.

Enquanto o uso destes apps é gratuito no plano de celular, checar no navegador se a informação divulgada no grupo de "Zap" da família é verdadeira consome a franquia de dados. Daí o problema se forma: a informação que chega pelo aplicativo muitas vezes é a única que o usuário tem o.

O chatbot da IFCN quebra essa lógica ao apresentar os fatos verificados direto como mensagem. Em vez de simplesmente dar o link para uma notícia, o sistema traz o boato, indica o grau de veracidade do mesmo e dá a explicação dos problemas daquele conteúdo.

Tardáguila afirma que esta é uma tentativa de "inundar a sociedade com informações de qualidade", oferecidas de uma maneira fácil — e gratuita — no WhatsApp. A base de dados de checagens sobre o coronavírus começou a ser montada em janeiro e a demora para uma versão em português do robô teve relação com as particularidades regionais.

"Não adianta dar apenas um link. Vai demorar, gastar dados. O camarada não vai abrir. Precisava que cada checagem trouxesse a frase, a etiqueta — todas com graus de falso — e um microrresumo. Se ele quiser informações, ele pode clicar", diz.

Neste processo, as empresas que fazem a checagem de fatos e as disponibilizam online abrem mão dos cliques, importantes para o modelo de negócios do jornalismo na internet.

No WhatsApp, mas não do WhatsApp

O robô funciona no WhatsApp, mas é da IFCN. Entretanto, o desenvolvimento do chatbot está ligado à relação entre a empresa e a organização.

Em março, a pandemia começou a atingir com força países além da China. De acordo com Tardáguila, este período ficou marcado por um pico de checagens sobre desinformação relacionada à pandemia, o que fez com que Facebook e WhatsApp (que pertence à rede social) procurassem a IFCN em busca de soluções para mitigar os danos dos boatos que se espalhavam em suas plataformas.

O WhatsApp, então, fez um aporte de US$ 1 milhão na IFCN, que usou estes recursos para pagar o desenvolvimento dos robôs em inglês, espanhol, hindi e português, além de bancar o trabalho de acadêmicos que avaliaram a base de dados levantada desde janeiro pela rede.

A IFCN pretende melhorar sua ferramenta para além da identificação de mensagens de texto. A ideia é que o robô consiga receber foto e até vídeo dos usuários para buscar por checagens sobre esses conteúdos. Por enquanto, Tardáguila sugere que a busca seja feita por palavras-chave que descrevam as imagens ou vídeos.

A diretora-adjunta do IFCN acredita, no entanto, que novas maneiras de enganar surgirão com o tempo —cada uma com sua particularidade. Com a covid-19, vieram falsos PDFs que fingiam ser trabalhos acadêmicos; nas eleições, Tardáguila acredita que áudios de WhatsApp com imitações de candidatos serão a nova moda dos desinformadores.

A solução? "Tem que virar hábito consultar o checador. Chega de manhã, abre o menu das duas últimas checagens. Para já ir pro Facebook e Twitter com sua blindagem", conclui.