Mostrando postagens com marcador mineracao de dados. Mostrar todas as postagens
Mostrando postagens com marcador mineracao de dados. Mostrar todas as postagens
Olá pessoal,

Hoje tive a oportunidade de ministrar uma palestra ( a convite do meu colega Péricles Miranda) no X Seminário de Engenharia da Computação (SEC) na Escola Politécnica de Pernambuco (POLI), minha antiga universidade o qual me graduei.  Foi um bom bate-papo com os estudantes presentes sobre sistemas de recomendação, área de minha pesquisa que realizei no meu mestrado e pretendo continuar meus estudos.

Deixo os slides disponíveis da palestra:



O trabalho foca na construção de sistemas de recomendação para redes sociais educativas.  O fruto deste trabalho foi contemplado na rede social para concurseiros Atépassar, considerado hoje como a maior rede social brasileira para estudantes de concursos públicos. Recomendo a visita!


Atenciosamente,

Marcel Caraciolo

Palestra sobre sistemas de recomendação no CIN - UFPE

Nesta última segunda-feira dei uma palestra em convite do programa PET do Centro de Informática da Universidade Federal de Pernambuco sobre minha área de pesquisa que envolve sistemas de recomendação e as oportunidades que ela oferece.

Foi uma palestra bem dinâmica, onde apresentei os conceitos iniciais e as minhas contribuições, em especial, o framework Crab que é um toolkit para construção de sistemas de recomendação em Python, Scipy e Numpy.

Para mais informações visitar o link a seguir.

Os slides se encontram no meu outro blog A.I. Motion .

Abaixo algumas fotos durante a palestra:




Agradeço à Mateus pelo convite!

Atenciosamente,

Marcel Caraciolo

Olá a todos,

Estive meio ausente em posts no meu blog, pois estou em ritmo acelerado de escrita da minha dissertação de mestrado que está para ser defendida em meados de junho. Enquanto isso, eu decidi falar um pouco sobre conclusões e idéias próprias relacionadas a este trabalho em andamento. Este trabalho inclui uma proposta de um sistema de recomendação, uma sub-área de uma área maior de filtragem de informação, derivada de uma linha de pesquisa de mineração de dados.  O objetivo é propor e validar um sistema de recomendação que incorpore reviews, isto é, opiniões e comentários de usuários sobre produtos e serviços visando recomendar sobre um contexto móvel (dispositivos móveis) para um usuário tais produtos ou serviços do seu interesse. 

Por exemplo, imagine você em busca de um restaurante para comer e que hoje você esteja interessado em comer sushi. Como você faria esta busca por um restaurante em sua cidade? Quais fontes você usaria ?   Atualmente temos diversos repósitorios on-line em redes sociais e sites web especializados em agregar opiniões e críticas de usuários, mas todo este conteúdo ainda não é sumarizado ou processado de forma eficiente a fim de gerar uma opinião precisa sobre o que usuário deseja: Qual é a melhor opção de restaurante para mim naquele momento ou naquela cidade ?  

Percebe-se múltiplas váriaveis que podem influenciar o poder de decisão de compra do usuário: Localização, opiniões dos amigos, opiniões de especialistas e opiniões de usuários que tem interesses e gostos similares a você. Isto ainda dificulta mais se considerarmos em um ambiente móvel, onde os requisitos são mais restritos onde você precisa de uma informação rápida e bem objetiva para tomada de decisão.

Meu trabalho visa exatamente resolver este problema, com uma proposta de um framework de recomendação que combine as melhores características das técnicas de filtragem de conteúdo e de técnicas de filtragem colaborativa a fim de construir um meta-recomendador, onde acreditamos que incorporando informações sobre o produto/serviço e opiniões/ críticas de usuários similares ao usuário ativo, este possa sugerir uma lista de recomendação rankeada apropriada com os melhores restaurantes da cidade naquele momento diretamente no seu aparelho móvel.

