93
ORGANICER Organizando Informação com Python Rodrigo Dias Arruda Senra IC-Unicamp / Globo.com PythonBrasil [8], RJ 2012

Organicer: Organizando informação com Python

Embed Size (px)

DESCRIPTION

Conteúdo parcial do que foi efetivamente apresentado na PythonBrasil [8] em novembro de 2012 no Rio de Janeiro.

Citation preview

Page 1: Organicer: Organizando informação com Python

ORGANICER

Organizando Informação com Python

Rodrigo Dias Arruda SenraIC-Unicamp / Globo.com

PythonBrasil [8], RJ 2012

Page 2: Organicer: Organizando informação com Python

Apenas um rapaz latino americano...

• Desenvolvedor e Projetista de Software(no mercado desde 1996, hoje na Globo.com )

• Engenheiro de Computação Graduação-MSc-(defesa PhD 10/12/12) IC-Unicamp

• Entusiasta de FLOSS(atuante na comunidade desde 1999)

2

Page 3: Organicer: Organizando informação com Python

Roteiro

• Motivação• Problemas• Organografos • Organicer (preview)

• Python Snippets

3

Page 4: Organicer: Organizando informação com Python

Motivação

Page 5: Organicer: Organizando informação com Python

5

Page 6: Organicer: Organizando informação com Python

5

Organization

Hierarchies

Automation

Clustering

Classification

Data Sharing

EvaluationDatabases

Classification

Information Extraction

Information Retrieval

CognitionDigital Libraries

Content Management

RDF

XML

RSS

Semantic Web

Personal Desktop

User Interfaces

Visualization

k-Means

Nearest Neighbors

Support Vector Machines

Neural Nets

Naïve Bayes

Jaccard

DiceCosine

Matching Wrappers

Taxonomy

Tagging

Folksonomy

Social Networks

Syndication

Feeds

Organographs

Python

Javascript

Go

NoSQL

Mongo

CouchDB

Fapesp

CNPq

CAPES

INCT

Crescenzi

Chen

Hull Sebastiani

Sokal

Page 7: Organicer: Organizando informação com Python

6

Page 8: Organicer: Organizando informação com Python

6

Quantos conceitos ?

Page 9: Organicer: Organizando informação com Python

6

Quantos conceitos ?

Em que ordem eles apareceram ?

Page 10: Organicer: Organizando informação com Python

6

Quantos conceitos ?

Em que ordem eles apareceram ?

Como categorizá-los ?

Page 11: Organicer: Organizando informação com Python

6

Quantos conceitos ?

Em que ordem eles apareceram ?

Como categorizá-los ?

De onde vieram ?

Page 12: Organicer: Organizando informação com Python

6

Quantos conceitos ?

Em que ordem eles apareceram ?

Como categorizá-los ?

De onde vieram ?

Quais as relações entre os conceitos ?

Page 13: Organicer: Organizando informação com Python

6

Quantos conceitos ?

Em que ordem eles apareceram ?

Como categorizá-los ?

De onde vieram ?

Quais as relações entre os conceitos ?

Quais são relevantes para mim agora ?

Page 14: Organicer: Organizando informação com Python

6

Quantos conceitos ?

Em que ordem eles apareceram ?

Como categorizá-los ?

De onde vieram ?

Quais as relações entre os conceitos ?

Quais são relevantes para mim agora ?

...

Page 15: Organicer: Organizando informação com Python

6

Quantos conceitos ?

Em que ordem eles apareceram ?

Como categorizá-los ?

De onde vieram ?

Quais as relações entre os conceitos ?

Quais são relevantes para mim agora ?

...[Miller 1956] regra 7±2: capacidade cognitiva é limitada

Page 16: Organicer: Organizando informação com Python

Problemas

Page 17: Organicer: Organizando informação com Python

8

Qual das categorias abaixo é a que melhor acomoda o objeto acima ?

Page 18: Organicer: Organizando informação com Python

9

Vermelhos ? Triangulos ? Relacionados ?

Motivação

Page 19: Organicer: Organizando informação com Python

Uma breve história no tempo

10

Page 20: Organicer: Organizando informação com Python

Uma breve história no tempo

10

Page 21: Organicer: Organizando informação com Python

Uma breve história no tempo

10

Page 22: Organicer: Organizando informação com Python

Uma breve história no tempo

10

Page 23: Organicer: Organizando informação com Python

Uma breve história no tempo

10

Page 24: Organicer: Organizando informação com Python

Uma breve história no tempo

10

Page 25: Organicer: Organizando informação com Python

Uma breve história no tempo

10

