Nos dias atuais e na era da informação, se torna cada vez mais fácil ter acesso a um bom conteúdo para estudar e se aperfeiçoar. Isso possibilitou que nós, desenvolvedores, tenhamos uma grande quantidade de tecnologias à nossa disposição para solucionar os problemas corriqueiros de nosso dia a dia. Este texto tem como objetivo comparar duas excelentes tecnologias que empoderam milhões de desenvolvedores ao redor do mundo. Durante este post, irei abordar diversos pontos que considerei importantes para a escolha de uma stack e espero que talvez, encurte a sua jornada.
Continue lendo “NodeJS vs Go”Autenticação
A Autenticação em sistemas computacionais consiste em confirmar a autenticidade de uma pessoa dentro de um determinado contexto e está relacionado diretamente à segurança do sistema verificando a permissão e os limites de acesso do usuário.
Há diversas formas de autenticação dentro de um sistema como por exemplo: os Smart Cards conhecidos como tokens, a biometria e a mais difundida e aceita que é o uso de senha.
Continue lendo “Autenticação”Arquitetura Serverless: O que você precisa saber
Você já imaginou executar suas funções de backend sem possuir um servidor? A arquitetura serverless nos permite essa facilidade.
No entanto, como o nome da arquitetura sugere (serverless, do inglês, sem servidor), existe sim um servidor executando tais funções, ele somente não é gerenciado por você, mas pela plataforma cloud no modelo FaaS (Function as a Service) que você irá utilizar, como por exemplo Amazon Web Services (AWS), Microsoft Azure, Google Cloud, entre outras. Com isso, evita-se a configuração de servidores complexos e/ou ambientes isolados como os containers.
Continue lendo “Arquitetura Serverless: O que você precisa saber”Armazenamento de Imagens para Aplicativos Móveis
O Armazenamento de diversas imagens em aplicativos é uma dúvida constante, na questão de aplicativos móveis esta preocupação aumenta, pois é inevitável que a utilização de uma outra ferramenta não inclusa no próprio dispositivo deverá ser utilizada. Os métodos com que o desenvolvedor se depara para a utilização do armazenamento são dois a utilização de um campo do tipo BLOB(Binary Large Object – grande objeto binário) ou de um campo no banco de dados que referencia o caminho da imagem e armazenando ela em um servidor, sendo está podendo ser feita de diversas formas, as mais mencionadas são a utilização de um servidor para o armazenamento de imagens ou a utilização de um serviço que já faça este controle um exemplo seria o Firebase Cloud Storage.
Continue lendo “Armazenamento de Imagens para Aplicativos Móveis”Clusterização de dados K-Means na biblioteca scikit-learn
A clusterização de dados é uma técnica que visa fazer agrupamentos automáticos de dados, levando em consideração o grau de semelhança, tem por objetivo agrupar através de aprendizado não supervisionado casos de uma base em k grupos, também denominados clusters, a classificação de dados surgiu com a necessidade de separar os dados em determinados grupos com semelhanças de atributos.
Existem diferentes formas de realizar a clusterização de dados, o scikit-learn por exemplo, é uma biblioteca para a linguagem python que disponibiliza de vários algoritmos para clusterização de dados, um dos mais conhecidos é o algoritmo K-Means.
Continue lendo “Clusterização de dados K-Means na biblioteca scikit-learn”Google Speech-to-text API
Google Speech-To-Text é um entre os diversos serviços oferecidos pela Google Cloud e realiza a conversão de áudios para texto utilizando modelos de redes neurais e machine learning. A medida que o Speech-to-text é utilizado, evolui com velocidade e hoje, pouco tempo depois de passar do modelo BETA em abril de 2017, já possui suporte para o reconhecimento de mais de 120 idiomas.
Continue lendo “Google Speech-to-text API”Criação de chatbot com Watson Assistent
Chatbot, ou assistente pessoal, é um programa de inteligência artificial, que busca simular uma conversa entre dois humanos, e surgiu pela necessidade de as pessoas quererem interagir com os computadores utilizando a linguagem natural, sendo através da fala ou da escrita.
Continue lendo “Criação de chatbot com Watson Assistent”Utilização de NodeMCU em projetos IoT
Desde o princípio a tecnologia vem passando por crescente transformação. O que antes eram computadores gigantes que ocupavam salas inteiras apenas para fazer simples cálculos, se transformou em dispositivos indispensáveis para o dia-a-dia. São eles: celulares, notebooks, o computador de bordo do carro, a TV smart, o aspirador de pó inteligente, entre muitos outros. Esta grande massa de dispositivos geralmente está conectada à internet. Mas você já parou para pensar como isso funciona? Quais dispositivos podem ser conectados? Eu posso montar um projeto IoT? Aí está mais uma palavra que ouvimos muito hoje em dia. IoT significa Internet of Things (Internet das Coisas), que podemos entender como coisas conectadas na internet.
Continue lendo “Utilização de NodeMCU em projetos IoT”Frameworks ORM para bancos não relacionais?
Existem dois tipos de bancos de dados: relacional e não relacional. Os dois bancos podem ser utilizados de formas distintas com diferentes frameworks, podendo-se utilizar o tipo de banco de dados e seu respectivo framework variando entre situações.
O banco de dados relacional trabalhará de forma que tabelas possam se relacionar e formar uma rede de tabelas com dados utilizando frameworks ORM. O banco de dados não relacional em conjunto com o framework ODM deverá ser utilizado para casos com informações menos complexas que exigem todas as informações em um único documento possibilitando uma grande massa de dados.
Continue lendo “Frameworks ORM para bancos não relacionais?”Como funciona a autenticação com Facebook e com o Google
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.
Continue lendo “Como funciona a autenticação com Facebook e com o Google”O que é e como funciona o React e o Redux?
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.
Continue lendo “O que é e como funciona o React e o Redux?”6 Frameworks para aplicações distribuídas (Server side)
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 é 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
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.

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 é 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
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
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.
Links Relacionados
- https://www.youtube.com/watch?v=2zqzzTnfa0E&list=PLVc5bWuiFQ8GgKm5m0cZE6E02amJho94o&index=24
- https://pythonacademy.com.br/blog/desenvolvimento-web-com-python-e-django-introducao
- https://developer.mozilla.org/pt-BR/docs/Learn/Server-side/Express_Nodejs/Introdu%C3%A7%C3%A3o
- https://medium.com/joaorobertopb/o-que-%C3%A9-laravel-porque-us%C3%A1-lo-955c95d2453d
- https://docs.microsoft.com/pt-br/aspnet/core/?view=aspnetcore-3.0
Autor: Matheus Maciel
APIs para trabalhar com interfaces de voz
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)

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

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

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

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

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
https://developer.apple.com/siri/
https://docs.microsoft.com/pt-br/cortana/skills/
https://conversation-demo.ng.bluemix.net/
Utilização de Redes Neurais em Sistemas de Recomendação
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).

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.
VALIN, Allan. Inteligência Artificial: reconhecimento de padrões. 2009. Disponível em: <https://www.tecmundo.com.br/seguranca/3014-inteligencia-artificial-reconhecimento-de-padroes.htm>. Acesso em: 15 nov. 2019.
Material Design – O que é e para que serve esse sistema Google
Material Design nasceu da coleta de informações e conhecimentos que se transformaram em diretrizes para aprimorar a relação homem-máquina, isso tornou-se em um sistema de desenvolvimento para interface do usuário, definido por um conjunto de propriedades que qualquer objeto dentro do sistema deve aderir.
É chamado Material, pois a ideia é trazer um material sólido para a interface virtual, todos os objetos têm uma altura definida, essa altura ajuda na interação com o usuário dando dicas visuais e também é responsável pelas sombras geradas, assim dando um efeito mais natural aos olhos.
As diretrizes do material design não só criam uma experiência prazerosa visualmente, mas também proveem consistência através dos dispositivos e aplicações e dicas do que virá a acontecer na tela.
Pense como um Engine de um jogo, onde toda a física, texturas, iluminação, animações são delimitadas pelas propriedades da Engine. O mesmo vale para o Material Design. Existe um ambiente 3D onde todos os elementos funcionam de formas restringidas pelas propriedades e diretrizes definidas pela Google.
No Material Design existem as propriedades físicas, propriedades de transformação e propriedades de movimento, estas propriedades são combinadas para temos componentes com um comportamento parecido com papel que pode mudar dinamicamente dependendo do seu uso.
Limitações:
Existem algumas limitações impostas pela Google que devem ser respeitadas:
- Materiais são sólidos e não podem atravessar um ao outro
- Materiais não podem ser curvados ou dobrados
- Todos os materiais tem a mesma espessura, definida pelo Google como 1DP (medida utilizada no desenvolvimento Android, que diferente do pixel, vai apresentar o mesmo resultado em diferentes resoluções).
Sombra:
A Sombra é uma das maneiras mais rápidas de identificarmos onde um objeto se localiza num espaço 3D, ou seja, a distância relativa entre eles. A sombra também nos ajuda a identificar movimento, que como estamos em um ambiente 3D pode ser relacionada a altura do material.
Movimentos:
No Material Design movimentos nos trazem um senso de objetivo. Objetos podem ser movidos livremente, e especialmente em relação a altura como mencionado acima. Essa altura é bastante utilizada como uma dica visual para indicar o local de interação do usuário. Isso é implementado usando “Dynamic Elevation Offset“, que é a posição de destino do objeto relativo a posição de repouso dele mesmo.
Por exemplo todos os componentes que sobem num clique, tem a mesma mudança de elevação relativos aos suas posições de repouso. O objetivo é que todos os movimentos do mesmo tipo possam ser agrupados, gerando consistência.
Animações:
O Google identificou que mudanças abruptas de velocidade ou direção são brutas e causam distrações indesejadas. Com isso muitas das animações contam com um processo de aceleração, e para se tornar mais próxima ao mundo real se faz uso de aceleração assimétrica.
Aceleração assimétrica pode indicar o ‘peso’ de um objeto. Objetos menores ou mais leves podem se movimentar mais rápido porque eles precisam de menos “força”, e objetos mais pesados podem demorar um pouco para acelerar porque precisam de mais “forca”.
A transição entre dois estados visuais deve ser clara, suave e de pouco esforço. Uma transição bem feita indica ao usuário onde ele deve focar a sua atenção. O Google chama isso de “Visual Continuity”, tem as seguintes diretrizes para ser consideradas:
- Onde o usuário deve focar, quais elementos e movimentos apoiam esse objetivo.
- Transições devem estar conectadas visualmente, através de elementos persistentes e cor.
- Usar os movimentos com precisão, isso traz clareza e suavidade pra transição.
Quando fazendo uma transição o Material Design considera a ordem o timing dos elementos, isso transmite qual conteúdo é mais importante, criando um caminho para o olho do usuário seguir, o Google chama isso de ” Hierarchical Timing” e deve ser sempre usado para direcionar a atenção do usuário e não deixar todas as transações ocorrerem ao mesmo tempo sem indicativos do que é mais importante.
Quando as transações de elementos são coordenadas, isso cria uma facilidade para o usuário entender o aplicativo, os destinos dos elementos na transação devem fazer sentido e ser o mais ordenados possível, isso é chamado de “Consistent Choreography”. Para obter esse resultado é indicado evitar movimentos conflitosos ou caminhos sobrepostos, a altura em que os objetos de movimentam e porquê fazem isso e indicam até visualizar se o traçando o caminho de todos os objetos movimentados obtemos uma imagem limpa e organizada.
Material Design imita a realidade, traz um sistema de design simples para um ambiente digital 3D com parâmetros e diretrizes bem definidos. Intuitivamente transmite como uma interface deveria funcionar se fosse feita de papel digital. Essa intuição auxilia no rápido entendimento e reconhecimento da interface, com o menor esforço do usuário.
Para saber mais sobre o Material Design e começar a utilizado segue o site oficial, que conta com uma vasta documentação e representações visuais para melhor entender alguns destes conceitos: https://material.io/
Também interessante ver dos próprios criadores alguns comentários da criação e desenvolvimento, segue vídeo de apresentação do Google sobre o tema: https://www.youtube.com/watch?v=rrT6v5sOwJg
Autor: Mauricio Calgaro