Para isso envolveremos o estudo de técnicas de mineração de texto, especificamente processamento de linguagem natural para extrair e sumarizar as críticas de usuários. Utilizaremos também de técnicas de classificação de texto como uma área que está em forte ascensão nesta linha de pesquisa que é análise de sentimentos, para extrair a polaridade (positivo ou negativo) de um comentário. E com estas informações sumarizadas e os metadados provenientes da descrição do serviço (localização, categorias, etc) podemos combinar essas informações em um meta-recomendador a fim de sugerir os serviços que melhor atendem os requisitos de um usuário em um determinado local e tempo (contexto móvel).

O escopo já está definido e o trabalho já está em andamento e experimentos. Estou utilizando de uma base extraída do Foursquare com mais de 800 estabelecimentos e 1000 reviews sobre estes estabelecimentos, onde implementarei um protótipo móvel a fim de validar este framework, que obviamente é apenas o início de muitos trabalhos futuros a realizar especialmente onde se deve considerar outros quesitos importantes como: segurança, escabilidade, desempenho, etc.

Um dos trabalhos futuros que eu gostaria aqui de comentar é a influência das redes sociais no processo de recomendação. Estamos vendo cada vez mais uma nova tendência a se firmar que é o social-commerce. De acordo com especialistas , o social - commerce é o e-commerce que envolve o relacionamento entre pessoas. Com o surgimento das redes sociais, o comércio começou a se expandir para os relacionamentos no universo digital,  onde estimula-se a compra em um potencial mercado consumidor, onde há, no mundo, aproximadamente um bilhão de pessoas/consumidores nas redes sociais.   Um dos reflexos disso são os próprios sites de compra coletiva, que estão se viralizando pelo mundo todo e utiliza de mecanismos coletivos (sociais) para oferta de promoções e produtos.

Sites de Compra Coletiva Brasileiros


Mas o que venho aqui destacar é que estamos cada vez mais buscando respostas para perguntas que temos que são pontuais ou específicas. Irei dar um exemplo, eu estou interessado em comer um tipo de temaki específico como filadélfia (comida japonesa).  Eu poderia simplesmente utilizar um sistema de recomendação que procurasse por termos que envolvesse temakis e após um processamento ele já poderia me dar uma resposta pré-elaborada de restaurantes que oferecem temakis de qualidade em minha cidade. Mas o cenário é bem mais complicado do que isso,  além de as opiniões serem muitas vezes genéricas (não há esse nível de detalhamento sobre temakis filadélfia), focando apenas em serviços e qualidade como um todo do restaurante, temos o problema da influência social (as opiniões são genéricas ou de desconhecidos).  Muitos acreditam que a opinião de um amigo ou alguém muito próximo a você pode  influenciar decisivamente no processo de escolha de compra.  Então, porque não recorrer aos meus amigos ?  As opiniões deles contam e a rede social neste cenário pode nos ajudar nesta tarefa.


Foi aí que veio o que eu chamo de um sistema colaborativo de recomendação baseado em perguntas e respostas móvel.  Alguns sistemas já começaram a desenvolver isto e um claro exemplo é o Aadvark que foi comprado pela Google e foca em assistir usuários , onde os mesmos fazem perguntas e o sistema procura pessoas que possam melhor responder tais perguntas, funcionando como um sistema inteligente de perguntas e respostas.

Aadvark no Iphone

Basicamente,  os sistema que eu proponho é de você fazer perguntas para outros usuários deste sistema já cadastrados sobre lugares específicos ou serviços específicos e em vez de receber uma lista de recomendação de lugares processadas pelo sistema, você vai receber respostas de pessoas de verdade sobre estes lugares/serviços em questão.  

Então, se eu perguntar agora ao sistema onde eu poderia comer um temaki filadélfia de qualidade em minha cidade, o sistema iria procurar pessoas que estariam em restaurantes que oferecem temaki, combinado pela influência social destas pessoas (daria prioridade aos meus amigos até desconhecidos) e lançaria esta pergunta para tais pessoas. Em questão de minutos você receberia respostas de usuários  de vários pontos da cidade informando um bom restaurante, opiniões bem específicas e até descobrir que seu melhor amigo está naquele restaurante e te convida para acompanhá-lo.


               

 Sistema de Perguntas e Respostas Colaborativo sobre Contexto Móvel

