;(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

Robôs precisaram aprender a responder ao assédio feito por homens

Estúdio Rebimboca/UOL
Imagem: Estúdio Rebimboca/UOL

Gabriel Toueg

Colaboração para Tilt

08/04/2021 18h17

O Bradesco, segundo maior banco privado do Brasil, lançou esta semana uma ação para dar respostas mais assertivas a mensagens de assédio e de preconceito de gênero contra o seu chatbot, a Bia — robozinho dotado de inteligência artificial.

Ao longo do ano ado, mais de 95 mil mensagens desse tipo foram recebidas pela ferramenta, segundo o banco. A robô é mais uma da lista de assistentes virtuais com nome e voz feminina.

Em vídeo que foi ao ar na TV na última segunda-feira (5), mensagens condescendentes, ivas e de subserviência para Bia darão lugar agora a mais assertividade e contundência. Em um exemplo, ela troca a resposta antiga a um assédio —"Não entendi, poderia repetir?"— por "Essas palavras são inadequadas, não devem ser usadas comigo e com mais ninguém".

"A linguagem, por mais que possa parecer isolada, carrega crenças e valores das pessoas", disse a Tilt Glaucimar Peticov, diretora executiva do Bradesco. "O que acontece numa plataforma ocorre no dia a dia das pessoas nas questões de gênero", afirmou.

A iniciativa do banco faz parte de um esforço global, capitaneado pela Unesco (Organização das Nações Unidas para a Educação, a Ciência e a Cultura) e chamada "Hey Update My Voice" ("Ei, atualize a minha voz", em tradução livre).

As agressões sofridas pela Bia não são "pessoais" contra ela e nem isoladas. O chamado "assédio cibernético" acontece contra todo tipo de assistente digital dotada ou não de inteligência artificial. Recentemente, a Lu, o chatbot do Magazine Luiza, gravou um vídeo rebatendo pedidos de namoro que recebe, lado mais "gentil" desse tipo de interação: nas redes sociais, a robô recebe pedidos de "nudes" e insultos.

Mensagens assim são a ponta de um iceberg de agressões também contra mulheres reais no mundo virtual: segundo revelado pela Unesco no lançamento do movimento, 73% das mulheres em todo o mundo já sofreram algum tipo de assédio online.

Dados como esse fazem parte do estudo "I'd Blush If I Could" ("Se fosse possível, eu ficaria corada", em tradução livre), que evidencia o assédio moral e sexual sofrido pelas vozes virtuais.

A partir dos resultados do levantamento, que foi conduzido pela organização global em parceria com a EQUALS Skills Coalition, a Unesco apresentou às empresas uma série de ações propositivas, como a de atualizar as respostas das assistentes para combater e educar em situações de violência e de preconceito.

"Com o direcionamento que a Unesco nos deu, unindo todas as frentes (de temas de inclusão e diversidade) que já tínhamos, fomos conhecer como era a interação com a Bia", conta a executiva do Bradesco "Acabamos tendo uma surpresa com o que vimos, com mais de 95 mil referências tóxicas, num teor de assédio à feminilidade".

Ela conta diz ainda o que encontrou nas mensagens — o banco não revela o conteúdo delas — endossa o que a Unesco já havia apontado.

Mas nem todas as empresas que usam robôs de inteligência virtual pensam que as respostas devem ser assertivas. A Amazon é uma que pensa diferente: a Alexa, IA instalada em aparelhos como alto-falantes inteligentes, prefere calar ou não validar perguntas de cunho sexista ou de assédio.

Procurada por Tilt, a Amazon disse acreditar que a IA não deve encorajar o que chamou de "interações inapropriadas". "Por uma decisão intencional de produto, quando alguém fala algo impróprio para a Alexa, ela não se manifesta ou não responde à questão", disse um porta-voz.

Por que assistentes virtuais são "mulheres"?

A escolha de vozes femininas — e de nomes "de mulher" — para dar personalidade às ferramentas de IA não é aleatória. Para chegar à definição, as empresas geralmente fazem pesquisas junto a seus clientes e internamente. Esses estudos mostram uma preferência para vozes femininas, tidas como mais amigáveis e confiáveis. Foi o caso do Bradesco, também, com revelou a diretora executiva do banco.

"A grande maioria (dos assistentes virtuais) tem nomes femininos. No caso da Bia isso foi uma coincidência, mas muitos estudos validam que a voz feminina sempre foi uma tendência em função da modulação, dos agudos", diz. "É uma tendência mercadológica".

Alem da "tendência" revelada por pesquisas, há um fator que carrega as características e valores machistas da sociedade: vozes femininas são relacionadas a serviço.

Em seu livro "Wired for Speech: How Voice Activates and Advances the Human-Computer Relationship" ("Conectado pelo discurso: como a voz ativa e avança a relação humano-computador", em tradução livre), Clifford Nass, professor de comunicação da Universidade Stanford, explica que a voz sintética feminina é percebida como capaz de ajudar a resolver problemas. A voz masculina, por outro lado, tem um peso diferente: representa uma voz de comando, de autoridade, que fornece respostas.

Não é à toa que as raras vozes masculinas de IA estão associadas a campos complexos de conhecimento, em que são percebidas como autoridades no assunto. É o caso do Watson, IA da IBM. Plataformas como Bia ou Alexa, por outro lado, resolvem tarefas domésticas simples, como acender a luz ou colocar uma música para tocar.