Page 26: Organicer: Organizando informação com Python

Uma breve história no tempo

10

Page 27: Organicer: Organizando informação com Python

Uma breve história no tempo

10Muito mais difícil que

Page 28: Organicer: Organizando informação com Python

O que há de errado ?

11

Page 29: Organicer: Organizando informação com Python

O que há de errado ?

11

1. Única categoria para conteúdo Multi-facetado

Page 30: Organicer: Organizando informação com Python

O que há de errado ?

11

1. Única categoria para conteúdo Multi-facetado

2. Categorias definidas manualmente

Page 31: Organicer: Organizando informação com Python

O que há de errado ?

11

1. Única categoria para conteúdo Multi-facetado

2. Categorias definidas manualmente

3. Critério não é explícito

Page 32: Organicer: Organizando informação com Python

O que há de errado ?

11

1. Única categoria para conteúdo Multi-facetado

2. Categorias definidas manualmente

3. Critério não é explícito

4. Relação estática de pertinência

Page 33: Organicer: Organizando informação com Python

O que há de errado ?

11

1. Única categoria para conteúdo Multi-facetado

2. Categorias definidas manualmente

3. Critério não é explícito

4. Relação estática de pertinência

5. Organização não é reutilizável

Page 34: Organicer: Organizando informação com Python

Objetivos

Page 35: Organicer: Organizando informação com Python

Objetivos

1. Avaliar hierarquias criadas manualmente

Page 36: Organicer: Organizando informação com Python

Objetivos

1. Avaliar hierarquias criadas manualmente

2. Reorganizar conteúdo dinamicamente

Page 37: Organicer: Organizando informação com Python

Objetivos

1. Avaliar hierarquias criadas manualmente

2. Reorganizar conteúdo dinamicamente

3. Reutilizar organização

Page 38: Organicer: Organizando informação com Python

Avaliar Hierarquias

13

Page 39: Organicer: Organizando informação com Python

Avaliar Hierarquias

13

muito conteúdo junto

Page 40: Organicer: Organizando informação com Python

Avaliar Hierarquias

13

muito conteúdo junto

duplicado, deslocado

Page 41: Organicer: Organizando informação com Python

Avaliar Hierarquias

13

muito conteúdo junto

muitos agregadores

duplicado, deslocado

Page 42: Organicer: Organizando informação com Python

Avaliar Hierarquias

13

muito conteúdo junto

muitos agregadores

duplicado, deslocado

profundo demais

Page 43: Organicer: Organizando informação com Python

Avaliar Similaridade

DendogramaMatriz de Similaridade

Page 44: Organicer: Organizando informação com Python

Reorganizar conteúdo dinamicamente

15

Alice

Beto

2011

2008

2011

Autor

Data de Publicação

Artigo 1

Artigo 2

Artigo 3

Page 45: Organicer: Organizando informação com Python

Reorganizar conteúdo dinamicamente

15

Alice

Beto

2011

2008

2011

Autor

Data de Publicação Autor

Data de Publicação

Artigo 1

Artigo 2

Artigo 3

Page 46: Organicer: Organizando informação com Python

Reorganizar conteúdo dinamicamente

15

Alice

Beto

2011

2008

2011 Alice

Beto

2008

2011

Alice

Autor

Data de Publicação Autor

Data de Publicação

Artigo 1

Artigo 2

Artigo 3

Page 47: Organicer: Organizando informação com Python

Reorganizar conteúdo dinamicamente

15

Alice

Beto

2011

2008

2011 Alice

Beto

2008

2011

Alice

Autor

Data de Publicação Autor

Data de Publicação

Artigo 1

Artigo 2

Artigo 3

Page 48: Organicer: Organizando informação com Python

Reorganizar conteúdo dinamicamente

15

Alice

Beto

2011

2008

2011 Alice

Beto

2008

2011

Alice

Autor

Data de Publicação Autor

Data de Publicação

Artigo 1

Artigo 2Artigo 3

Page 49: Organicer: Organizando informação com Python

Reorganizar conteúdo dinamicamente

15

Alice

Beto

2011

2008

2011 Alice

Beto

2008

2011

Alice

Autor

Data de Publicação Autor

Data de Publicação

Artigo 1

Artigo 2

Artigo 3

Page 50: Organicer: Organizando informação com Python

Reorganizar conteúdo dinamicamente

15

Alice

Beto

2011

2008

2011 Alice

Beto

2008

2011

Alice

Autor

Data de Publicação Autor

Data de Publicação

a TAREFA é importante!

Artigo 1

Artigo 2

Artigo 3

Page 51: Organicer: Organizando informação com Python