Um outro cenário ilustrativo apropriado para este tipo de serviço, seria por exemplo, saber se um restaurante está cheio naquele momento. Se eu perguntasse: 'Estou querendo comer no Bonaparte, agora? Alguém sabe dizer se tá lotado por aí ?'  Em minutos eu recebesse a resposta de alguns usuários da cidade já dizendo:  'Pode vir aqui tá tranquilo demais!'  ou 'Venha para a filial do Shopping Plaza tá tendo uma promoção no frango empanado!'   Vejam a quantidade  de opiniões em tempo real e a descoberta de serviços e promoções que eu recebo tudo em tempo real e tudo isto direto do meu telefone.

Esse serviço ainda pode ser agregado com serviços de localização como Foursquare, Gowalla ou Facebook que já utilizaria do seu histórico de check-ins de lugares que você frequenta e estimula por meio de perguntas e respostas criando um tipo de jogo em que te premia com pontos à medida que você vai interagindo ainda mais com o sistema (seja perguntando ou respondendo).

Um dos grandes benefícios também desta aplicação é o estímulo de interação social entre os usuários. Pois, você poderia agradecer a resposta de um usuário e até criar um novo elo de amizade, se você desejar continuar a conversação.  Acredito que sistemas colaborativos de Perguntas e respostas sobre um contexto móvel serão uma tendência em breve, ou se já não está em desenvolvimento, de aplicativos que estão por vir para dispositivos móveis.

Em breve darei mais informações sobre detalhes da minha dissertação, espero que tenham gostado deste post com uma das minhas idéias e trabalhos correntes

Para mais informações sobre sistemas colaborativos, perguntas e respostas e recomendação procurem por community Q&A location recommendations no Google, sem dúvidas você vai ficar maravilhado com a quantidade de posts, estudos e artigos sobre esta área.

Atenciosamente,

Marcel Caraciolo

Olá pessoal,

Estive ausente no meu blog pois estou em uma fase crítica na escrita da tese do meu mestrado e outros projetos que estou trabalhando atualmente e que em breve serão comentados em futuros posts por aqui.

Uma das áreas que estou me especializando é no campo de pesquisa de recomendações, em especial, na construção de técnicas e algoritmos de mineração de dados para descoberta e oferta de produtos e serviços por meio de dispositivos móveis.

A construção de um agente inteligente capaz de realizar recomendações baseado nas suas preferências e das pessoas próximas a você considerando aspectos como proximidade, grau de confiança e interesses em comum podem tornar a experiência de compras muito mais rica e o mais importante auxiliar o usuário no processo de decisão de compras.

Este é um dos objetivos do meu trabalho.  De forma suscinta posso resumir que a missão deste trabalho serve como um guia para acompanhar as novas tendências na web e no mundo mobile. A descoberta e a oferta de conteúdo personalizado exige que os aplicativos sejam aprimorados a fim de que possam oferecer um produto ou oferta específica para um usuário.  

Como fazer isso ?  Há diversas maneiras de executá-la. Uma das abordagens é a modelagem de uma técnica inteligente que possa efetuar recomendações personalizadas baseada no cruzamento de informações de histórico de compras do usuário e nos locais em que estes mais frenquentaram (derivado do conceito de check-in).



A questão a se solucionar é : 'Como podemos ser capazes de oferecer estas  ofertas e serviços personalizadas  que possam ser do seu interesse e ao mesmo tempo oferecer recomendações associadas a coisas que você já sabe o que pretende fazer'.

A grande vantagem de associar-se ao contexto móvel se deve que com a mobilidade é possível obtermos o histórico de lugares em que o usuário frequentou e como essas informações podem ser úteis para descoberta e entrega dessas ofertas.

Vejamos alguns cenários para exemplificação:

