Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Organizando a informação pública brasileira com Python e NLP

Gabriel Jordão
October 02, 2013
230

Organizando a informação pública brasileira com Python e NLP

Gabriel Jordão

October 02, 2013
Tweet

Transcript

  1. Organizando a informação pública brasileira com Python e NLP Gabriel

    Jordão Engenheiro de Software na JusBrasil
  2. • A informação Pública Brasileira • Problemas • Organizando a

    informação
  3. A informação pública brasileira

  4. +200k páginas A4 por dia

  5. Diários Oficiais

  6. Conforme Lei Municipal nº 10.919/90, regulamentada pelo Decreto Municipal nº

    29.586 /91, que dispõe sobre a obrigatoriedade de o Executivo Municipal dar publicidade à poda e corte de árvores
  7. Concursos Gastos públicos Processos E muito mais informações relevantes Não

    é só isso…
  8. Parece perfeito...

  9. Mas no Brasil, dificilmente é... FAIL

  10. E o cidadão?

  11. Lentos Com busca precária Documentos não estruturados Diários antigos inacessíveis

    Diversos sites
  12. Por dia

  13. Para ler um diário

  14. E aí, vamos melhorar isso? NLP, Estruturação, Busca unificada, etc

  15. None
  16. Vamos começar a processar essa informação!

  17. Basta crawlear e processar os pdfs!

  18. None
  19. None
  20. None
  21. +700k acessos por dia

  22. None
  23. Mas e o Python e NLP nessa história?

  24. Como faz?

  25. Identificação de entidades (NER) Pessoas, Órgãos, Datas, Atos, Ações, etc

  26. O MINISTRO DE ESTADO CHEFE DA CONTROLADORIA-GERAL DA UNIÃO ,

    no uso da competência que lhe foi subdelegada pelo art. 1º da Portaria nº 1.056, do Ministro de Estado Chefe da Casa Civil da Presidência da República, de 11 de junho de 2003, resolve: ...
  27. Domínio específico para linguagem jurídica

  28. Machine Learning Aprendizado supervisionado Aprendizado não supervisionado

  29. Precisamos de dados!

  30. Interface para treinamento

  31. Arquitetura do Projeto Training Interface Flask Backend Scikit Learn Celery

    Flask Etc... MySQL Training Set Service HBase Elastic Search Redis Etc... Restful
  32. Na prática!

  33. Machine Learning com Python

  34. None
  35. Classificando

  36. svm.LinearSVC

  37. svm.LinearSVC >>> from sklearn import svm >>> features = [[2,

    120], [4, 950]] >>> labels = [0, 1] >>> clf = svm.LinearSVC() >>> clf.fit(features, labels) >>> clf.predict([[4, 960]]) array([1])
  38. Features para o NER

  39. None
  40. Tipo da palavra Romano UPPER CASE Camel Case Número Pontuação

    Etc...
  41. O Reitor em exercício da Universidade Federal de São Carlos,

    no uso de suas atribuições legais e estatutárias Contexto
  42. Convertendo os dados

  43. >>> measurements = [ ... {'city': 'Sao Paulo', 'temperature': 33.},

    ... {'city': 'Rio de Janeiro', 'temperature': 12.}, ... {'city': 'Salvador', 'temperature': 18.}, ... ] >>> from sklearn.feature_extraction import DictVectorizer >>> vec = DictVectorizer() >>> vec.fit_transform(measurements).toarray() array([[ 1., 0., 0., 33.], [ 0., 1., 0., 12.], [ 0., 0., 1., 18.]]) >>> vec.get_feature_names() ['city=Sao Paulo', 'city=Rio de Janeiro', 'city=Salvador', 'temperature']
  44. Matrizes esparsas

  45. Serialização de classificador em Pickle Processamento distribuído com Celery Na

    produção
  46. Identifiquei as entidades, E ai ?

  47. Estruturação de documentos

  48. Notificações

  49. Evoluindo o Classificador

  50. Graph Search

  51. Onde podemos chegar?

  52. Perguntas?

  53. Estamos contratando vagas@jusbrasil.com.br

  54. Obrigado! github.com/gabrielpjordao gabrielpjordao@gmail.com gabrielpjordao.jusbrasil.com.br