Neste tutorial apresentei usando Python Básico conceitos de como construir um sistema de recomendação por filtragem colaborativa.
Mutirão PyCursos:
Vídeo em: https://plus.google.com/u/0/events/c3hqbk20omt3r5uoq13gpk82i9g
O documento discute conceitos fundamentais de bases de dados, incluindo: (1) definições de bases de dados relacionais e seus usos; (2) a distinção entre dados e informação; (3) os processos de modelagem de dados, incluindo a criação de modelos conceituais e lógicos de dados. (4) O modelo relacional de dados é explicado, com ênfase nas tabelas, chaves primárias e estrangeiras.
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)Leinylson Fontinele
O documento discute árvores de pesquisa, apresentando seus principais conceitos e tipos. Aborda árvores binárias de busca, árvores balanceadas como AVL e rubro-negras, e explica operações básicas como rotação para manter a árvore balanceada.
Este documento apresenta os objetivos e conceitos básicos da disciplina de Análise e Projeto de Sistemas. Os principais pontos abordados são: introduzir os conceitos de análise e modelagem de sistemas e sua importância para projetos de software, apresentar parâmetros para escolha da técnica adequada para cada projeto, e capacitar os alunos a elaborar projetos detalhados de sistemas usando técnicas como UML.
Sql básico - Teoria e prática: Um grande resumoHelder Lopes
O documento fornece um resumo sobre SQL básico, abordando conceitos como: características de bancos de dados e tabelas, modelos lógicos e físicos, comandos DDL para criação e alteração de tabelas, restrições e relacionamentos.
I. O documento discute a importância de avaliar criticamente a informação coletada, fornecendo critérios para avaliar a autoria, conteúdo, objetividade e atualização de fontes. II. Ele destaca problemas com a confiabilidade da informação online e como considerar o tipo de endereço do site, autoria, especialização e atualização. III. Recomenda selecionar fontes de acesso aberto revisadas por pares e considerar fatores como citações e produção científica do autor.
Este documento discute os metadados, que são dados que descrevem outros dados. Os metadados fornecem informações sobre a origem, qualidade e utilidade de dados digitais. Padrões de metadados como Dublin Core ajudam a organizar e compartilhar metadados de forma consistente. O formato XML é útil para estruturar e armazenar metadados associados a documentos eletrônicos.
O documento descreve os principais tipos de sinapses nervosas e os mecanismos de ação dos neurotransmissores. Resumidamente: (1) Existem sinapses químicas e elétricas, sendo as químicas responsáveis pela comunicação entre neurônios; (2) Os neurotransmissores causam potenciais pós-sinápticos que somem-se para determinar a excitabilidade do neurônio; (3) A comunicação por segundo mensageiro permite amplificar e modular a resposta neuronal.
Este documento fornece instruções sobre como criar e manipular bancos de dados e tabelas no MySQL. Ele explica como criar tabelas, definir tipos de dados, chaves primárias e estrangeiras. Além disso, apresenta exemplos de comandos SQL como SELECT, INSERT, UPDATE e DELETE.
Slides utilizado na disciplina de Análise e Levantamento de Requisitos no curso Superior de Tecnologias em Sistemas para Internet no IF Goiano campus Morrinhos.
O documento descreve os principais comandos da linguagem SQL para consulta de dados em bancos de dados relacionais, incluindo: (1) SELECT para selecionar dados de tabelas; (2) WHERE para filtrar resultados com parâmetros; e (3) exemplos de queries com JOIN entre tabelas.
O documento apresenta conceitos básicos sobre bancos de dados, incluindo: 1) a definição de banco de dados, dados e informações; 2) o papel dos sistemas gerenciadores de bancos de dados (SGBD); 3) as vantagens dos SGBDs em relação a sistemas de arquivos. O documento também discute modelos de bancos de dados e linguagens utilizadas.
Diagrama Entidade Relacionamento - Bancos de Dados IDjonathas Cardoso
O documento apresenta os conceitos fundamentais de diagrama de entidade relacionamento, incluindo definição, entidades, atributos, relacionamentos e exemplos. Entidades representam objetos do mundo real sobre os quais se deseja manter informações, atributos são dados associados a cada ocorrência de uma entidade, e relacionamentos são associações entre entidades.
Ihc2016.2 aula 9 engenharia cognitiva e teoria da açãoTicianne Darin
1. A apresentação discute engenharia cognitiva e teoria da ação, explicando como entender os processos cognitivos humanos para desenvolver sistemas interativos mais fáceis de usar.
2. A teoria da ação descreve como as pessoas traduzem intenções em ações através de objetivos, golfo de execução e golfo de avaliação.
3. A engenharia cognitiva ajuda projetistas a identificar discrepâncias entre modelos mentais de usuários e sistemas para melhorar a usabilidade.
Este documento resume os princípios da Gestalt, uma teoria psicológica que estuda como os seres humanos percebem formas visuais. Explica os princípios da unidade, segregação, unificação, semelhança, proximidade, continuidade, clausura e pregnância, que descrevem como os elementos visuais são agrupados e percebidos.
O documento apresenta uma introdução sobre sistemas distribuídos, definindo-os como sistemas nos quais os componentes de hardware ou software se comunicam através de mensagens. Apresenta também as consequências da definição, como concorrência e inexistência de relógio global, e exemplos como a Internet e intranets. Por fim, descreve desafios na implementação de sistemas distribuídos, como heterogeneidade, segurança, escalabilidade e tratamento de falhas.
O documento descreve a evolução dos principais bancos de dados desde suas origens até a era moderna, incluindo Oracle, MySQL, Microsoft SQL Server e PostgreSQL. Ele fornece detalhes históricos sobre o desenvolvimento de cada um e como evoluíram ao longo do tempo com novas versões e funcionalidades.
Este documento discute vários modelos de ciclo de vida de software, incluindo cascata, prototipação, espiral, incremental, RAD e modelo em V. Cada modelo é explicado brevemente com suas vantagens e desvantagens. O documento fornece uma introdução geral aos principais modelos de ciclo de vida utilizados no desenvolvimento de software.
O documento discute conceitos fundamentais de endereçamento de memória em arquitetura de computadores, incluindo bytes, palavras, endereços físicos e virtuais. Também apresenta outros conceitos como taxas de transferência, RISC, CISC e cache. Por fim, fornece referências bibliográficas sobre o tema.
O documento apresenta uma introdução aos conceitos básicos de aprendizagem de máquina, incluindo classificação de dados, árvores de decisão e algoritmos. Aborda tópicos como processos de classificação, características de bons classificadores, métodos de classificação e algoritmos, conceitos de árvores de decisão e algoritmos para geração de árvores.
1) O documento descreve elementos da linguagem de modelagem UML, incluindo diagramas, notações e conceitos como classes, objetos, atributos e operações.
2) São apresentados os principais diagramas da UML como diagrama de classe, caso de uso, interação e implementação.
3) O documento explica conceitos-chave da UML como classes, objetos, atributos, operações, visibilidade, generalização e agregação.
O documento apresenta uma introdução aos algoritmos genéticos, descrevendo: (1) sua inspiração no processo de seleção natural de Darwin; (2) como "evoluem" soluções imitando a natureza; (3) suas aplicações em problemas de otimização.
O documento descreve o ResearcherID e como criar uma conta, fornecendo um identificador único para gerenciar publicações acadêmicas. O ResearcherID permite adicionar publicações, visualizar métricas de produção e citações, e identificar potenciais colaboradores. O documento instrui o leitor a criar uma conta gratuita no site e associá-la ao seu ORCID.
O documento discute os principais conceitos de modelagem de banco de dados usando o modelo entidade-relacionamento (ER), incluindo entidades, atributos, chaves primárias, relacionamentos e graus de relacionamento. Explica como as entidades são representadas por tabelas com colunas (atributos) e linhas (registros), e como as chaves primárias identificam unicamente cada registro.
Indexação e Resumos: teoria e prática - F.W. LancasterCleberson Moura
1. O livro discute teoria e prática de indexação e resumos, abordando tópicos como princípios, tipos de índices, qualidade, avaliação e aplicações em diferentes tipos de mídia.
2. São apresentados diversos métodos de indexação e redação de resumos utilizados em serviços de informação, além de discussões sobre automação e uso da internet.
3. O futuro da área é analisado, com ênfase na integração crescente entre indexação, recuperação de informação e gestão do conhe
O documento discute Redes Neurais Recorrentes (RNNs), que processam sequências de dados ao incluir memória em sua arquitetura recorrente. RNNs são úteis para aplicações que lidam com contexto temporal e ordem de eventos. Embora RNNs clássicas enfrentem desafios como gradientes explodindo/desaparecendo, arquiteturas mais avançadas como LSTMs e GRUs resolveram esses problemas.
O documento discute vários métodos de identificação de fármacos e matérias-primas, incluindo métodos clássicos baseados em reações químicas, análise organoléptica, e métodos instrumentais como cromatografia e espectroscopia. Vários parâmetros físico-químicos como ponto de fusão e índice de refração também podem ser usados para identificação. Independentemente do método, a identificação deve ser específica, confiável, de baixo custo e fácil de ser realizada
O documento discute as diferentes tipos de consultas de referência, incluindo:
1) Consultas administrativas e de orientação, sobre autor/título, de localização de fatos e material.
2) Consultas mutáveis, de pesquisa, residuais e irrespondíveis.
3) A análise de perguntas para categorização, avaliação do acervo e serviços.
O documento descreve o processo de normalização de dados, que envolve transformar tabelas não normalizadas em tabelas normalizadas através de três formas normais, eliminando redundâncias. Apresenta os conceitos de dependência funcional e as etapas de passagem à primeira, segunda e terceira forma normal, ilustrando com um exemplo de normalização de um relatório de alocação de projetos.
Este documento descreve como analisar seu próprio genoma usando tecnologias como Python. Apresenta os conceitos de sequenciamento de DNA, mapeamento, chamada de variantes e interpretação. Explica o fluxo de trabalho de um pipeline simples para analisar variantes em um genoma e fornece recursos para aprender mais sobre bioinformática.
Slides utilizado na disciplina de Análise e Levantamento de Requisitos no curso Superior de Tecnologias em Sistemas para Internet no IF Goiano campus Morrinhos.
O documento descreve os principais comandos da linguagem SQL para consulta de dados em bancos de dados relacionais, incluindo: (1) SELECT para selecionar dados de tabelas; (2) WHERE para filtrar resultados com parâmetros; e (3) exemplos de queries com JOIN entre tabelas.
O documento apresenta conceitos básicos sobre bancos de dados, incluindo: 1) a definição de banco de dados, dados e informações; 2) o papel dos sistemas gerenciadores de bancos de dados (SGBD); 3) as vantagens dos SGBDs em relação a sistemas de arquivos. O documento também discute modelos de bancos de dados e linguagens utilizadas.
Diagrama Entidade Relacionamento - Bancos de Dados IDjonathas Cardoso
O documento apresenta os conceitos fundamentais de diagrama de entidade relacionamento, incluindo definição, entidades, atributos, relacionamentos e exemplos. Entidades representam objetos do mundo real sobre os quais se deseja manter informações, atributos são dados associados a cada ocorrência de uma entidade, e relacionamentos são associações entre entidades.
Ihc2016.2 aula 9 engenharia cognitiva e teoria da açãoTicianne Darin
1. A apresentação discute engenharia cognitiva e teoria da ação, explicando como entender os processos cognitivos humanos para desenvolver sistemas interativos mais fáceis de usar.
2. A teoria da ação descreve como as pessoas traduzem intenções em ações através de objetivos, golfo de execução e golfo de avaliação.
3. A engenharia cognitiva ajuda projetistas a identificar discrepâncias entre modelos mentais de usuários e sistemas para melhorar a usabilidade.
Este documento resume os princípios da Gestalt, uma teoria psicológica que estuda como os seres humanos percebem formas visuais. Explica os princípios da unidade, segregação, unificação, semelhança, proximidade, continuidade, clausura e pregnância, que descrevem como os elementos visuais são agrupados e percebidos.
O documento apresenta uma introdução sobre sistemas distribuídos, definindo-os como sistemas nos quais os componentes de hardware ou software se comunicam através de mensagens. Apresenta também as consequências da definição, como concorrência e inexistência de relógio global, e exemplos como a Internet e intranets. Por fim, descreve desafios na implementação de sistemas distribuídos, como heterogeneidade, segurança, escalabilidade e tratamento de falhas.
O documento descreve a evolução dos principais bancos de dados desde suas origens até a era moderna, incluindo Oracle, MySQL, Microsoft SQL Server e PostgreSQL. Ele fornece detalhes históricos sobre o desenvolvimento de cada um e como evoluíram ao longo do tempo com novas versões e funcionalidades.
Este documento discute vários modelos de ciclo de vida de software, incluindo cascata, prototipação, espiral, incremental, RAD e modelo em V. Cada modelo é explicado brevemente com suas vantagens e desvantagens. O documento fornece uma introdução geral aos principais modelos de ciclo de vida utilizados no desenvolvimento de software.
O documento discute conceitos fundamentais de endereçamento de memória em arquitetura de computadores, incluindo bytes, palavras, endereços físicos e virtuais. Também apresenta outros conceitos como taxas de transferência, RISC, CISC e cache. Por fim, fornece referências bibliográficas sobre o tema.
O documento apresenta uma introdução aos conceitos básicos de aprendizagem de máquina, incluindo classificação de dados, árvores de decisão e algoritmos. Aborda tópicos como processos de classificação, características de bons classificadores, métodos de classificação e algoritmos, conceitos de árvores de decisão e algoritmos para geração de árvores.
1) O documento descreve elementos da linguagem de modelagem UML, incluindo diagramas, notações e conceitos como classes, objetos, atributos e operações.
2) São apresentados os principais diagramas da UML como diagrama de classe, caso de uso, interação e implementação.
3) O documento explica conceitos-chave da UML como classes, objetos, atributos, operações, visibilidade, generalização e agregação.
O documento apresenta uma introdução aos algoritmos genéticos, descrevendo: (1) sua inspiração no processo de seleção natural de Darwin; (2) como "evoluem" soluções imitando a natureza; (3) suas aplicações em problemas de otimização.
O documento descreve o ResearcherID e como criar uma conta, fornecendo um identificador único para gerenciar publicações acadêmicas. O ResearcherID permite adicionar publicações, visualizar métricas de produção e citações, e identificar potenciais colaboradores. O documento instrui o leitor a criar uma conta gratuita no site e associá-la ao seu ORCID.
O documento discute os principais conceitos de modelagem de banco de dados usando o modelo entidade-relacionamento (ER), incluindo entidades, atributos, chaves primárias, relacionamentos e graus de relacionamento. Explica como as entidades são representadas por tabelas com colunas (atributos) e linhas (registros), e como as chaves primárias identificam unicamente cada registro.
Indexação e Resumos: teoria e prática - F.W. LancasterCleberson Moura
1. O livro discute teoria e prática de indexação e resumos, abordando tópicos como princípios, tipos de índices, qualidade, avaliação e aplicações em diferentes tipos de mídia.
2. São apresentados diversos métodos de indexação e redação de resumos utilizados em serviços de informação, além de discussões sobre automação e uso da internet.
3. O futuro da área é analisado, com ênfase na integração crescente entre indexação, recuperação de informação e gestão do conhe
O documento discute Redes Neurais Recorrentes (RNNs), que processam sequências de dados ao incluir memória em sua arquitetura recorrente. RNNs são úteis para aplicações que lidam com contexto temporal e ordem de eventos. Embora RNNs clássicas enfrentem desafios como gradientes explodindo/desaparecendo, arquiteturas mais avançadas como LSTMs e GRUs resolveram esses problemas.
O documento discute vários métodos de identificação de fármacos e matérias-primas, incluindo métodos clássicos baseados em reações químicas, análise organoléptica, e métodos instrumentais como cromatografia e espectroscopia. Vários parâmetros físico-químicos como ponto de fusão e índice de refração também podem ser usados para identificação. Independentemente do método, a identificação deve ser específica, confiável, de baixo custo e fácil de ser realizada
O documento discute as diferentes tipos de consultas de referência, incluindo:
1) Consultas administrativas e de orientação, sobre autor/título, de localização de fatos e material.
2) Consultas mutáveis, de pesquisa, residuais e irrespondíveis.
3) A análise de perguntas para categorização, avaliação do acervo e serviços.
O documento descreve o processo de normalização de dados, que envolve transformar tabelas não normalizadas em tabelas normalizadas através de três formas normais, eliminando redundâncias. Apresenta os conceitos de dependência funcional e as etapas de passagem à primeira, segunda e terceira forma normal, ilustrando com um exemplo de normalização de um relatório de alocação de projetos.
Este documento descreve como analisar seu próprio genoma usando tecnologias como Python. Apresenta os conceitos de sequenciamento de DNA, mapeamento, chamada de variantes e interpretação. Explica o fluxo de trabalho de um pipeline simples para analisar variantes em um genoma e fornece recursos para aprender mais sobre bioinformática.
O documento descreve como usar Python para enviar tweets automaticamente. Ele lista alguns passos iniciais como seguir pessoas que falam sobre determinados assuntos e depois seguir todos os seus seguidores para ampliar a rede. Também fornece links para APIs do Twitter e exemplos de código Python para enviar tweets programáticamente.
Palestra "relâmpago" (15 min) mostrando alguns detalhes de construção de DSLs em Python: decorators, sobrecarga de operadores, __getattr__, utilizando como exemplo a biblioteca de expectations e matchers Should-DSL (http://github.com/hugobr/should-dsl)
Recommendations with hadoop streaming and pythonAndrew Look
This document discusses using Python and Hadoop Streaming to build a recommendation system based on user listening data from Last.fm. It describes:
1) The problem of music recommendations and using co-listening data from Last.fm.
2) An overview of the recommendation process which includes multiple MapReduce jobs to calculate artist similarities and generate recommendations.
3) Details and sample code for each step of the MapReduce jobs including preprocessing data, calculating artist popularity, aggregating user preferences, and computing pairwise artist similarities to output related artist recommendations.
[1] O documento discute o desenvolvimento de aplicações web usando o framework Django, incluindo sua história, características e padrão MVC.
[2] É apresentada uma introdução ao Django, explicando o que é o framework e como ele pode ser usado para construir aplicações web de forma rápida e eficiente.
[3] São descritas as etapas para criar uma primeira aplicação web simples usando Django, incluindo a instalação do framework, criação de um projeto e execução de um servidor de desenvolvimento.
Sistema de Recomendação de Produtos Utilizando Mineração de DadosCássio Alan Garcia
1. O documento descreve um sistema de recomendação de produtos utilizando mineração de dados que integra técnicas de clusterização e regras de associação para gerar recomendações personalizadas.
2. O sistema foi desenvolvido para indicar produtos a usuários com base em seu histórico de compras e características, comparando-os com outros usuários para prever seus interesses.
3. O artigo apresenta conceitos de sistemas de recomendação e mineração de dados, como clusterização e regras de associação, e
Pip - Instalando Pacotes facilmente para Pythonpugpe
Apresentação realizada no IX Encontro do Grupo de Usuários de Python de Pernambuco por Luciano Rodrigues na Unibratec - 27/11/2010 - I Toró de Palestras
1. O documento descreve como acessar e manipular bancos de dados MySQL usando Python.
2. Ele explica como instalar o módulo MySQLdb, conectar-se ao banco de dados, criar tabelas, inserir, ler, atualizar e excluir dados.
3. Também aborda operações como commits, rollbacks e tratamento de erros para garantir a consistência dos dados.
Este documento apresenta uma introdução à programação em Python e ao toolkit Tk. Ele discute os objetivos do curso, as características da linguagem Python, a importância da teoria e da prática, e como usar o interpretador Python de forma interativa.
O Tkinter é um conjunto de widgets (componentes de interface gráfica) para Interface Gráfica com o Usuário(GUI). Uma das vantagens desse módulo gráfico é que ele já vem junto com o Python.
Como Python pode ajudar na automação do seu laboratórioMarcel Caraciolo
O documento descreve como a linguagem Python pode ajudar a automatizar os processos de um laboratório de análises clínicas, incluindo a gestão de armazenamento e análise de grandes volumes de dados genômicos, o desenvolvimento de sistemas de gerenciamento laboratorial e notificações, e a infraestrutura de servidores e backups.
O documento descreve uma palestra sobre como usar Python para analisar dados públicos. O palestrante fala sobre seus antecedentes e experiência ensinando Python. Ele fornece vários exemplos de como usar Python para analisar dados públicos do governo brasileiro sobre a Copa do Mundo, educação e eleições americanas.
Item Based Collaborative Filtering Recommendation Algorithmsnextlib
The document summarizes research on item-based collaborative filtering recommendation algorithms. It analyzes techniques for computing item-item similarities and generating recommendations from the similarities. Experimental results show that item-based collaborative filtering provides better quality recommendations than user-based approaches, especially for sparse datasets. The regression-based prediction computation technique outperforms the weighted sum approach.
Este documento fornece uma introdução à linguagem de programação Python. Resume os principais pontos sobre o que é Python, por que usar Python, e compara Python com outras linguagens. O documento também fornece detalhes sobre recursos, produtividade, aplicações e comunidades de Python.
The document provides 8 lessons learned from deploying a content discovery solution at Orange in France.
Lesson 1 is to have a dedicated group of real users for testing. Lesson 2 is that avoiding bad recommendations is more important than getting perfect ones. Lesson 3 is that using multiple recommendation engines helps overcome filter bubbles. Lesson 4 is that collaborative filtering is biased towards popularity while users prefer novelty. Lesson 5 is that changing factors like language can impact recommendations. Lesson 6 addresses dealing with cold starts for users, content, and systems. Lesson 7 is that laziness often wins over more complex solutions. Lesson 8 emphasizes that privacy matters in how profiles and recommendations are handled.
This document discusses recommender systems and collaborative filtering. It defines recommender systems as tools that help users make decisions by recommending items based on their preferences or the preferences of similar users. It describes two main types of recommender systems: content-based systems, which recommend items similar to those a user liked in the past, and collaborative filtering systems, which recommend items liked by other users with similar tastes. The document uses the example of Amazon and MovieLens to illustrate how collaborative filtering works by finding relationships between users or items in a user-item rating matrix.
Steve Perry founded Collaborative Community Search, a commercial open source search tool available on Sourceforge. Jumper 2.0 improves search by leveraging collective intelligence through user tagging and rating of resources, allowing experts to apply knowledge and insights to better meet complex search needs. Users share information and link resources together to organize data based on common interests.
The document introduces user-centered design as a method for understanding users and involving them throughout the product development process. It discusses conducting research to understand users, such as interviews, questionnaires, contextual inquiry and developing personas. It then explains how to use the research findings to create mental models of how users think and design prototypes for testing designs with users in an iterative process.
OPAC 2.0 and beyond aims to improve online library catalogs by incorporating more modern web features. Second generation OPACs include relevance ranking, faceted browsing, spell checking, and social features. However, OPACs still lack serendipity and recommendations seen in commercial sites. Future library systems may provide unified search across different content silos and local indexing of web resources. The role of the traditional OPAC interface is uncertain as staff and user systems continue to decouple.
Remote Research Workshop, UX Week 2012 - Cyd HarrellCyd Harrell
The document discusses remote user research tools and techniques, focusing on both moderated and unmoderated remote studies. It provides examples of tools for remote moderated research like GoToMeeting as well as unmoderated automated tools like Usabilla. The presenters provide advice on best practices for remote user research including recruiting, study design, note taking, and overcoming challenges with remote methods.
The document discusses the evolution of recommender systems from 2001 to 2006 and design strategies for improving user experience. It notes that early systems focused on predicting items like movies or music a user may like, while newer social systems in 2006 helped users find information by facilitating social connections using tags and user-generated content. Key recommendations include making systems personally useful before providing recommendations, making participation and the process social, providing instant gratification, cultivating independent crowds, and balancing public and private sharing options.
The document summarizes research on detecting fake reviewer groups on consumer review sites. The researchers developed a method to discover groups of reviewers working collaboratively to write fake reviews to promote or demote products. The method uses frequent itemset mining to find candidate groups and behavioral models to detect abnormal behaviors between group members. It was shown to outperform other detection methods and a labeled dataset of fake reviewer groups was created for evaluation. The researchers provide an example of a detected fake reviewer group coordinating positive reviews for the same products.
This document provides guidance on establishing an online presence as a lawyer. It discusses ethics rules regarding communications about legal services and advises authentic engagement over spamming or deception. Key recommendations include listening to audiences, asking questions, responding promptly, demonstrating expertise through articles and links, and establishing a genuine voice. The document warns that all online actions are public and permanent, and encourages developing useful, unique content to meet information demands while avoiding stock images or identities.
You’re Not A Dog: How Lawyers Can Put Their Best Foot Forward OnlineRocket Matter, LLC
As famous New Yorker cartoon goes, “On the Internet, nobody knows you’re a dog.” But as a lawyer, “being a dog” may cost you your two most valuable assets, your reputation and your license.
Further, as the web continues to “go social”, web users will become better at identifying dogs. Let’s talk about how you can put your best foot forward online in an ethical, as well as, effective manner.
This slide deck is courtesy Gyi Tsakalakis, of AttorneySync.com. Gyi has been helping lawyers understand how to put the web to work for their practices since 2008. A former practicing attorney, Gyi is a law firm web strategist and owner at AttorneySync.
The hunt for the perfect interface in a googlified worldnabot
The document discusses interfaces for searching library databases and the importance of simplicity and usability. It notes that average users prefer simple search interfaces without needing to learn complex search syntax. However, advanced users desire more robust features like truncation and proximity searching. The ideal interface caters to both groups in an intuitive way without sacrificing functionality or requiring extensive training.
Beyond Task Based Testing: Interviews and PersonasJeff Wisniewski
The document discusses personas and how they can be used in conjunction with task-based testing to improve user experience design. It defines personas as hypothetical archetypes created to represent primary user groups. Personas are derived from user research like interviews and are given names and details to make them realistic representations. The benefits of personas include keeping the focus on users, supporting evidence-based decisions, providing focus for where to spend design efforts, and communicating design decisions effectively to stakeholders. While task-based testing provides valuable insights, personas allow raising the base level of a design before testing to improve the quality of tasks and make more representative samples. The document outlines how to create personas through research methods and how to use them to frame discussions and decisions.
This document discusses the fragmentation of knowledge and information across different formats, devices, licenses, and platforms. It notes the proliferation of eBooks, eJournals, digital content and issues around copyright. It also touches on the polarization of debates around these issues. The document provides recommendations for different types of libraries to address trends, pain points for users, and opportunities to focus on the user experience through experimentation and pilot programs. It emphasizes taking a balanced, critical thinking approach to an ongoing evolution in the field.
Duane Forrester is an expert in search engine optimization (SEO) who has worked at Microsoft and Bing Webmaster Tools. He speaks at conferences, runs online forums and blogs, and provides guidance on new webmaster tools. Forrester has over 12 years of experience in SEO and has helped optimize major brands like Disney, Gap, and Walmart. He also owns 150 domains that he actively optimizes and monetizes.
The document discusses evaluating online sources and provides examples of search techniques using Google and Bing to find information on topics like Martin Luther King Jr. and conversions between measurements. It also covers evaluating the credibility of websites and using subject specific search engines or limiting searches to particular domains or file types.
Computer-Assisted Consumer Profiles on Twitterolindgallet
**Update 7/24/2014**
Cleaned it up. Likely to be the final version unless I figure out image processing. That may be an entirely different presentation though.
**
Presentation given for BarcampNOLA7.
Touched on a variety of topics like natural language processing, sentiment analysis, and ethics. Chose the context of Twitter since I'm more familiar with text processing than image processing. Twitter has some unique problems that make it not straightforward to take the data that is covered here.
Overall, the presentation went longer than expected (The time frame was 15-30 min). Didn't have much time for discussion, although one spawned about the inaccuracy of sentiment analysis. No questions, though I blame the length of the presentation. I also was expecting the room to be mostly computer programmers, but there were some business people, sales, and marketing.
Next time I present, I would give myself more time (45 seems more reasonable) to elaborate on important topics I had to skim through (ethics, programming algorithms, consumer psychology and irrational behavior).
Stephen Abram gave a presentation on the 2014 technology forecast for libraries. He discussed several emerging technologies that libraries should explore, including crowdfunding platforms, eLearning/MOOCs, makerspaces, video production, analytics-driven strategies, streaming media, mobility, discovery systems, social media as content, relationship management for patron data, and addressing "born digital" materials that were never published in print. Abram emphasized that libraries need to embrace change, think about sustainability and scalability, take risks, and tell their own stories in order to remain relevant in an evolving technological landscape.
Joblib: Lightweight pipelining for parallel jobs (v2)Marcel Caraciolo
This document discusses parallel computing in Python using joblib. It begins with an overview of different parallelization options in Python like threading and multiprocessing. It then discusses how joblib provides an easy way to parallelize Python code using multiprocessing without needing to explicitly manage processes. The document provides examples of using joblib to parallelize tasks like applying a function to a list of inputs and shows how it helps speed up computation by utilizing multiple CPU cores. It also discusses some considerations like interrupting jobs and memory usage when using joblib for parallelization.
Construindo softwares de bioinformática para análises clínicas : Desafios e...Marcel Caraciolo
O documento discute os desafios e oportunidades na construção de softwares de bioinformática para análises clínicas. Apresenta o laboratório Genomika, especializado em testes genéticos, e como a fusão de biologia molecular e tecnologia da informação é essencial para analisar grandes volumes de dados genéticos. Também destaca a importância da bioinformática para minerar bancos de dados na busca de mutações e como os sistemas de saúde podem ser aprimorados com novas tecnologias.
Como Python ajudou a automatizar o nosso laboratório v.2Marcel Caraciolo
O documento descreve como a linguagem de programação Python pode ser usada para automatizar tarefas em laboratórios de análise clínica, incluindo a análise de variantes genéticas, gestão de processos laboratoriais e infraestrutura de servidores. O autor também fornece recursos para quem deseja aprender bioinformática e trabalhar com análises genômicas usando Python.
Marcel Caraciolo is a scientist and CTO who has worked with Python for 7 years. He is interested in machine learning, mobile education, and data. He is the current president of the Python Brazil Association. Caraciolo has created several scientific Python packages and taught Python online. He is now working on applying Python to bioinformatics and clinical sequencing through tools like biopandas.
Este documento apresenta um tutorial sobre como hackear a web com Python 3 ministrado por Marcel Caraciolo. O tutorial introduz Python 3 e mostra como interagir com plataformas como Facebook, Reddit, MongoDB, Foursquare, Twitter e dados abertos usando a linguagem. O documento fornece links e códigos para que os participantes possam experimentar coletar e analisar dados dessas plataformas.
Recommender Systems with Ruby (adding machine learning, statistics, etc)Marcel Caraciolo
This document discusses the use of Ruby for recommendation systems and related tasks like data analysis and visualization. It provides examples of how Ruby libraries and tools like Recommendable, NMatrix, BioRuby, and RubyDoop can be used for tasks like collaborative filtering, content-based recommendations, machine learning, scientific computing, and processing large datasets. The document also discusses some common challenges for recommendation systems and how different approaches like content-based and collaborative filtering attempt to address them.
O documento discute vários modelos de negócios relacionados a software open-source, incluindo suporte e treinamento, consultoria em softwares open-source, Software as a Service, e venda de pacotes de software proprietário baseado em código-fonte open-source. O documento também fornece conselhos sobre como iniciar e manter projetos de código aberto.
Python Workshop on-line at Mutirao Python on-line via pycursos.com
https://www.youtube.com/watch?feature=player_embedded&v=DFh6l-h6-gw
Benchy, python framework for performance benchmarking of Python ScriptsMarcel Caraciolo
Benchy is a lightweight Python framework for performing benchmarks on code. It allows generating performance and memory usage graphs to compare different code implementations. Benchmarks can be written as objects and executed via a BenchmarkRunner to obtain results. Results are stored in a SQLite database and full reports can be generated in reStructuredText format. The framework aims to provide an easy way to integrate benchmarks into the development workflow.
O documento apresenta Python e 10 motivos para conhecer a linguagem, incluindo que é fácil de aprender, multi-paradigma, e usada por empresas como Google, Dropbox e Mozilla. Também discute como Python é expressiva e integra-se com outras linguagens como C/C++, .NET e MATLAB. Redes de apoio à comunidade Python no Brasil também são apresentadas.
GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...Marcel Caraciolo
This document describes a tool called GeoLocation Friends Visualizer that plots social network location data on a map. It was created by Marcel Caraciolo, a Python developer from Recife, Brazil who has been working with Python for 6 years. The tool and its source code are available on GitHub at a provided link.
Benchy: Lightweight framework for Performance Benchmarks Marcel Caraciolo
Benchy: Lightweight framework for Performance Benchmarks on Python Scripts.
Presented at XXVI Pernambuco Python User Group Meeting at Recife, Pernambuco, Brazil on 06.04.2013
Este documento apresenta Python como uma linguagem de programação interpretada, fácil de aprender e altamente produtiva que suporta paradigmas orientados a objetos, funcional e procedural. Apresenta exemplos básicos de código Python e discute como Python é usado por muitas grandes empresas, é de código aberto e possui uma comunidade ativa de desenvolvedores.
Construindo Soluções Científicas com Big Data & MapReduceMarcel Caraciolo
Este documento resume as principais informações sobre o uso de MapReduce e Big Data. Em três frases:
MapReduce é uma abordagem para processamento distribuído de grandes conjuntos de dados através de funções map e reduce. MrJob permite rodar trabalhos MapReduce em Python no Amazon EMR ou Hadoop de forma fácil. Exemplos mostram como usar MapReduce para recomendação de amigos em larga escala.
Como Python está mudando a forma de aprendizagem à distância no BrasilMarcel Caraciolo
1) Marcel Caraciolo é um cientista chefe e professor que usa Python para promover a educação à distância no Brasil.
2) Ele co-fundou o PyCursos.com, que oferece cursos on-line gratuitos de Python que atraíram centenas de alunos em várias cidades.
3) Dados mostram que abordagens interativas como exercícios on-line durante os vídeos melhoram o engajamento e desempenho dos alunos.
Novas Tendências para a Educação a Distância: Como reinventar a educação ?Marcel Caraciolo
Apresentação realizada durante a Conferência Talk a Bit em Junho/2012 e realizada durante o PET 2012 por Marcel Caraciolo.
Universidade Federal de Pernambuco, 2012
O documento descreve como construir um webcrawler para rastrear encomendas usando Python e expressões regulares. Primeiro, ele explica como fazer o download da página HTML com os dados de rastreamento e extrair o conteúdo. Depois, ele discute como analisar o HTML baixado usando expressões regulares para obter as informações de status e localização da encomenda.
O documento descreve como manipular arquivos ZIP em Python usando o módulo zipfile. É possível criar, ler, extrair arquivos e obter metadados de arquivos ZIP como nome, tamanho e data de modificação.
PyFoursquare is a Python wrapper for the Foursquare API that allows developers to easily access Foursquare data from their Python applications. It currently supports searching for places and retrieving place details, tips, and user information. The wrapper follows a similar architecture to Tweepy, representing each Foursquare entity as a model. Developers can authenticate their app, make API requests, and access results as model objects. The project is open source and the author welcomes contributions to support additional Foursquare entities and features.
Sistemas de Recomendação: Como funciona e Onde Se aplica?Marcel Caraciolo
This document discusses mobile recommender systems. It describes how recommender systems on mobile devices face challenges due to limitations of mobile contexts, such as location and processing capabilities. It presents the workflow and architecture of a mobile restaurant recommendation and navigation system. The system collects and analyzes location-based user data on the server side and provides personalized recommendations to users on their mobile clients. It discusses using context such as location, tags, and implicit feedback for recommendations on mobile.
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Impelsys Inc.
Impelsys provided a robust testing solution, leveraging a risk-based and requirement-mapped approach to validate ICU Connect and CritiXpert. A well-defined test suite was developed to assess data communication, clinical data collection, transformation, and visualization across integrated devices.
HCL Nomad Web – Best Practices and Managing Multiuser Environmentspanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-nomad-web-best-practices-and-managing-multiuser-environments/
HCL Nomad Web is heralded as the next generation of the HCL Notes client, offering numerous advantages such as eliminating the need for packaging, distribution, and installation. Nomad Web client upgrades will be installed “automatically” in the background. This significantly reduces the administrative footprint compared to traditional HCL Notes clients. However, troubleshooting issues in Nomad Web present unique challenges compared to the Notes client.
Join Christoph and Marc as they demonstrate how to simplify the troubleshooting process in HCL Nomad Web, ensuring a smoother and more efficient user experience.
In this webinar, we will explore effective strategies for diagnosing and resolving common problems in HCL Nomad Web, including
- Accessing the console
- Locating and interpreting log files
- Accessing the data folder within the browser’s cache (using OPFS)
- Understand the difference between single- and multi-user scenarios
- Utilizing Client Clocking
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxAnoop Ashok
In today's fast-paced retail environment, efficiency is key. Every minute counts, and every penny matters. One tool that can significantly boost your store's efficiency is a well-executed planogram. These visual merchandising blueprints not only enhance store layouts but also save time and money in the process.
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveScyllaDB
Want to learn practical tips for designing systems that can scale efficiently without compromising speed?
Join us for a workshop where we’ll address these challenges head-on and explore how to architect low-latency systems using Rust. During this free interactive workshop oriented for developers, engineers, and architects, we’ll cover how Rust’s unique language features and the Tokio async runtime enable high-performance application development.
As you explore key principles of designing low-latency systems with Rust, you will learn how to:
- Create and compile a real-world app with Rust
- Connect the application to ScyllaDB (NoSQL data store)
- Negotiate tradeoffs related to data modeling and querying
- Manage and monitor the database for consistently low latencies
Artificial Intelligence is providing benefits in many areas of work within the heritage sector, from image analysis, to ideas generation, and new research tools. However, it is more critical than ever for people, with analogue intelligence, to ensure the integrity and ethical use of AI. Including real people can improve the use of AI by identifying potential biases, cross-checking results, refining workflows, and providing contextual relevance to AI-driven results.
News about the impact of AI often paints a rosy picture. In practice, there are many potential pitfalls. This presentation discusses these issues and looks at the role of analogue intelligence and analogue interfaces in providing the best results to our audiences. How do we deal with factually incorrect results? How do we get content generated that better reflects the diversity of our communities? What roles are there for physical, in-person experiences in the digital world?
Role of Data Annotation Services in AI-Powered ManufacturingAndrew Leo
From predictive maintenance to robotic automation, AI is driving the future of manufacturing. But without high-quality annotated data, even the smartest models fall short.
Discover how data annotation services are powering accuracy, safety, and efficiency in AI-driven manufacturing systems.
Precision in data labeling = Precision on the production floor.
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfAbi john
Analyze the growth of meme coins from mere online jokes to potential assets in the digital economy. Explore the community, culture, and utility as they elevate themselves to a new era in cryptocurrency.
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Aqusag Technologies
In late April 2025, a significant portion of Europe, particularly Spain, Portugal, and parts of southern France, experienced widespread, rolling power outages that continue to affect millions of residents, businesses, and infrastructure systems.
Mobile App Development Company in Saudi ArabiaSteve Jonas
EmizenTech is a globally recognized software development company, proudly serving businesses since 2013. With over 11+ years of industry experience and a team of 200+ skilled professionals, we have successfully delivered 1200+ projects across various sectors. As a leading Mobile App Development Company In Saudi Arabia we offer end-to-end solutions for iOS, Android, and cross-platform applications. Our apps are known for their user-friendly interfaces, scalability, high performance, and strong security features. We tailor each mobile application to meet the unique needs of different industries, ensuring a seamless user experience. EmizenTech is committed to turning your vision into a powerful digital product that drives growth, innovation, and long-term success in the competitive mobile landscape of Saudi Arabia.
Technology Trends in 2025: AI and Big Data AnalyticsInData Labs
At InData Labs, we have been keeping an ear to the ground, looking out for AI-enabled digital transformation trends coming our way in 2025. Our report will provide a look into the technology landscape of the future, including:
-Artificial Intelligence Market Overview
-Strategies for AI Adoption in 2025
-Anticipated drivers of AI adoption and transformative technologies
-Benefits of AI and Big data for your business
-Tips on how to prepare your business for innovation
-AI and data privacy: Strategies for securing data privacy in AI models, etc.
Download your free copy nowand implement the key findings to improve your business.
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell
With expertise in data architecture, performance tracking, and revenue forecasting, Andrew Marnell plays a vital role in aligning business strategies with data insights. Andrew Marnell’s ability to lead cross-functional teams ensures businesses achieve sustainable growth and operational excellence.
This is the keynote of the Into the Box conference, highlighting the release of the BoxLang JVM language, its key enhancements, and its vision for the future.
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...Alan Dix
Talk at the final event of Data Fusion Dynamics: A Collaborative UK-Saudi Initiative in Cybersecurity and Artificial Intelligence funded by the British Council UK-Saudi Challenge Fund 2024, Cardiff Metropolitan University, 29th April 2025
https://alandix.com/academic/talks/CMet2025-AI-Changes-Everything/
Is AI just another technology, or does it fundamentally change the way we live and think?
Every technology has a direct impact with micro-ethical consequences, some good, some bad. However more profound are the ways in which some technologies reshape the very fabric of society with macro-ethical impacts. The invention of the stirrup revolutionised mounted combat, but as a side effect gave rise to the feudal system, which still shapes politics today. The internal combustion engine offers personal freedom and creates pollution, but has also transformed the nature of urban planning and international trade. When we look at AI the micro-ethical issues, such as bias, are most obvious, but the macro-ethical challenges may be greater.
At a micro-ethical level AI has the potential to deepen social, ethnic and gender bias, issues I have warned about since the early 1990s! It is also being used increasingly on the battlefield. However, it also offers amazing opportunities in health and educations, as the recent Nobel prizes for the developers of AlphaFold illustrate. More radically, the need to encode ethics acts as a mirror to surface essential ethical problems and conflicts.
At the macro-ethical level, by the early 2000s digital technology had already begun to undermine sovereignty (e.g. gambling), market economics (through network effects and emergent monopolies), and the very meaning of money. Modern AI is the child of big data, big computation and ultimately big business, intensifying the inherent tendency of digital technology to concentrate power. AI is already unravelling the fundamentals of the social, political and economic world around us, but this is a world that needs radical reimagining to overcome the global environmental and human challenges that confront us. Our challenge is whether to let the threads fall as they may, or to use them to weave a better future.
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersToradex
Toradex brings robust Linux support to SMARC (Smart Mobility Architecture), ensuring high performance and long-term reliability for embedded applications. Here’s how:
• Optimized Torizon OS & Yocto Support – Toradex provides Torizon OS, a Debian-based easy-to-use platform, and Yocto BSPs for customized Linux images on SMARC modules.
• Seamless Integration with i.MX 8M Plus and i.MX 95 – Toradex SMARC solutions leverage NXP’s i.MX 8 M Plus and i.MX 95 SoCs, delivering power efficiency and AI-ready performance.
• Secure and Reliable – With Secure Boot, over-the-air (OTA) updates, and LTS kernel support, Toradex ensures industrial-grade security and longevity.
• Containerized Workflows for AI & IoT – Support for Docker, ROS, and real-time Linux enables scalable AI, ML, and IoT applications.
• Strong Ecosystem & Developer Support – Toradex offers comprehensive documentation, developer tools, and dedicated support, accelerating time-to-market.
With Toradex’s Linux support for SMARC, developers get a scalable, secure, and high-performance solution for industrial, medical, and AI-driven applications.
Do you have a specific project or application in mind where you're considering SMARC? We can help with Free Compatibility Check and help you with quick time-to-market
For more information: https://www.toradex.com/computer-on-modules/smarc-arm-family
Spark is a powerhouse for large datasets, but when it comes to smaller data workloads, its overhead can sometimes slow things down. What if you could achieve high performance and efficiency without the need for Spark?
At S&P Global Commodity Insights, having a complete view of global energy and commodities markets enables customers to make data-driven decisions with confidence and create long-term, sustainable value. 🌍
Explore delta-rs + CDC and how these open-source innovations power lightweight, high-performance data applications beyond Spark! 🚀
2. Quem é Marcel ?
Marcel Pinheiro Caraciolo - @marcelcaraciolo
Sergipano, porém Recifense.
Mestre em Ciência da Computação no CIN/UFPE na área de mineração de dados
Diretor de Pesquisa e Desenvolvimento no Atépassar
CEO e Co-fundador do PyCursos/ Pingmind
Membro e Moderador da Celúla de Usuários Python de Pernambuco (PUG-PE)
Minhas áreas de interesse: Computação móvel e Computação inteligente
Meus blogs: http://www.mobideia.com (sobre Mobilidade desde 2006)
http://aimotion.blogspot.com (sobre I.A. desde 2009)
8. Intelligence from
Mining Data
User
User
User User
User
Um usuário influencia outros
por resenhas, notas, recomendações e blogs
Um usuário é influenciado por outros
por resenhas, notas, recomendações e blogs
9. aggregation information: lists
ratings
user-generated content
reviews
blogs recommendations
wikis Collective Intelligence voting
Your application bookmarking
Search
tag cloud tagging
saving
Natural Language Processing
Clustering and Harness external content
predictive models
10. WEB SITES
WEB APPLICATIONS
WEB SERVICES
3.0 SEMANTIC WEB
USERS
antes...
VI Encontro do PUG-PE
VI Encontro do PUG-PE
20. “A lot of times, people don’t know what
they want until you show it to them.”
Steve Jobs
“We are leaving the Information age, and
entering into the Recommendation age.”
Chris Anderson, from book Long Tail
21. Recomendações Sociais
Família/Amigos
Amigos/ Família
O Que eu
deveria ler ?
Ref: Flickr-BlueAlgae
“Eu acho que
você deveria ler
Ref: Flickr photostream: jefield estes livros.
22. Recomendações por Interação
Entrada: Avalie alguns livros
O Que eu
deveria ler ?
Saída:
“Livros que você
pode gostar
são …”
25. Netflix
- 2/3 dos filmes alugados vêm de recomendação
Google News
- 38% das notícias mais clicadas vêm de recomendação
Amazon
- 38% das vendas vêm de recomendação
Fonte: Celma & Lamere, ISMIR 2007
26. !"#$%"#&'"%(&$)")
Nós+,&-.$/).#&0#/"1.#$%234(".#
* estamos sobrecarregados de
informação
$/)#5(&6 7&.2.#"$4,#)$8
* 93((3&/.#&0#:&'3".;#5&&<.#
$/)#:-.34#2%$4<.#&/(3/"
Milhares de artigos e posts
* =/#>$/&3;#?#@A#+B#4,$//"(.;#
novos todos os dias
2,&-.$/).#&0#7%&6%$:.#
"$4,#)$8
* =/#C"1#D&%<;#."'"%$(#
Milhões de Músicas, Filmes e
2,&-.$/).#&0#$)#:"..$6".#
Livros
."/2#2&#-.#7"%#)$8
Milhares de Ofertas e
Promoções
27. O que pode ser recomendado ?
Contatos em Redes Sociais Artigos
Produtos Messagens de Propaganda
Cursos e-learning Livros
Tags Músicas
Futuras namoradas
Roupas Filmes
Restaurantes
Programas de Tv
Vídeos Papers
Opções de Investimento Profissionais
Módulos de código
29. O que os sistemas de recomendação
realmente fazem ?
1. Prediz o quanto você pode gostar de um certo
produto ou serviço
2. Sugere um lista de N items ordenada de acordo
com seu interese
3. Sugere uma lista de N usuários ordernada
para um produto/serviço
4. Explica a você o porque esses items foram
recomendados
5. Ajusta a predição e a recomendação baseado em
seu feedback e de outros.
30. Filtragem baseada por Conteúdo
Similar
Duro de O Vento Toy
Armagedon Items
Matar Levou Store
recomenda
gosta
Marcel Usuários
31. Problemas com filtragem por
conteúdo
1. Análise dos dados Restrita
- Items e usuários pouco detalhados. Pior em áudio ou imagens
2. Dados Especializados
- Uma pessoa que não tem experiência com Sushi não recebe o
melhor restaurante de Sushi da cidade
3. Efeito Portfólio
- Só porque eu vi 1 filme da Xuxa quando criança, tem que me
recomendar todos dela
32. Filtragem Colaborativa
O Vento Toy
Thor Armagedon Items
Levou Store
gosta
recomenda
Marcel Rafael Amanda Usuários
Similar
33. Problemas com filtragem colaborativa
1. Escabilidade
- Amazon com 5M usuários, 50K items, 1.4B avaliações
2. Dados esparsos
- Novos usuários e items que não tem histórico
3. Partida Fria
- Só avaliei apenas um único livro no Amazon!
4. Popularidade
- Todo mundo lê ‘Harry Potter’
5. Hacking
- A pessoa que lê ‘Harry Potter’ lê Kama Sutra
34. Filtragem Híbrida
Combinação de múltiplos métodos
Duro de O Vento Toy
Armagedon Items
Matar Levou Store
Ontologias
Dados
Símbolicos
Marcel Rafael Luciana Usuários
35. Como eles são
apresentados ?
Destaques Mais sobre este artista...
Alguem similar a você também gostou disso
O mais popular em seu grupo...
Já que você escutou esta, você pode querer esta...
Lançamentos Escute músicas de artistas similares.
Estes dois item vêm juntos..
36. Como eles são avaliados ?
Como sabemos se a recomendação é boa ?
Geralmente se divide-se em treinamento/teste (80/20)
Críterios utilizados:
- Erro de Predição: RMSE
- Curva ROC*, rank-utility, F-Measure
*http://code.google.com/p/pyplotmining/
37. How to build a recommender
system with Python ?
There is one option...
Crab
A Python Framework for Building
Recommendation Engines
https://github.com/python-recsys/crab
38. How to build a recommender
system with Python ?
There is one option... But it’s still in development!
Crab
A Python Framework for Building
Recommendation Engines
https://github.com/python-recsys/crab
39. But here we will create one from
Zero with Python!
Find someone similar to you
O Vento Toy
Thor Armagedon Items
Levou Store
like
recommends
Marcel Rafael Amanda Users
Similar
40. But here we will create one from
Step Zero with Python!
Find someone similar to you
Movies Ratings Dataset
41. But here we will create one from
Step Zero with Python!
Find someone similar to you
Movies Ratings Dataset
Mr. X deu nota 4 para
Snow Crash e 2 para
Girl with the Dragon Tatoo,
O que recomendar para ele ?
42. But here we will create one from
Step Zero with Python!
Find someone similar to you
43. But here we will create one from
Step Zero with Python!
Find someone similar to you
Descobrimos que Amy é mais similar dentre as opções,
Podemos recomendar um filme visto por ela com 5 estrelas :)
44. But here we will create one from
Step Zero with Python!
Mais uma métrica de similaridade: Distância Euclideana
45. But here we will create one from
Step Zero with Python!
Mais uma métrica de similaridade: Distância Euclideana
46. But here we will create one from
Step Zero with Python!
Mais uma métrica de similaridade: Distância Euclideana
54. Codificando o Mahantan
def manhattan(rating1, rating2):
"""Computes the Manhattan distance. Both rating1 and rating2 are
dictionaries of the form {'The Strokes': 3.0, 'Slightly
Stoopid': 2.5}"""
distance = 0
commonRatings = False
for key in rating1:
if key in rating2:
distance += abs(rating1[key] – rating2[key])
commonRatings = True
if commonRatings:
return distance
else:
return -1 #Indicates no ratings in common
56. Codificando o Mahantan
def manhattan(rating1, rating2):
"""Computes the Manhattan distance. Both rating1 and rating2 are
dictionaries of the form {'The Strokes': 3.0, 'Slightly
Stoopid': 2.5}"""
distance = 0
commonRatings = False
for key in rating1:
if key in rating2:
distance += abs(rating1[key] – rating2[key])
commonRatings = True
if commonRatings:
return distance
else:
return -1 #Indicates no ratings in common
57. Codificando o Mahantan
def manhattan(rating1, rating2):
"""Computes the Manhattan distance. Both rating1 and rating2 are
dictionaries of the form {'The Strokes': 3.0, 'Slightly
Stoopid': 2.5}"""
distance = 0
commonRatings = False
for key in rating1:
if key in rating2:
distance += abs(rating1[key] – rating2[key])
commonRatings = True
if commonRatings:
return distance
else:
return -1 #Indicates no ratings in common
>>> manhattan(users['Hailey'], users['Veronica'])
2.0
>>> manhattan(users['Hailey'], users['Jordyn'])
1.5
>>>
59. Codificando Euclidean
def euclidean(rating1, rating2):
"""Computes the euclidean distance.
Both rating1 and rating2 are dictionaries of the form
{'The Strokes': 3.0, 'Slightly Stoopid': 2.5}"""
distance = 0.0
commonRatings = False
for key in rating1:
if key in rating2:
distance += pow(abs(rating1[key] - rating2[key]), 2.0)
commonRatings = True
if commonRatings:
return pow(distance, 1/2.0)
else:
return -1 #Indicates no ratings in common
61. Codificando Euclidean
def euclidean(rating1, rating2):
"""Computes the euclidean distance.
Both rating1 and rating2 are dictionaries of the form
{'The Strokes': 3.0, 'Slightly Stoopid': 2.5}"""
distance = 0.0
commonRatings = False
for key in rating1:
if key in rating2:
distance += pow(abs(rating1[key] - rating2[key]), 2.0)
commonRatings = True
if commonRatings:
return pow(distance, 1/2.0)
else:
return -1 #Indicates no ratings in common
1.4142135623730951
62. Codificando Euclidean
def euclidean(rating1, rating2):
"""Computes the euclidean distance.
Both rating1 and rating2 are dictionaries of the form
{'The Strokes': 3.0, 'Slightly Stoopid': 2.5}"""
distance = 0.0
commonRatings = False
for key in rating1:
if key in rating2:
distance += pow(abs(rating1[key] - rating2[key]), 2.0)
commonRatings = True
if commonRatings:
return pow(distance, 1/2.0)
else:
return -1 #Indicates no ratings in common
>>> euclidean(users['Hailey'], users['Veronica'])
1.4142135623730951
64. Find the closest users
def computeNearestNeighbor(username, users):
"""creates a sorted list of users based on their distance to
username"""
distances = []
for user in users:
if user != username:
distance = manhattan(users[user], users[username])
distances.append((distance, user))
# sort based on distance -- closest first
distances.sort()
return distances
67. Find the closest users
def computeNearestNeighbor(username, users):
"""creates a sorted list of users based on their distance to
username"""
distances = []
for user in users:
if user != username:
distance = manhattan(users[user], users[username])
distances.append((distance, user))
# sort based on distance -- closest first
distances.sort()
return distances
>>> computeNearestNeighbor('Hailey', users)
[(2.0, 'Veronica'), (4.0, 'Chan'),(4.0, 'Sam'), (4.5, 'Dan'), (5.0,
'Angelica'), (5.5, 'Bill'), (7.5, 'Jordyn')]
>>>
69. The recommender
def recommend(username, users):
"""Give list of recommendations"""
# first find nearest neighbor
nearest = computeNearestNeighbor(username, users)[0][1]
recommendations = []
# now find bands neighbor rated that user didn't
neighborRatings = users[nearest]
userRatings = users[username]
for artist in neighborRatings:
if not artist in userRatings:
recommendations.append((artist, neighborRatings[artist]))
recommendations.sort(key=lambda artistTuple: artistTuple[1],
reverse = True)
return recommendations
94. Change people to items
{'Lisa Rose': {'Lady in the Water': 2.5, 'Snakes on a Plane': 3.5},
'Gene Seymour': {'Lady in the Water': 3.0, 'Snakes on a Plane': 3.5}}
to
{'Lady in the Water':{'Lisa Rose':2.5,'Gene Seymour':3.0},
'Snakes on a Plane':{'Lisa Rose':3.5,'Gene Seymour':3.5}} etc.
96. Change people to items
{'Lisa Rose': {'Lady in the Water': 2.5, 'Snakes on a Plane': 3.5},
'Gene Seymour': {'Lady in the Water': 3.0, 'Snakes on a Plane': 3.5}}
to
{'Lady in the Water':{'Lisa Rose':2.5,'Gene Seymour':3.0},
'Snakes on a Plane':{'Lisa Rose':3.5,'Gene Seymour':3.5}} etc.
97. Change people to items
{'Lisa Rose': {'Lady in the Water': 2.5, 'Snakes on a Plane': 3.5},
'Gene Seymour': {'Lady in the Water': 3.0, 'Snakes on a Plane': 3.5}}
to
{'Lady in the Water':{'Lisa Rose':2.5,'Gene Seymour':3.0},
'Snakes on a Plane':{'Lisa Rose':3.5,'Gene Seymour':3.5}} etc.
def transformPrefs(prefs):
result={}
for person in prefs:
for item in prefs[person]:
result.setdefault(item,{})
# Flip item and person
result[item][person]=prefs[person][item]
return result
98. Change people to items
{'Lisa Rose': {'Lady in the Water': 2.5, 'Snakes on a Plane': 3.5},
'Gene Seymour': {'Lady in the Water': 3.0, 'Snakes on a Plane': 3.5}}
to
{'Lady in the Water':{'Lisa Rose':2.5,'Gene Seymour':3.0},
'Snakes on a Plane':{'Lisa Rose':3.5,'Gene Seymour':3.5}} etc.
def transformPrefs(prefs):
result={}
for person in prefs:
for item in prefs[person]:
result.setdefault(item,{})
# Flip item and person
result[item][person]=prefs[person][item]
return result
>> movies=recommendations.transformPrefs(recommendations.users)
>> recommendations.computeNearestNeighbors(‘Blues Traveler’, movies)
[(0.657, 'You, Me and Dupree'), (0.487, 'Lady in the Water'), (0.111, 'Snakes on a
Plane'), (-0.179, 'The Night Listener'), (-0.422, 'Just My Luck')]
100. Change people to items
{'Lisa Rose': {'Lady in the Water': 2.5, 'Snakes on a Plane': 3.5},
'Gene Seymour': {'Lady in the Water': 3.0, 'Snakes on a Plane': 3.5}}
to
{'Lady in the Water':{'Lisa Rose':2.5,'Gene Seymour':3.0},
'Snakes on a Plane':{'Lisa Rose':3.5,'Gene Seymour':3.5}} etc.
101. Change people to items
{'Lisa Rose': {'Lady in the Water': 2.5, 'Snakes on a Plane': 3.5},
'Gene Seymour': {'Lady in the Water': 3.0, 'Snakes on a Plane': 3.5}}
to
{'Lady in the Water':{'Lisa Rose':2.5,'Gene Seymour':3.0},
'Snakes on a Plane':{'Lisa Rose':3.5,'Gene Seymour':3.5}} etc.
def transformPrefs(prefs):
result={}
for person in prefs:
for item in prefs[person]:
result.setdefault(item,{})
# Flip item and person
result[item][person]=prefs[person][item]
return result
102. Change people to items
{'Lisa Rose': {'Lady in the Water': 2.5, 'Snakes on a Plane': 3.5},
'Gene Seymour': {'Lady in the Water': 3.0, 'Snakes on a Plane': 3.5}}
to
{'Lady in the Water':{'Lisa Rose':2.5,'Gene Seymour':3.0},
'Snakes on a Plane':{'Lisa Rose':3.5,'Gene Seymour':3.5}} etc.
def transformPrefs(prefs):
result={}
for person in prefs:
for item in prefs[person]:
result.setdefault(item,{})
# Flip item and person
result[item][person]=prefs[person][item]
return result
>> movies=recommendations.transformPrefs(recommendations.critics)
>> recommendations.computeNearestNeighbors(movies,'Superman Returns')
[(0.657, 'You, Me and Dupree'), (0.487, 'Lady in the Water'), (0.111, 'Snakes on a
Plane'), (-0.179, 'The Night Listener'), (-0.422, 'Just My Luck')]
106. Find the closest items
def calculateSimilarItems(prefs,sim_distance=manhattan):
! # Create a dictionary of items showing which other items they
! # are most similar to.
! result={}
! # Invert the preference matrix to be item-centric
! itemPrefs=transformPrefs(prefs)
! c=0
! for item in itemPrefs:
! ! # Status updates for large datasets
! ! c+=1
! ! if c%100==0: print "%d / %d" % (c,len(itemPrefs))
# Find the most similar items to this one
scores=computeNearestNeighbor(item,itemPrefs,distance=sim_distance)
result[item]=scores
! return result
107. Find the closest items
def calculateSimilarItems(prefs,sim_distance=manhattan):
! # Create a dictionary of items showing which other items they
! # are most similar to.
! result={}
! # Invert the preference matrix to be item-centric
! itemPrefs=transformPrefs(prefs)
! c=0
! for item in itemPrefs:
! ! # Status updates for large datasets
! ! c+=1
! ! if c%100==0: print "%d / %d" % (c,len(itemPrefs))
# Find the most similar items to this one
scores=computeNearestNeighbor(item,itemPrefs,distance=sim_distance)
result[item]=scores
! return result
>>> itemsim=recommendations.calculateSimilarItems(users)
>>> itemsim
{'Lady in the Water': [(0.40000000000000002, 'You, Me and Dupree'), (0.2857142857142857, 'The
Night Listener'),... 'Snakes on a Plane': [(0.22222222222222221, 'Lady in the Water'),
(0.18181818181818182, 'The Night Listener'),... etc.
109. The recommender
def recommend(username,users, similarities, n=3):
scores = {}
totalSim = {}
#
# now get the ratings for the user
#
userRatings = users[username]
# Loop over items rated by this user
for item, rating in userRatings.items():
#Loop over items similar to this one
for sim, other_item in similarities[item]:
# Ignore if this user has already rated this item
if other_item in userRatings: continue
# Weighted sum of rating times similarity
scores.setdefault(other_item, 0.0)
scores[other_item]+= sim * rating
# Sum of all the similarities
totalSim.setdefault(other_item, 0.0)
totalSim[other_item] += sim
# Divide each total score by total weighting to get an average
recommendations = [(score/totalSim[item],item) for item,score in scores.items()]
# finally sort and return
recommendations.sort(key=lambda artistTuple: artistTuple[1], reverse = True)
# Return the first n items
return recommendations[:n]
111. The recommender
def recommend(username,users, similarities, n=3):
scores = {}
totalSim = {}
#
# now get the ratings for the user
#
userRatings = users[username]
# Loop over items rated by this user
for item, rating in userRatings.items():
#Loop over items similar to this one
for sim, other_item in similarities[item]:
# Ignore if this user has already rated this item
if other_item in userRatings: continue
# Weighted sum of rating times similarity
scores.setdefault(other_item, 0.0)
scores[other_item]+= sim * rating
# Sum of all the similarities
totalSim.setdefault(other_item, 0.0)
totalSim[other_item] += sim
# Divide each total score by total weighting to get an average
recommendations = [(score/totalSim[item],item) for item,score in scores.items()]
# finally sort and return
recommendations.sort(key=lambda artistTuple: artistTuple[1], reverse = True)
# Return the first n items
return recommendations[:n]
>>> recommend('Hailey', users,similarities,3)
[(3.1176470588235294, 'Slightly Stoopid'),
(2.639207507820647, 'Phoenix'),(2.64476386036961, 'Blues Traveler')]
112. Content Based Filtering
Similar
Duro de O Vento Toy
Armagedon Items
Matar Levou Store
recommend
likes
Marcel Users
113. source, the recommendation architecture that we propose will would rely more on collaborative-filtering techniques, that is,
aggregate the results of such filtering techniques. Bezerra and Carvalho proposed approaches where the results
the reviews from similar users.
We aim at integrating the previously mentioned hybrid prod- Figure 1 shows a overview of our meta recommender
achieved showed to be very promising [19].
approach. By combining the content-based filtering and the
uct recommendation approach in a mobile application so the
A.
Crab is already in production
users could benefit from useful and logical recommendations. collaborative-based one into a hybrid recommender system, it
Moreover, we aim at providing a suited explanation for each would use the services/products III. S YSTEM catalogues
repositories which D ESIGN
recommendation to the user, since the current approaches just the services to be recommended, and the review repository
Application data information our mobile recommender sys-
that contains the user opinions about those services. All this for
only deliver product recommendations with a overall score
without pointing out the appropriateness of such recommen- datatembecan be from data source containers in the web product description
can extracted divided into two parts: the rec
dation [13]. Besides the basic information provided by the such(such location-based social network Foursquare its attributes) and the user
as the as location, description and [17] as
Hybrid Meta Approach gives the system’s architecture and
suppliers, the system will deliver the explanation, providing
relevant reviews of similar users, we believe that it will
tags, etc.). The Figure 3
increase the confidence in the buying decision process and the
displayed at the Figure 2 and the location recommendation
engine from Google: Google HotPot [18]. by user (such as rating, comments,
reviews or ratings provided
mo
wh
product accepptance rate. In the mobile context this approach
po
could help the users in this process and showing the user
relative components. thi
opinions could contribute to achieve this task. rec
spe
!"#$"%&'$ 5&-$
!"#$%&'%($) !".,"/#) acc
!"*+#,$+'-) !"*+#,$+'-) +,-*.&$
!(#$()&'*&%$
/01&'234&$ !6#$6,00&41&7$
wh
res
!<#$<'&2&'&04&%A$B,431*,0A$&14C$
ves
0+44%6+'%$,.")1%#"2)
0+($"($)1%#"2)
3,4$"',(5)
ou
3,4$"',(5)
)))67,8,#%)+,4%$91$'%4)-1":))))
suc
!"#$%&"'()*+,#&-,.)
/$%,0"12()*3$4%)3""5.)
))))1,;&,<4)<1&%%,')=2)4&:&8$1))
)))))))))))%$4%,5)94,14>?) <',7)41$
pro
8&=,%*1,'>$
exp
8&4,99&0731*,0$:0;*0&$ !B#$B*%1$,2$D4,'&7$<',7)41%$
!(#$()&'*&%$
ma
8&?*&@$
we
Fig. 2. User Reviews from Foursquare Social Network 8&=,%*1,'>$
com
7"$%)
!"8+99"(2"'))
!8#$830E&7$<',7)41%$
The content-based filtering approach will be used to filter ext
the product/service repository, while the collaborative based
8&%).1%$ B.
approach will derive the product review recommendations. In
addition we will use text mining techniques to distinct the
!"8+99"(2%$,+(#) polarity of the user review between positive or negative one.
This information summarized would contribute in the product Architecture
Fig. 3. Mobile Recommender System rat
score recommendation computation. The final product recom-
Fig. 1. Meta Recommender Architecture
mendation score is computed by integrating the result of both
me
recommenders. By now, weproduct/service recommender, the user could
In our mobile are considering to use different and
Since one of the goals of this work is to incorporate options regarding this integration approach, one and get a list of recommen-
different data sources of user opinions and descriptions, we filter some products or services at special oth
is the symbolic data analysis approach (SDA) [19], which
have addopted an meta recommendation architecture. By using eachtations. The user user ratings/reviews arehis preferences or give his
product description and also can enter modeled ow
a meta recommender architecture, the system would provide
a personalized control over the generated recommendation list
feedback to some offered product recommendation.
as set of modal symbolic descriptions that summarizes the Re
information provided by the corresponding data sources. It is
114. Crab is already in production
Brazilian Social Network called Atepassar.com
Educational network with more than 60.000 students and 120 video-classes
Running on Python
+ Numpy + Scipy and
Django
Backend for Recommendations
MongoDB - mongoengine
Daily Recommendations
with Explanations
115. Distributing the recommendation computations
Use Hadoop and Map-Reduce intensively
Investigating the Yelp mrjob framework https://github.com/pfig/mrjob
Develop the Netflix and novel standard-of-the-art used
Matrix Factorization, Singular Value Decomposition (SVD), Boltzman machines
The most commonly used is Slope One technique.
Simple algebra math with slope one algebra y = a*x+b
116. Distributed Computing with mrJob
https://github.com/Yelp/mrjob
http://aimotion.blogspot.com/2012/08/introduction-to-recommendations-with.html
117. Distributed Computing with mrJob
https://github.com/Yelp/mrjob
It supports Amazon’s Elastic MapReduce(EMR) service, your own Hadoop cluster or
local (for testing)
http://aimotion.blogspot.com/2012/08/introduction-to-recommendations-with.html
118. Distributed Computing with mrJob
https://github.com/Yelp/mrjob
It supports Amazon’s Elastic MapReduce(EMR) service, your own Hadoop cluster or
local (for testing)
http://aimotion.blogspot.com/2012/08/introduction-to-recommendations-with.html
119. Distributed Computing with mrJob
https://github.com/Yelp/mrjob
"""The classic MapReduce job: count the frequency of words.
"""
from mrjob.job import MRJob
import re
WORD_RE = re.compile(r"[w']+")
class MRWordFreqCount(MRJob):
def mapper(self, _, line):
for word in WORD_RE.findall(line):
yield (word.lower(), 1)
def reducer(self, word, counts):
yield (word, sum(counts))
if __name__ == '__main__':
MRWordFreqCount.run()
It supports Amazon’s Elastic MapReduce(EMR) service, your own Hadoop cluster or
local (for testing)
http://aimotion.blogspot.com/2012/08/introduction-to-recommendations-with.html
120. Future studies with Sparse Matrices
Real datasets come with lots of empty values
http://aimotion.blogspot.com/2011/05/evaluating-recommender-systems.html
Solutions:
scipy.sparse package
Sharding operations
Matrix Factorization
techniques (SVD)
Apontador Reviews Dataset
121. Future studies with Sparse Matrices
Real datasets come with lots of empty values
http://aimotion.blogspot.com/2011/05/evaluating-recommender-systems.html
Solutions:
scipy.sparse package
Sharding operations
Matrix Factorization
techniques (SVD)
Crab implements a Matrix
Factorization with Expectation
Maximization algorithm
Apontador Reviews Dataset
122. Future studies with Sparse Matrices
Real datasets come with lots of empty values
http://aimotion.blogspot.com/2011/05/evaluating-recommender-systems.html
Solutions:
scipy.sparse package
Sharding operations
Matrix Factorization
techniques (SVD)
Crab implements a Matrix
Factorization with Expectation
Maximization algorithm
scikits.crab.svd package
Apontador Reviews Dataset
123. How are we working ?
Our Project’s Home Page
http://github.com/python-recsys/crab
124. Future Releases
Planned Release 0.1
Collaborative Filtering Algorithms working, sample datasets to load and test
Planned Release 0.11
Sparse Matrixes and Database Models support
Planned Release 0.12
Slope One Agorithm, new factorization techniques implemented
....
125. Join us!
1. Read our Wiki Page
https://github.com/python-recsys/crab/wiki/Developer-Resources
2. Check out our current sprints and open issues
https://github.com/python-recsys/crab/issues
3. Forks, Pull Requests mandatory
4. Join us at irc.freenode.net #muricoca or at our
discussion list
http://groups.google.com/group/scikit-crab
130. Conferências Recomendadas
- ACM RecSys.
–ICWSM: Weblogand Social Media
–WebKDD: Web Knowledge Discovery and Data Mining
–WWW: The original WWW conference
–SIGIR: Information Retrieval
–ACM KDD: Knowledge Discovery and Data Mining
–ICML: Machine Learning