Com tantos sites e aplicações disponíveis no mundo digital hoje, muitas vezes, para utilizar os serviços e/ou acessar seus conteúdos, é necessário possuir um cadastro. Imagine a quantidade de senhas a serem gerenciadas para cada site e aplicação, se cada vez que queira acessar algo novo, ter que criar um novo cadastro? Ou criar e gerenciar novas senhas? Até porque esse numero elevado de senhas, desgasta o usuário em questão de criatividade, e muitos acabam utilizando senhas fracas, e ou também utilizando a mesma senha para mais de uma aplicação.
Hoje,
muitas dessas aplicações, dispõe da opção de realizar o login por uma conta Google
ou também uma conta de Facebook. Tanto o Google quanto o Facebook, utilizam de
um protocolo de autorização chamado OAuth, para liberar acesso limitado aos
dados do usuário e ao acesso a suas APIS.
Mas como o OAuth funciona?
O QUE É O OAUTH?
Primeiramente, vamos entender o que o OAuth é realmente. Ele é um protocolo de autorização para APIS WEB, e tem por objetivo permitir que aplicações Client, acessem recursos protegidos, em nome de um usuário, e sem expor suas credenciais. Ele fornece um fluxo de autorização para aplicações web e desktop e para dispositivos móveis.
Em um exemplo simples, em um site que permita Login com o Google, o Web Service dessa aplicação, solicita que o usuário, dê permissão para ler seu perfil do Google, para que o Web Service, possa acessar e copiar informações desse perfil, afim de facilitar a vida do usuário, que por sua vez não precisará informar alguns dados de cadastro, já que os mesmo foram reaproveitados do seu perfil do Google.
COMO ELE FUNCIONA?
De uma forma geral, o OAuth fornece aos clientes, um acesso seguro aos recursos do servidor, em nome do proprietário do recurso. Para isso, ele especifica um processo de autorização, que solicita ao proprietário, acesso de terceiros a seus recursos, sem compartilhar suas credenciais. Há também uma questão a se levantar, sobre segurança, pois com a utilização das contas do Google ou Facebook, ou demais, as questões de segurança são de responsabilidades dos mesmos.
Quando
o proprietário autoriza o acesso, o OAuth, retorna um Token de acesso, para que
o terceiro que solicitou, obtenha somente as informações e recursos liberados.
O
OAuth, define quatro principais papéis:
Proprietário
do Recurso: É o usuário que autoriza que uma aplicação
terceira, tenha acesso a sua conta. Esse acesso é limitado ao
“escopo” da autorização concedida, como por exemplo, o acesso
liberado as informações são somente para leitura, nesse caso, a aplicação terceira
só consegue buscar os dados, mas nunca modifica-los.
Cliente: É a
aplicação de terceiros, que deseja acessar a conta do usuário. Para isso, ela
deve ser autorizada pelo usuário, e essa autorização será validada pela API.
Servidor
de Recurso: Basicamente, o servidor de recurso, é aonde
ficam hospedadas as contas de usuário protegidas.
Servidor
de Autorização: Nesse servidor, é verificado a identidade do
usuário que está concedendo o acesso a sua conta, e de onde serão emitidos os Tokens
de acesso, caso a validação do usuário seja efetuada.
Fluxo do OAuth
Primeiramente a aplicação solicita ao
usuário, autorização para acessar os recursos do serviço em
que ele possui conta cadastrada.
Caso o usuário autorize, será enviado para o
provedor de serviços do usuário, Google, Facebook, ou outros, informando sua
identidade, ou seja, que aplicação está solicitando o acesso, a uri de
redirecionamento, para onde a aplicação será redirecionada caso haja a
autorização, o tipo de resposta esperada, geralmente é um código, e o nível de
acesso que a aplicação está solicitando. Veja um exemplo abaixo:
Em seguida a aplicação solicitará ao servidor
de autorização, um Token de acesso, utilizando sua própria identificação, ou
seja, a aplicação deve dizer quem ela é, e utilizando a concessão recebida do
usuário.
Na API, será verificado a identidade da
aplicação que solicita o acesso, e a concessão de acesso dada pelo usuário, e
se validadas as duas informações, será emitido um Token de acesso para a
aplicação.
Agora com o Token em mãos, a aplicação
solicitará o recurso ao servidor de recursos.
Se o Token for validado pelo servidor de
recursos, o mesmo fornecerá o acesso para a aplicação.
Esse fluxo apresentado, pode variar dependendo do tipo de concessão de autorização que foi definido. Mas de maneira geral, o processo segue dessa forma. Importante salientar que o provedor dos dados, Google, Facebook, entre outros, deve confiar, conhecer o provedor OAuth, porque caso não seja de conhecimento dos provedores, o Token apresentado pelo OAuth para acessar as informações será rejeitado.
O consumo e desenvolvimento de serviços de cloud têm tornado cases de inovação cada vez mais presente no meio tecnológico. O Ibm Watson têm como objetivo salientar e prover serviços utilitários de cloud como API utilizando como viés, ferramentas cognitivas.
Bem como as demais plataformas que provém este tipo de serviço do mercado, o Ibm Watson promove facilidades de usabilidade quanto ao consumo de seus serviços.
ABORDAGENS DO IBM WATSON
Dentro das possibilidades de utilização do Whatson, podemos encontrar as seguintes ferramentas:
Natural language understanding (compreensão da linguagem natural):
Neste algoritmo disponibilizado, podemos extrair de um texto emoções, contextos, entidades e relações.
Personality Insights (Insights de personalidade) Identifica traços psicológicos de mídias tradicionais ou sociais que determinam decisões de compra, intenção e traços comportamentais; utilizado para melhorar as taxas de conversão.
Speech to Text(Fala em Texto) Utilizado para converter voz em texto.
Text to Speech (Texto para fala) Utilizado para converter texto em voz.
Visual Recognition (reconhecimento visual) extrai sentido de imagens. Aponta suas especificidades com base em uma fonte de cognição já ensinada. Salienta o sentido da imagem.
Watson Assistant (Assistente watson) ajuda na construção de uma interface de conversação. Utilizado geralmente em Chatboots.
Todas essas possibilidades de algoritmos e aplicabilidade estão disponíveis como serviço. Todas essas modalidades possuem categorias precificadas entregando mais funcionalidades conforme o plano de cobrança escolhido.
CONSUMINDO A API DO WATSON NA PRÁTICA
Como uma forma prática de disponibilizar os recursos da cloud da IBM, a empresa oferece duas maneiras de consumir seus algoritmos:
IBM Watson Studio: O IBM Watson Studio é uma maneira robusta e simples de desfrutar dos recursos da IBM Cloud. Com ele temos o poder de interagir com os recursos do Watson de uma maneira mais amigável sem contato com código. É possível também criar projetos e treinar modelos de dados para contemplar recursos de aprendizado de máquina.
Figura 1 – Exemplo de reconhecimento de imagem do IBM Watson
Consumo da API do Watson: Podemos também utilizar o Watson gerando uma chave de acesso para, juntamente com uma requisição HTTP, utilizar os recursos disponibilizados. Desta maneira, podemos ter um cenário de possibilidades mais abrangente e customizável. Para tal, neste artigo iremos utilizar uma biblioteca desenvolvida pela IBM na plataforma NodeJs.
UTILIZANDO API DO WATSON
Para fazer a utilização de qualquer recurso do watson programaticamente, como dito anteriormente, precisamos gerar uma chave de acesso do recurso que queremos utilizar. Vamos utilizar como exemplo o recurso de interpretação de linguagem natural. Essa chave pode ser gerada na página do recurso na ibm cloud.
Figura 2 – Exemplo de geração de credenciais
É possível fazer o download do arquivo de credenciais para respectiva utilização. Após esse processo, podemos criar um projeto node básico e instalar a biblioteca watson-developer-cloud. E com o seguinte exemplo de código, podemos realizar uma chamada simples para a API do Watson.
Figura 3 – Exemplo de chamada de API do Watson em NodeJs
Com esse simples exemplo, é possível extrair de um texto suas principais palavras. Esse e outros métodos de construção de um resultado cognitivo estão entre as principais funcionalidades do IBM Watson.
Bibliotecas são um conjunto de
funções, métodos e objetos que tem como objetivo facilitar e tornar mais rápido
o desenvolvimento de aplicações, não sendo necessário recriar as funções todas
as vezes que estas forem necessárias, é importante lembrar que uma biblioteca
normalmente é menos complexa, e mais flexível que um framework.
React
O React é “uma biblioteca JavaScript
declarativa, eficiente e flexível para a criação de interfaces de usuário (UI)”,
como foi definido pelos seus criadores, surgiu em 2011, no Facebook, no ano
seguinte, passou a integrar também a área de tecnologia do Instagram e de
várias outras ferramentas da empresa. Em 2013, a biblioteca tornou-se de código
aberto, isto fez com que a popularidade da biblioteca aumentasse.
A biblioteca foi pensada para
facilitar a criação da interface de usuário, ela só se preocupa com o que é
exibido, ela funciona como uma junção do HTML e do JavaScript, ela utiliza o
conceito de componentes para maximizar a reutilização de código. Exemplo:
O React renderiza o HTML e CSS, a partir do arquivo do React, exibindo para o usuário, inclusive sem recarregar a página, este processo é exibido no diagrama abaixo. A biblioteca possui um método de atualização da página que atualiza apenas os componentes que foram alterados fazendo com que o site possua uma eficiência muito grande.
Uma importante característica do React
é que ele é uma linguagem de programação declarativa, isto é, ele se preocupa
com o que o programador quer fazer enquanto que a imperativa quer saber como
atingir o objetivo desejado. Por exemplo:
Outra grande vantagem do React é que,
com os mesmos conhecimentos utilizados para criar sites, também é possível
criar aplicativos móveis nativos através do React Native.
Redux
Redux é uma biblioteca JavaScript
para gerenciar o estado da aplicação é similar e inspirada pela arquitetura
Flux do Facebook, ela pode ser utilizada com o React ou outras bibliotecas
JavaScript, foi criada por Dan Abramov e Andrew Clark em 2015.
O estado da aplicação é composto
pelos dados da API e dados da interface do usuário o Redux cria um local centralizado
para armazenar estes dados na aplicação.
A biblioteca é indica quando a aplicação possuir diversos componentes que possuem seus próprios estados e atualizam os estados dos outros componentes, como podemos ver na imagem a baixo ao atualizar um componente, em um cenário sem Redux, as atualizações ficam confusas, já com a biblioteca todo estado é gerenciado pelo Redux ficando muito mais simples.
O Redux possui três princípios:
O estado do aplicativo é armazenado em um JavaScript.
O estado somente pode ser lido, mas podemos alterá-lo utilizando um
objeto, que descreve a mudança, chamado Action.
Alterações são realizadas por função chamadas de Reducers.
Possuímos três partes na biblioteca,
as actions, o store e os reducers.
Actions
Actions são eventos, é o único jeito
de enviar dados da sua aplicação para o Store do Redux, estas são objetos e
devem possuir uma propriedade de tipo, que indica o tipo de ação que está sendo
executado e um payload que contém os dados que serão utilizados na action. Para
enviar uma action é utilizado o método store.dispatch().
Reducers
O Reducers recebe o estado atual da aplicação e Action e retorna um novo estado ou o mesmo.
Store
Armazena o estado da aplicação, existe somente um objeto do tipo store em uma aplicação Redux. Você pode acessar o estado armazenado, atualizar e registrar ou desregistrar listeners através de métodos de suporte.
Com o aumento da utilização de APIs
para desenvolvimento web as bibliotecas se tornaram uma fermenta muito útil e poupam
tempo, o React vem para atender esta demanda de forma simples e eficiente. O
Redux vem como um complemento ao React cuidando da parte do armazenamento da aplicação.
Frameworks
são modelos que implementam ferramentas, funções e padrões em um
projeto de software, que podem abranger projetos web, mobile e desktop,
tanto referente ao front-end quanto o back-end, para as mais variadas aplicabilidades do mercado. Para a definição de um framework em um projeto, é necessário principalmente a boa definição do objetivo do software e as utilidades e facilidades que o framework pode-lhe prover durante todo o ciclo de vida do produto.
Frameworks Back-end
Com
o objetivo de auxiliar a definição de um framework na criação de um
projeto de software, abaixo será listado alguns dos mais reconhecidos
Frameworks do mercado para o desenvolvimento Back-end, para as mais variadas linguagens.
Django
Django
Django é um framework open source baseado na linguagem python que tem um intuito de criar rapidamente aplicações web altamente escaláveis com o máximo de segurança possível, provendo uma arquitetura semelhante ao mvc, o mtv(model-template-view), hoje ele é um dos frameworks mais populares em desenvolvimento phyton junto com o Flask.
Spring Framework
Spring
O Spring é um framework da linguagem Java desenvolvido inicialmente para abstrair a usabilidade do kit de desenvolvimento JEE(Java-enterprise-Edition), focado principalmente na abstração da criação de objetos, conexões(como banco de dados) ou arquivos de sistema, proporcionando um melhor gerenciamento dessas questão deixando o foco do desenvolvedor para o desenvolvimento da regra de negócio.
Ruby on Rails
Rails
Ruby on Rails é um framework Open Source para linguagem Ruby, foi um dos pioneiros no ambiente de frameworks web mudando os padrões do desenvolvimento web e inflamando da participação da comunidade, focado para desenvolver sistemas do zero ajudando principalmente na parte de configuração e na criação de interfaces como CRUD.
ASP .Net Core
Asp .Net core
Asp .net core é o framework da Microsoft que está integrada á plataforma open source .net core, que traz versatilidade e agilidade para o desenvolvimento e implementação por herdar a estrutura de multiplataforma do .net core, aprimorando ainda mais essa característica por trazer opções como gerar o código binário para outro sistema, por exemplo, gerar o código binário para um sistema Linux a partir de um sistema Windows com a mesma facilidade e eficácia se estivesse gerando para o mesmo sistema Windows.
Express Js
Express
Express é um framework para
o ambiente nodeJs, com o foco de facilitar tratamento de requisições e gerenciamento
de rotas, o framework base do Express é bastante minimalista e simples porem é possível
adquirir pacotes de middlewares (Tratativas de requisição) de terceiros para as
mais variadas funcionalidades.
Laravel Framework
Laravel
Laravel é um framework de desenvolvimento rápido para PHP, livre e de código aberto. Cujo o principal objetivo é permitir que você trabalhe de forma estruturada e rápida facilitando o gerenciamento de rotas e criação de templates, porem como outros frameworks ele não é considerado muito flexível.
Conclusão
Todo framework tem suas
qualidades e possíveis defeitos porem para ver o valor e usabilidade de um
framework todo o ambiente e a situação atual deve ser analisada, mas como
pontos gerais o benefício de um framework e a simplificação na codificação e uma
curva possivelmente menor de aprendizado, contra os defeitos de depender do
framework de uma maneira geral e se o framework não for o ideal para sua
aplicação, ela poderá perder um desempenho considerável em seu funcionalidade.
O recurso mais atraente das
interfaces de conversação é a facilidade em que o usuário possui ao utilizar
computadores, smartphones, smartv entre outras inúmeras tecnologias onde a
Inteligência Artificial de conversação pode ser implementada. Para estas
interfaces deverão ser criados modos de interação de fácil operação, já que por
meio do recurso de fala o usuário poderá ter maior liberdade para execução de
outras tarefas que exijam a manipulação de entradas de dados de forma
convencional e ainda, com o uso de sistemas de síntese de fala o usuário poderá
receber informações de forma direta e objetiva.
Uma interface de API de voz
oferece o privilégio de interagir com as máquinas em termos humanos. Pode- se
dizer que é uma mudança de paradigma das comunicações anteriores. Ela permite
que o usuário diga ao software o que fazer, assim, trazendo uma maior inclusão
para pessoas com deficiência sendo elas visuais, locomotoras, dentre outras e
até mesmo para quem busca uma maior automação dos seus aparelhos.
A área de IA com interface de
conversação tem estado em constante alta, nas últimas cinco décadas, sendo
considerada uma tecnologia auxiliar de importante avanço com uma melhor
comunicação Homem-Máquina. Entretanto, anteriormente não era vista como uma
forma confiável de comunicação. Isto porque a capacidade de processamento
existente não era suficiente para fazer reconhecimento de fala em tempo real.
As APIS com interface para comando de
voz
Com o grande avanço da tecnologia de IA de conversação, pode-se citar
algumas APIs principais.
Alexa Voice Service (AVS)
Dispositivos com a Alexa
O Alexa é o serviço de voz criado
pela Amazon em 2014 com base em nuvem que se conecta com o Amazon Echo, uma
nova categoria de dispositivo da varejista online que foi projetado para se
adequar a comandos da sua voz. O Alexa Voice Service (AVS) é o conjunto de
serviços da Amazon construído em torno de seu assistente de IA controlado por
voz para uso doméstico e outros ambientes. O AVS foi introduzido pela primeira
vez com o Echo, o alto-falante inteligente da empresa, que permite a interação
por voz com vários sistemas no ambiente e online. O Alexa está disponível para
um número cada vez maior de outros dispositivos, incluindo smartphones, tablets
e controles remotos.
Ele fornece um conjunto de
recursos internos, chamados de habilidades, sendo elas, tocar músicas de vários
provedores, responder perguntas, fornece previsões do tempo e consultar a
Wikipedia. O Hurricane Center, por exemplo, é uma habilidade do Alexa que
fornece informações constantemente atualizadas sobre sistemas de tempestades,
com base em dados de agências governamentais. Existe também Virtual Librarian é
essencialmente um mecanismo de recomendação que sugere livros, com base em indicações
de prêmios, listas de best-sellers e análises de usuários. O Alexa Skills Kit ,
um kit de desenvolvimento de software ( SDK ), é disponibilizado gratuitamente
para desenvolvedores e as habilidades estão disponíveis para download
instantâneo na Amazon.com
Sendo totalmente integrado ao
ambiente de comércio eletrônico da Amazon, o que significa que torna as compras
rápidas e simples. O sistema pode operar como um hub de automação residencial,
permitindo ao usuário controlar sistemas de aquecimento e iluminação, por
exemplo. O Alexa também se conecta a serviços de mídia de streaming on-line e
suporta If This Then That ( IFTTT ).
O sistema de inteligência
artificial está disponível no Brasil a partir desse ano de 2019, onde possui 3
tipos de caixas de som com os recursos da Alexa.
Cloud Speech-to-Text
Cloud Speech-to-Text
O Cloud Speech-to-Text permite a
fácil integração das tecnologias de reconhecimento de fala do Google nos
aplicativos do desenvolvedor. Com ele os desenvolvedores convertem áudio em
texto ao aplicar modelos de rede neural avançados em uma API fácil de usar. A
API reconhece 120 idiomas e variantes para oferecer suporte à sua base de
usuários global. Ele permite ativar o comando e o controle de voz, transcrever
áudio de call centers e muito mais. Com a tecnologia de machine learming do
Google essa API processa streaming em tempo real ou de áudios pré gravados, ou
seja, ela retorna o texto no momento em que ele é reconhecido. Sendo possível a
analise de áudios de curta ou longa duração
O Speech-to-Text tem três métodos
principais para realizar o reconhecimento de fala. Eles estão listados abaixo:
O reconhecimento síncrono (REST e
gRPC): envia dados de áudio para a API Speech-to-Text, executa o reconhecimento
nesses dados e retorna os resultados depois que todo o áudio foi processado. As
solicitações de reconhecimento síncrono são limitadas a dados de áudio de até
um minuto de duração.
O reconhecimento assíncrono (REST
e gRPC): envia dados de áudio para a API Speech-to-Text e inicia uma operação
de longa duração. Usando essa operação, é possível pesquisar periodicamente
resultados de reconhecimento. As solicitações assíncronas para dados de áudio
de qualquer duração de até 480 minutos.
O reconhecimento de streaming
(somente gRPC): realiza reconhecimento em dados de áudio fornecidos em um
stream gRPC bidirecional. As solicitações de streaming são projetadas para fins
de reconhecimento em tempo real, como captura de áudio ao vivo de um microfone.
O reconhecimento em streaming oferece resultados provisórios enquanto o áudio
está sendo capturado, permitindo que o resultado apareça, por exemplo, enquanto
um usuário ainda está falando.
Siri
Logo Siri
A Siri é um aplicativo
inteligente que auxilia o usuário a realizar tarefas em um aparelho por meio do
recurso de voz. Trata-se de um aplicativo no estilo assistente pessoal
utilizando processamento de linguagem natural para responder perguntas,
executar tarefas e outras atividades. Por possuir uma tecnologia mais refinada,
a Siri não necessita que o usuário diga palavras predeterminadas ou comandos
específicos, já que a assistente consegue compreender frases de forma precisa.
Fundada por Dag Kittlaus, Cheyer
Adam, Tom Gruber e Norman Winarsky, a Siri teve seus primeiros testes
realizados em 2007, foi adquirida pela Apple em abril de 2010, porém, apenas
começou a funcionar em 2011. A Siri
agora conta com o aplicativo de atalhos embutido no IOS 13. A visualização
aprimorada da galeria permite fornecer atalhos pré configurados, esses atalhos
também podem ser combinados com ações de outros aplicativos.
Cortana
Inicialização Cortana
A Cortana é um assistente pessoal
digital que promete auxiliar os usuários de um sistema computacional a realizar
diversas atividades. Não se pode visualizar a Cortana como um simples
assistente que permite a realização de atividades através do comando de voz,
apesar de essa parecer ser sua principal finalidade. Usado corretamente, esse
assistente pode ajudar seu usuário a se manter sempre bem informado,
permitindo-o realizar diversas atividades através de dispositivos e plataformas
distintas.
Muito além do que serviços de
lembrete, ou até mesmo uma interface interativa de pesquisa, a Cortana fornece
uma arquitetura que permite facilmente a incorporação de outras atividades ou
serviços, melhorando assim sua experiência. Trata-se de um recurso capaz de
aprender com o usuário para melhor servi-lo.
Ela permite que o usuário
interaja com o computador por qualquer uma de suas interfaces. Caberá ao
desenvolvedor, dependendo do contexto, determinar qual ação será desencadeada,
ou seja, o usuário pode interagir via texto ou voz e o desenvolvedor decidirá
como irá tratar cada uma das interfaces de entrada. Além de prático e fácil de
utilizar, a Cortana é compatível com qualquer versão do Windows 10 ou superior,
além do Android.
Para o desenvolvedor, é possível
a integração das funcionalidades da Cortana às suas aplicações, podendo essa
interação ocorrer através de solicitações explícitas ou até mesmo com base no
contexto do usuário (análise de seu comportamento).
Ao desenvolvedor, a Cortana
oferece também suporte a uma série de ações pré-determinadas, sendo necessário
somente fornecer à API uma ligação capaz de indicar como sua aplicação deve
responder/completar a ação. O desenvolvedor pode, entretanto, a qualquer momento
personalizar uma ação pré-definida (se julgar necessário), buscando assim
atender às necessidades de sua aplicação.
Watson Text-to-Speech e Speech To Text
Watson
O Watson possui alguns serviços para integrar texto e voz
como o Text to Speech e o Speech to Text.
Onde o Text to Speech transforma
um texto em voz, o Speech to Text transforma voz em texto. Esses
serviços são basicamente simples e diretos de utilizar e não necessitando de
nenhum treinamento adicional. Para a utilização basta instanciá-los no Bluemix
(plataforma em nuvem desenvolvida pela IBM) e escolher o idioma. No caso
do Text to Speech, dependendo do idioma, também é
possível escolher a voz do interlocutor (se masculino ou feminino). Está disponível em 27 vozes (13 neurais e
14 padrão) em 7 idiomas. As vozes selecionadas agora oferecem recursos de
Síntese expressiva e transformação de voz. O uso geral desses serviços conta
com um vocabulário baseado no diálogo cotidiano. Para alguns tipos de
aplicação, esse vocabulário pode não ser suficiente e requerer refinamentos que
o ajustem ao domínio da aplicação. Nesse caso, é possível ajustar o modelo de
acordo com os termos e pronúncias utilizados naquele domínio.
Com isso pode se verificar a
importância que as APIs vem possuindo nos últimos anos, onde podemos ver essa
inteligência tomando amplamente destaque no mercado. Com este artigo foi
possível identificar algumas das principais e mais desenvolvidas APIs de Voz,
mais utilizadas em equipamentos do dia a dias como smartphones e smartvs.
O reconhecimento de voz contínuo
é o mais complexo e difícil de ser implementado, pois deve ser capaz de lidar
com todas as características e vícios de linguagem, como regionalidade e gírias
tão utilizadas frequentemente, de forma natural. Vale ressaltar que as APIs
citadas acima trabalham de forma online, sendo assim, para trabalhos futuros
estarão direcionadas as pesquisas para APIs que utilizam o reconhecimento de
voz de forma offline, para assim, trazer uma maior automação dos equipamentos
mesmo desprovidos de internet no momento.
Autora: Laís
Fochezatto Sabedot
Referências
Y. Dong and L.
Deng, Automatic Speech Recognition. London: Springer-Verlag, 2015.
V. F. S.
Alencar. 2005. Atributos e Domínios de Interpolação Eficientes em
Reconhecimento de Voz Distribuído. Master’s thesis. Pontifícia Universidade
Católica do Rio de Janeiro, Rio de Janeiro, Brasil.l
Gigantescas
ondas de informações, dos mais variados tipos são lançadas diariamente na
internet – o tal chamado “Fenômeno BIG DATA”.
E este volume de dados cresce em tal proporção que, sistemas de busca
convencionais não estão mais sendo capazes de gerir e varrer tantas
informações, prejudicando a qualidade com que os dados são apresentados aos
usuários.
Em busca de solucionar – ou pelo menos amenizar – este problema, portais de venda e de conteúdo têm desprendido esforços cada vez maiores para tornar mais assertiva suas campanhas de maketing, através dos chamados “Sistemas de Recomendação (SR)”. Mas para entender como funcionam estes sistemas, é necessário conhecer sobre um assunto em alta na atualidade – A Inteligência Artifical (IA).
Inteligência Artificial: O passo humano nas máquinas
Segundo
Ribeiro (2010, p.8), “a inteligência artificial é uma ciência multidisciplinar
que busca desenvolver e aplicar técnicas computacionais que simulem o
comportamento humano em atividades específicas”. De acordo com Lima, Pinheiro e
Santos (2014), os primeiros estudos sobre inteligência artificial surgiram na
década de 1940, marcada pela Segunda Guerra Mundial, onde houve a necessidade
de desenvolver métodos tecnológicos voltados para análise balística, quebra de
códigos e cálculos para projetos de arma nucleares.
A IA possibilita que máquinas aprendam com experiências, se ajustem a entradas de dados novas e executem tarefas similar a um ser humano. Tudo isso depende do deep learning e do processamento de linguagem natural, tecnologias das quais permitem que os computadores sejam treinados e possam reconhecer padrões nos dados apresentados a eles.
Reconhecimento de Padrões
A IA
faz uso do reconhecimento de padrões para analisar e classificar dados,
agrupando-os por similaridade, podendo ser identificadas preliminarmente ou
dedutivamente. O reconhecimento de padrões é uma tarefa trivial ao ser humano,
mas que se torna custosa às máquinas, uma vez que ainda não se conseguiu
desenvolver um equipamento ou sistema com capacidade de reconhecimento à altura
do cérebro humano.
O trabalho de reconhecer padrões é que permite identificar em qual grupo (ou classe) um dado novo pertence. Este tipo de trabalho é que permite que sistemas de recomendação, muito utilizados pelos e-commerces, ofertem produtos que os usuários estejam planejando adquirir, sem ao menos terem acessado o site do portal de vendas.
Mas, e como são identificados estes padrões???
Para
identificar estes padrões dois tipos de métodos são mais utilizados hoje: o
supervisionado e o não-supervisionado.
Método Supervisionado: É dado à máquina um
conjunto de dados do qual já se sabe qual é a saída correta, e que deve ser
semelhante ao grupo, percebendo a idéia de que saída e entrada possuem uma
relação. É como se existisse um “professor” que ensinasse qual o tipo de
comportamento que deveria ser exibido em cada situação.
Método Não-Supervisionado: Esse método, ao
contrário do supervisionado, não possui uma rotulação prévia (não existe um
“professor”). Conforme os dados forem sendo apresentados, a máquina precisa
descobrir sozinha relações, padrões e regularidades e codificá-las nas saídas,
criando grupos (processo chamado de clusterização).
Exemplo de Clusterização
E-business têm se valido destas ferramentas para desenvolver sistemas que conseguem identificar o perfil do usuário que está acessando seu portal de vendas e através de um cruzamento de dados com outros perfis de usuários similares, estão podendo direcionar sua força de marketing de forma mais assertiva. É o caso dos Sistemas de Recomendação.
O que é um Sistema de Recomendação (SR)?
Sistemas
de Recomendação são, basicamente, um conjunto de algoritmos que utilizam
técnicas de Aprendizagem de Máquinas (AM) e Recuperação de Informação (RI) para
gerar recomendações baseadas em filtragens. Estas filtragens podem ser do tipo:
colaborativa, baseada em conteúdo ou híbrida.
Filtragem
Colaborativa: É uma técnica para recomendação baseada no
conhecimento coletivo, ou seja, baseia-se nas preferências dos usuários acerca
dos itens que compõem um determinado catálogo do sistema;
Filtragem
Baseada em Conteúdo: Diferente da Filtragem Colaborativa, a
Filtragem Baseada em Conteúdo leva em consideração os atributos dos itens para identificar
similaridades entre o perfil do usuário e o perfil do item. Basicamente ela se
baseia em itens que o usuário já tenha demonstrado interesse no passado para
recomendar.
Filtragem
Híbrida: Esta uma “mistura” das filtragens anteriores, buscando combinar
as vantagens das duas e atenuar as desvantagens das mesmas.
Os SR’s têm então o objetivo de gerar recomendações válidas aos usuários de itens que possam os interessar, como por exemplo, sugestão de livros, filmes, amigos em redes sociais, etc. Para isso, um dos principais conceitos utilizados pelos SR’s é a similaridade, identificada pelo reconhecimento de padrões abordado anteriormente neste artigo. Para isso, os algoritmos mais utilizados são o KNN (K-Nearest Neighbors), Árvore de Decisão, Redes Bayesianas e Redes Neurais. Neste artigo, nossa ênfase se dará em cima das Redes Neurais, explicadas a seguir.
RNA – Redes Neurais Artificiais
Uma RNA compreende um conjunto de elementos de
processamento conectados e organizados em camadas. Um dos modelos de RNAs é
disposto em camadas, onde as unidades são ordenadas e classificadas pela sua
topologia e a propagação natural da informação é da camada de entrada para a de
saída, sem realimentação para as unidades anteriores.
As entradas são processadas e transformadas por
uma função de ativação até que um determinado critério de parada seja atendido
(quantidade de ciclos (épocas) ou erro mínimo), obtendo os pesos sinápticos que
melhor se ajustem aos padrões de entrada. Nesse estágio, pode-se dizer que a
rede está treinada. Contudo, a rede neural pode apresentar ou não a capacidade
de generalização – permitir a classificação correta de padrões já conhecidos,
mas que não faziam parte do conjunto de treinamento.
As RNA’s podem ser utilizadas na recomendação de sistemas de Recomendação baseadas em modelos. As RNA’s podem combinar vários módulos de recomendações ou várias fontes de dados, podendo ser exemplificado como na construção de um sistema de recomendação para TV a partir de quatro fontes de dados diferentes: informações de comunidades, contexto de exibição de programas, perfil de usuários e metadados dos programas.
Concluindo…
Neste viés, as RNA’s estão apresentando vantagens superiores sobre as demais técnicas, principalmente pelo fato de trabalharem muito bem com grandes volumes de dados, reduzindo a dimensionalidade sem perder representatividade da informação original. Outra vantagem é conseguir trabalhar com dados dinâmicos (ou de curto prazo), se comparados à algoritmos clássicos e também por conseguir a interação entre usuário e conteúdo, representando os dados de forma não-linear, permitindo que a generalização não seja tão limitada quanto demais métodos (Fatoração de Matrizes, por exemplo).
Autor: Valmor Marchi
Referências
FERNANDES, Marcela Mayara Barbosa; SEVERINO, Áxel Douglas Santos; FERREIRA, Patrick Pierre Fernandes. SISTEMAS DE RECOMENDAÇÃO WEB UTILIZANDO A REDE NEURAL ARTIFICIAL DO TIPO PERCEPTRON. 2014. Disponível em: <http://www.fepeg2014.unimontes.br/sites/default/files/resumos/arquivo_pdf_anais/artigo_-_sistemas_de_recomendacao_utilizando_uma_rede_neural_artificial_perceptron_1.pdf>. Acesso em: 14 nov. 2019.
LIMA, I.; SANTOS, F.;
PINHEIRO, C. Inteligência Artificial.
Rio de Janeiro: Elsevier, 2014.
RIBEIRO, R. Uma Introdução à Inteligência
Computacional: Fundamentos, Ferramentas e Aplicações. Rio de Janeiro:
IST-Rio, 2010.
SANTANA,
Marlesson. Deep
Learning para Sistemas de Recomendação (Parte 1) — Introdução. 2018.
Disponível em: <https://medium.com/data-hackers/deep-learning-para-sistemas-de-recomenda%C3%A7%C3%A3o-parte-1-introdu%C3%A7%C3%A3o-b19a896c471e>.
Acesso em: 16 nov. 2019.
O presente artigo aborda uma breve introdução sobre o que é, e como funciona o Flutter Framework, com o objetivo de demonstrar essa ferramenta de desenvolvimento de aplicativos mobile que está sendo utilizada por alguns desenvolvedores na indústria de software atualmente. Ao longo do trabalho será apresentado a história, funcionalidades e também a arquitetura do Flutter Framework.
Os aplicativos móveis estão tornando-se cada vez mais
populares e presentes na vida das pessoas. O número de downloads desses
aplicativos tem apresentado forte crescimento e é notável o aumento do
interesse das pessoas por mobilidade. Isso está ligado principalmente à
constante evolução dos dispositivos móveis, que tem apresentado capacidade de
processamento e armazenamento cada vez maiores. Android e iOS predominam no
mercado de sistemas operacionais para smartphones, os dispositivos móveis mais
utilizados atualmente. A Tabela 1 demonstra que as vendas globais de
smartphones equipados com Android no primeiro trimestre de 2018 representaram a
imensa maioria, chegando a 85,9% do total, segundo dados da Gartner (2018). Os
outros 14,1% são de smartphones equipados com iOS. Todos os outros sistemas
operacionais somados registraram vendas pouco significativas.
Com a ascensão na venda de smartphones e a consolidação do
Android e iOS como sistemas operacionais predominantes, há uma necessidade cada
vez maior no desenvolvimento de aplicativos para atender a demanda das pessoas
nas mais diferentes áreas, devido a isso ferramentas de desenvolvimento de
software cada vez mais modernas estão sendo criadas e utilizadas pelos
programadores ao redor do mundo, como exemplo temos o presente tema desse
artigo o Flutter Framework.
FLUTTER FRAMEWORK
O Flutter2 é o SDK de
código aberto do Google que permite o desenvolvimento de aplicativos que
executem tanto no Android quanto no iOS a partir de uma única base de código.
Seu objetivo é permitir que os desenvolvedores criem aplicativos de alta
performance com uma experiência nativa em ambas as plataformas.
Seu fluxo de
desenvolvimento é orientado ao design e os widgets são os blocos básicos da
interface de usuário de um aplicativo Flutter. Assim, existem widgets para
definir elementos estruturais como botões, menus e etc. Elementos de estilo como
fontes, cores e formatos de texto. Aspectos de layouts como margens e espaçamentos,
além de widgets com design específico para a plataforma e iOS. Além disso, o
Flutter foi projetado para facilitar a criação de novos widgets e a
personalização dos existentes. Os widgets formam uma hierarquia baseada na
composição onde cada um herda propriedades de seu superior. A Figura 1
demonstra essa hierarquia.
Figura 1
– Hierarquia dos Widgets
Fonte:
https://flutter.io/technical-overview/
O que
torna o Flutter diferente da maioria das outras opções para criar aplicativos
móveis, é que ele não utiliza os widgets fornecidos com o dispositivo. Em vez
disso, utiliza o seu próprio mecanismo de renderização de alto desempenho para desenhar
widgets. A Figura 2 representa a arquitetura do Flutter, que é composta pela
engine, uma camada fina de código C/C++, e pelo framework, organizado em uma
série de camadas, cada uma construída sobre a anterior e onde está implementada
a maior parte de seu sistema (composição, gestos, animação, estrutura,
widgets). Essa implementação é feita em Dart3, uma linguagem de programação
moderna, concisa e fortemente tipada e orientada a objetos.
GARTNER. Worldwide Sales of Smartphones
Returned to Growth in First Quarter of 2018. Disponível em:
<https://www.gartner.com/en/newsroom/pressreleases/2018-05-29-gartner-says-worldwide-sales-of-smartphones-returned-to-growthin-first-quarter-of-2018>.