Reutilizar organização

16

Page 52: Organicer: Organizando informação com Python

Reutilizar organização

16

Page 53: Organicer: Organizando informação com Python

Reutilizar organização

16

Page 54: Organicer: Organizando informação com Python

Organografos

Page 55: Organicer: Organizando informação com Python

Metodologia

18

coleção

Page 56: Organicer: Organizando informação com Python

Metodologia

18

coleção

organizar

Page 57: Organicer: Organizando informação com Python

Metodologia

18

coleção

organizar

avaliar

Page 58: Organicer: Organizando informação com Python

Metodologia

18

coleção

organizar

avaliar

reorganizar

Page 59: Organicer: Organizando informação com Python

Metodologia

18

coleção

organizar

avaliar

reorganizar

compartilhar

Page 60: Organicer: Organizando informação com Python

19

Page 61: Organicer: Organizando informação com Python

19

Organografos

... são artefatos que tornam explícito como organizar informação digital no contexto de uma tarefa específica.

Page 62: Organicer: Organizando informação com Python

NLP

Autor doOrganofrafo

MLDomínio

Papéis

OntologiasClassificadoresExtração de

Informação

Algoritmos

SimilaridadeOrganografo

Algoritmos de Visualização

20

Iteradores

Data Container UX

Autoria de Organografo

Tarefa !

Page 63: Organicer: Organizando informação com Python

NLP

Autor doOrganofrafo

MLDomínio

Papéis

OntologiasClassificadoresExtração de

Informação

Algoritmos

SimilaridadeOrganografo

Algoritmos de Visualização

20

Iteradores

Data Container UX

Autoria de Organografo

Tarefa !

• patterns• dictionaries• rules• probabilities• templates/wrappers

Page 64: Organicer: Organizando informação com Python

NLP

Autor doOrganofrafo

MLDomínio

Papéis

OntologiasClassificadoresExtração de

Informação

Algoritmos

SimilaridadeOrganografo

Algoritmos de Visualização

20

Iteradores

Data Container UX

Autoria de Organografo

Tarefa !

• matching• dice• jaccard• overlap• cosine

Page 65: Organicer: Organizando informação com Python

NLP

Autor doOrganofrafo

MLDomínio

Papéis

OntologiasClassificadoresExtração de

Informação

Algoritmos

SimilaridadeOrganografo

Algoritmos de Visualização

20

Iteradores

Data Container UX

Autoria de Organografo

Tarefa !

• FOAF• Dbpedia• Schema.org• Freebase• MusicBrainz• Geonames

Page 66: Organicer: Organizando informação com Python

NLP

Autor doOrganofrafo

MLDomínio

Papéis

OntologiasClassificadoresExtração de

Informação

Algoritmos

SimilaridadeOrganografo

Algoritmos de Visualização

20

Iteradores

Data Container UX

Autoria de Organografo

Tarefa !

• Naive Bayes• SVM• Nearest Neighbors• LDA• LSI

Page 67: Organicer: Organizando informação com Python

NLP

Autor doOrganofrafo

MLDomínio

Papéis

OntologiasClassificadoresExtração de

Informação

Algoritmos

SimilaridadeOrganografo

Algoritmos de Visualização

20

Iteradores

Data Container UX

Autoria de Organografo

Tarefa !

• Filesystem• Gmail• Evernote• Delicious• Dropbox, Box

Page 68: Organicer: Organizando informação com Python

NLP

Autor doOrganofrafo

MLDomínio

Papéis

OntologiasClassificadoresExtração de

Informação

Algoritmos

SimilaridadeOrganografo

Algoritmos de Visualização

20

Iteradores

Data Container UX

Autoria de Organografo

Tarefa !

• Fuse, Dokan• Infoviz• D3

Page 69: Organicer: Organizando informação com Python

NLP

Autor doOrganofrafo

MLDomínio

Papéis

OntologiasClassificadoresExtração de

Informação

Algoritmos

SimilaridadeOrganografo

Algoritmos de Visualização

20

Iteradores

Data Container UX

Autoria de Organografo

Tarefa !

Page 70: Organicer: Organizando informação com Python