" Baseado nesses três últimos restaurantes que você esteve, há outros seis restaurantes que possam ser do seu interesse. ";

" Olá você acabou de chegar em Curitiba, embora você seja novo em Chicago, mas de acordo com seu histórico de check-ins em Recife, aqui está uma listagem de lugares ou serviços que você pode aproveitar enquanto você estiver por aqui";

Imaginaram as possibilidades ? Estamos saíndo da era da recomendação clássica onde apenas avaliações (reviews), similaridade entre usuários são suficientes para gerar uma recomendação. A adição desta nova variável no contexto de recomendação poderá enriquecer a descoberta de serviços e recomendações geo-referencíaveis sensíveis ao tempo (Sim, o tempo também influencia, ou você acha que ele vai oferecer um restaurante de café da manhã no meio da noite para você ?). 

Uma empresa que recentemente vem trabalhando nesta visão é a Bizzy, que recentemente construiu um engine de recomendação de lugares e serviços baseado nos interesses de usuários similares e na listagem dos seus lugares favoritos. 



Por fim, gostaria de finalizar esse pequeno texto introdutório  na aplicação neste tipo de recomendação em um novo nicho de mercado que está girando na casa de milhões de doláres: As compras coletivas.

Com algoritmos e técnicas de recomendações deste porte, as ofertas em sites de compras coletivas poderiam ser enriquecidas. O usuário além de receber ofertas personalizadas de acordo com seu interesse, visto que há milhares de sites de compras coletivas que inundam de ofertas diárias e o mais importante é a adição do componente de localização móvel, onde não só os produtos do seu  possível interesse, mas as mais próximas a você ou até onde a maioria dos seus amigos também estão. 

Ofertas personalizadas geo-referencíaveis sensíveis a tempo. É nisto que venho batendo a tecla e é isto que venho observado nas grandes empresas Web direcionando seus esforços.

No Brasil, as compras coletivas estão aquecidas. Será que não chegará o momento de haver um filtro para recomendação destas ofertas para usuários cansados de receber tantas ofertas ?  Ou enriquecer mais a experiência de compra por meio de descontos especiais de acordo com o seu histórico de lugares e das pessoas similares a você. Será este o início da compra coletiva Geo-Localizável ?



Novas experiências para explorar, e as recomendações vieram para ficar.  Estamos saindo da era da informação para a era da recomendação e já visando a personalização.

Atenciosamente,

Marcel Caraciolo

Depoimento e Slides das Palestras no PythonBrasil 6 em Curitiba

Olá a todos,


Estou aqui em Curitiba no último dia antes de partir para Recife. Ontem finalizamos a saga de palestras e mini-cursos do Sexto Encontro da Comunidade de Python Brasileira (PythonBrasil).  O que posso comentar? 

O evento foi espetacular, excelente nível de palestras e discussões promovidas durante e após encontro.  Além de aumentar significativamente meu networking, tive a oportunidade de superar limites. Para vocês terem idéia, em apenas 3 dias eu desenvolvi 2 demonstrações com sistemas de recomendação em Python, desenvolvi um mini-crawler e um analisador 3D em cima do Ubigraph de palestras. Experiência fantástica que mostra que se você persistir, você atinge seus objetivos! Como diriam lá a metodologia era XGH (Extreme Go Horse) e FDD (Fear Driven Development) ou seja, testes são para os fracos!  

Durante esses dias apresentei algumas palestras do PythonBrasil: 1 palestra na trilha de palestras e 2 palestras relâmpago.   Uma foi sobre Python em sistemas de recomendação, o qual falei sobre Python aplicado nesta excitante área com destaque a diversos pequenos exemplos usando Twitter e Sites de Compra Coletiva brasileiros a fim de recomendar usuários e promoções.  O feedback foi muito bom e acredito que muita gente gostou.  Infelizmente, minha palestra competiu com outra no mesmo horário muito boa do pessoal da Yahoo sobre extração de dados em sites públicos.
Seguem slides e algumas fotos:






Algumas fotos das minhas palestra:

Quem é Marcel ?

Tudo convergindo para Web

Frases inspiradoras

Falando sobre Python
No segundo dia tive  a oportunidade de palestrar sobre o PUG-PE, uma palestra institucional para apresentar o modelo de grupo de usuários de Pernambuco (PUG-PE) que está crescendo na região Nordeste. Essa modalidade de palestra foi chamada de Palestra Relâmpago, o qual você tem 5 minutos para falar algo. Acreditem nesta primeira fiquei tão ansioso sem saber se dava para passar 25 slides em 5 minutos, que acabei fazendo em 3 min e meio! rs rs.
Mas pessoal deu para pegar o espírito e acredito que foi bem entendida o qual recebi vários aplausos em nome de toda célula. Não tenho fotos no momento mas em breve postarei  fotos da minha primeira palestra relâmpago. Seguem os slides:




Neste mesmo dia à noite eu tive uma idéia mirabolante! Ainda tinha mais um encontro relâmpago no outro dia, então eu decidi em 24 horas desenvolver um mini-crawler em cima da página de palestras do PythonBrasil e fazer uma análise em cima dos dados extraídos.  Em 24 horas escrevi esse código (hospedado no GitHub) e montei alguns slides falando sobre algumas observações interessantes sobre as palestras submetidas ao Python Brasil deste ano. Vocês podem ver o resumo dos slides na apresentação abaixo:







Nesta mesma palestra aproveitei para montar uma  divisão dos palestrantes (agrupamentos) de acordo com as temáticas em comum (estas extraídas em palavras-chave a partir do resumo das palestras encontradas no site). Usando a ferramenta Ubigraph que tem suporte a Python, adicionei os palestrantes com as respetivas temáticas de suas palestras a um algoritmo estatístico de clusterização bem conhecido chamado K-Means. Por sinal foi utilizado por mim em um dos experimentos prévios meus com Twitter que pode ser encontrado neste post.

Gravei um vídeo com os grupos sendo construídos e visualizados pelo Ubigraph, vejam abaixo:




Ainda não tenho fotos desta palestra relâmpago e nem os vídeos ainda, mas com certeza logo logo estarão disponíveis para visualização neste blog.

O que posso resumir do encontro Python Brasil é que foi sensacional, consegue juntar muita gente boa em um lugar só para discutir diversos temas relacionados a software livre e Python. Além de aumentar significativamente seu networking, te dá a liberdade de poder experimentar a apresentação de palestras a profissionais, estudantes e curiosos de excelente nível  tecnológico no cenário brasileiro. Embora com algumas falhas técnicas na parte da organização das palestras como a realização das mesmas de temas similares no mesmo horário e a internet que estava muito ruim.  Mas espero que isso possa ser contornado no próximo encontro que já tem local: São Paulo!

Não podia deixar de comentar as palestras de  Fábio Akita sobre Ruby e Leah Culver sobre Empreendorismo com Python que foram também de alto nível!

Vou deixar  aqui também 3 fotos que me marcaram nestes dias de Python Brasil:

Eu com o  Grande TUX!!

Conheça seus limites e supere-os!

Lembre-se no fim o que importa são os amigos que você faz!

Até Recife!!!

Atenciosamente,

Marcel Caraciolo

Olá a todos,

Poucos conhecem esta classe escondida em Python, mas que tem me ajudado bastante na construção de pequenos parsers e analisadores léxicos em alguns projetos que estou trabalhando. Estou falando do módulo "re", responsável pelo uso de expressões regulares em códigos Python cuja uma das classes  não documentadas oficialmente, o Scanner  pode nos auxiliar nestas tarefas.

A classe Scanner ainda não documentada oficialmente por estar ainda em experimentação pode ser bastante útil no processo de tokenização de textos, uma fase de pré-processamento importante em mineração de textos.