acmccs98 = acm_extractor(‘http://www.acm.org/about/class/1998/ccs98.xml’)

organograph: input: collection(‘file:///some/local/dir/docs’) output: collection(‘rodsenra@dropbox:/output’) id: ‘docs by year’ level: label: format(‘YYYY’, input.Vcnt.publication_date) level: classifier: naive_bayes(classes=acmccs98.Vagg[1], train=acmccs98.Vagg[2:] + acmccs98.Vcnt) label: classifier.class

Page 71: Organicer: Organizando informação com Python
Page 72: Organicer: Organizando informação com Python

Organicer

Page 73: Organicer: Organizando informação com Python
Page 74: Organicer: Organizando informação com Python

Hierarquia de Origem

Page 75: Organicer: Organizando informação com Python

Hierarquia de Origem

Pre-processamento

BeautifulSouppyPdf

Page 76: Organicer: Organizando informação com Python

Hierarquia de Origem

ExtraçãoNLTK

Pre-processamento

BeautifulSouppyPdf

Page 77: Organicer: Organizando informação com Python

Hierarquia de Origem

ExtraçãoNLTK

Pre-processamento

BeautifulSouppyPdf

Índice deFacetas

pymongo

Page 78: Organicer: Organizando informação com Python

Hierarquia de Origem

Workflow de Transformação

ExtraçãoNLTK

Pre-processamento

BeautifulSouppyPdf

Índice deFacetas

pymongo

Page 79: Organicer: Organizando informação com Python

Hierarquia de Origem

Workflow de Transformação

ExtraçãoNLTK

Pre-processamento

BeautifulSouppyPdf

Índice deFacetas

pymongo

networkx gensimnumpy scikit-learn

Page 80: Organicer: Organizando informação com Python

Hierarquia de Origem

Workflow de Transformação

HierarquiaResultante

Visualização

ExtraçãoNLTK

Pre-processamento

BeautifulSouppyPdf

Índice deFacetas

pymongo

networkx gensimnumpy scikit-learn

Page 81: Organicer: Organizando informação com Python

Hierarquia de Origem

Workflow de Transformação

HierarquiaResultante

Visualização

ExtraçãoNLTK

Pre-processamento

BeautifulSouppyPdf

Índice deFacetas

pymongo

networkx gensimnumpy scikit-learn

matplotlibObsPy

InfoViz.jsD3.js

Page 82: Organicer: Organizando informação com Python

Hierarquia de Origem

Workflow de Transformação

HierarquiaResultante

Visualização

Navegação daHierarquia

Iterador

ExtraçãoNLTK

Pre-processamento

BeautifulSouppyPdf

Índice deFacetas

pymongo

networkx gensimnumpy scikit-learn

matplotlibObsPy

InfoViz.jsD3.js

Page 83: Organicer: Organizando informação com Python

Hierarquia de Origem

Workflow de Transformação

HierarquiaResultante

Visualização

Navegação daHierarquia

Iterador

ExtraçãoNLTK

Pre-processamento

BeautifulSouppyPdf

Índice deFacetas

pymongo

networkx gensimnumpy scikit-learn

matplotlibObsPy

InfoViz.jsD3.js

os.walkpydeliciousevernote

Page 84: Organicer: Organizando informação com Python

Conclusão

Page 85: Organicer: Organizando informação com Python

Resumo

• Organografos: metodologia, arquitetura,utilização

• Capturar a tarefa por trás de uma organização

• Avaliar, reorganizar e compartilhar.

27

Page 86: Organicer: Organizando informação com Python

Agradecimentos

• Laboratório de Sistemas de Informação (IC-Unicamp)

http://www.lis.ic.unicamp.br• Brazilian Institute for Web Science Research

http://webscience.org.br• Globo.com

28

Page 87: Organicer: Organizando informação com Python

Obrigado a todos pela atenção.

Rodrigo Dias Arruda Senrahttp://rodrigo.senra.nom.br

[email protected]

As opiniões e conclusões expressas nesta apresentação são de exclusiva responsabilidade de Rodrigo Senra.

Não é necessário requisitar permissão do autor para o uso de partes ou do todo desta apresentação, desde que não sejam feitas alterações no conteúdo reutilizado e que esta nota esteja presente na íntegra no material resultante. Em caso de alterações, favor consultar o autor.

Imagens e referências para outros trabalhos nesta apresentação permanecem propriedade daqueles que detêm seus direitos de copyright.

Page 88: Organicer: Organizando informação com Python

Hierarquia de Origem

HierarquiaResultante

Usuário do Organografo

Índice deFacetas

Pre-processamento

Extração

Navegação daHierarquia

Workflow de Transformação

Execução de Organografo

FCat() FHil()

Visualização

Iterador

Page 89: Organicer: Organizando informação com Python

Organicer

31

Page 90: Organicer: Organizando informação com Python

Organicer

31

Page 91: Organicer: Organizando informação com Python

Organicer

31

Page 92: Organicer: Organizando informação com Python

Organicer

31

Page 93: Organicer: Organizando informação com Python

Organicer

31