O seu uso é bastante simples, basta passar como parâmetro uma lista de expressões regulares e suas respectivas funções callback. Quando uma string é "casada", a mesma é convertida em um respectivo token por meio da chamada da função callback associada e assim adicionada à uma lista de tokens a serem retornados. Se o scanner atinge um ponto em que não há um token a ser "casado",  o mesmo retorna a lista de tokens identificados até aquele ponto e o restante do texto em string que não foi casado.

Vamos a um exemplo prático!  Um dos cenários para o seu uso é os tweets espalhados pelo microblog social Twitter.  Se quisessémos construir um simples analisador léxico para separar links, hashtags, usernames e texto poderíarmos fazer de diversas maneiras. Entretanto com a classe re.Scanner esta atividade torna-se bem mais eficiente e rápida visto que ela já abstrai ao desenvolvedor a necessidade de implementar um analisador que varre as strings à busca de expressões regulares definidas pelo desenvolvedor.

Então se montarmos nosso scanner para extrair dados do twitter conforme a figura abaixo:

Exemplo de Extrator de Tweets

E executá-lo, veremos como resultado:

Resultado do Scanner

Podemos observar pela figura acima que após executar nosso pequeno parser, conseguimos extrair com sucesso os tokens relacionados a Retweets, nomes de usuários, palavras, HashTags e até URl's . Para quem trabalha com processamento de linguagem natural (NLP) isto pode ser uma útil ferramenta para a fase de pré-processamento em mineração de textos.

Com isso concluo a apresentação da classe Scanner escondida na biblioteca padrão que vem ao Python.
Quem não entender muito o que vem nessas strings que começam com  r'', visite meu post sobre expressões regulares, pode ser útil para quem está começando!

Espero ter ajudado pessoal,

Atenciosamente,

Marcel Caraciolo

Referências:

Palestra sobre Expressões Regulares e Python no III PUG-PE

Olá pessoal,

Gostaria de divulgar o material da minha palestra que dei no último sábado no III Encontro do Grupo de Usuários de Python de Pernambuco (PUG-PE).

Neste encontro, tive a oportunidade de falar sobre minhas experiências e mostrar um guia com exemplos de como utilizar expressões regulares com a linguagem de programação Python.

Para quem não conhece Expressões Regulares, ela é uma linguagem formal oriunda da teoria da computação e teoria dos autômatos que ajuda no tratamento e parseamento de arquivos, especialmente quando se trata de dados em grande volume. Pesquisar, validar  e filtrar elementos podem se tornar um trabalho exaustivo se manuseado manualmente. Técnicas e Algoritmos como Expressões Regulares ajudam a facilitar a extração de conteúdo de forma bem eficiente.

Como a linguagem Python suporta nativamente expressões regulares, acaba-se sendo uma linguagem atrativa para introdução e manuseio de expressões regulares, devido à sua simplicidade e legibilidade na produção de código.

Essa ferramenta é extremamente útil para tratamento de arquivos texto, quando você tem padrões os quais você quer extrair ou filtrar de um texto. Recomendo a todos o uso desta ferramenta! 


Abaixo seguem os slides e o código Python utilizado na apresentação.







Atenciosamente,

Marcel Caraciolo
Olá pessoal,

Publiquei no meu outro blog sobre Mineração de Dados e Inteligência Articial (http://aimotion.blogspot.com)  sobre meu novo projeto que estou desenvolvendo para obtenção do título de mestre em ciência da computação pela UFPE (Universidade Federal de Pernambuco).  Eu dou um breve resumo sobre os desafios, motivação e proposta para desenvolvimento de um sistema de recomendação inteligente focado em mídias móveis.

O resumo está em inglês, mas quem estiver interessado em ler e discutir comigo sobre alguns aspectos e críticas sobre esta proposta. Se sintam à vontade!!  



Áreas do conhecimento: Mineração de Dados,  Sistemas de Recomendação, Mídias Móveis, Web Services, Geolocalização, SOA, Middleware, Redes Sociais, Microblogs, Inteligência Coletiva e Aprendizagem de Máquina.

Atenciosamente,

Marcel
top