Mineração de Textos com Java

Mineração de Textos com Java

Apresentação realizada no meetup SouJava.

A Mineração de Textos é uma das subáreas da Inteligência Artificial que tem como objetivo  extrair padrões e conhecimento útil em textos. Para isso, utilizamos uma série de técnicas de Processamento de Linguagem Natural (PLN). O objetivo do PLN é fornecer aos computadores a capacidade de entender esses textos, criar resumos, extrair informações, analisar sentimentos e até aprender conceitos com os textos processados. Essa palestra apresenta uma visão geral sobre as técnicas de aprendizado de máquina, PLN e como podem ser utilizadas em ambientes de mineração de dados. Toda a apresentação será baseada em exemplos práticos e ao final será mostrado um case real, em que aplicamos técnicas de machine learning e PLN para minerar notícias de jornal da BBC utilizando Java.

B6e0ee98a08a3863043dc3edc5789029?s=128

Carla Vieira

June 05, 2019
Tweet

Transcript

  1. Mineração de textos com Java Carla Vieira @carlaprvieira

  2. Quem sou eu? Carla Vieira Graduanda e Aluna Especial de

    SI – USP AI Ethics and Society Evangelist carlavieira.dev
  3. Agenda 01 02 03 04 Mineração de Dados Mineração de

    Textos x PLN PLN + Exemplo prático de mineração de textos Conclusão, carreira e dicas de estudo
  4. Velocidade Variedade Volume

  5. O que é Mineração de Dados? Data Mining define o

    processo automatizado de captura e análise de grandes conjuntos de dados para extrair um significado, sendo usado tanto para descrever características do passado como para predizer tendências para o futuro.
  6. Sabedoria Conhecimento com contexto Conhecimento Informação com contexto Informação Dados

    com contexto Dados Representação de fatos Cadeia de Valor do Conhecimento (Davenport e Prusak - 1998)
  7. “Um dado não vira informação se você não souber o

    que ele significa; uma informação não vira conhecimento se você não enxergar relevância nela e conhecimento não serve pra nada se não aplicá-lo de maneira apropriada.”
  8. Processo Knowledge Discovery in Databases (KDD) -1989 Dados Dados de

    interesse Dados pré-processados Dados formados Padrões CONHECIMENTO Seleção Pré-processamento Formatação Mineração Interpretação
  9. O que é PLN? Processamento de Linguagem Natural (Pln) consiste

    no desenvolvimento de modelos computacionais para a realização de tarefas que dependem de informações expressas em alguma língua natural (e.g. tradução e interpretação de textos, busca de informações em documentos e interface homem-máquina). (Russell, S. and Norvig, P. Artificial Intelligence - a modern approach, PrenticeHall, 1995)
  10. Aplicações de PLN Exemplo: leitura de documentos https:/ /sajdigital.jusbrasil.com.br/artigos/535705948/pln-e-big-data-o-papel-do-processamento-de-linguagem-natural-na-big-data

  11. Aplicações de PLN

  12. NLP x Mineração de Textos NLP (Natural Language Processing) Automated

    Speech Automated Writing Automated Translation Text Mining Automated Grouping Automated Classification Pattern Discovery
  13. O que é Aprendizado de Máquina? + = Big Data

    Algoritmos Aprendizado
  14. None
  15. “Um programa de computador aprende se ele é capaz de

    melhorar seu desempenho em determinada tarefa, sob alguma medida de avaliação, a partir de experiências passadas.” (Tom Mitchell)
  16. Google Smart reply e classificação de SPAM

  17. Classificação Aprendizagem Supervisionada Aprendizado Indutivo Aprendizagem não supervisionada Regressão Agrupamento

    Sumarização Métodos de Mineração de Dados Associação ➔ Árvores de decisão ➔ KNN ➔ Redes Neurais ➔ SOM ➔ K-means
  18. Mineração de textos github.com/carlaprv/k-means-clustering

  19. Ferramentas mais utilizadas de Data science (Fonte: O’Reily Data science

    Survey 2017)
  20. Objetivo Encontrar uma maneira de agrupar automaticamente estas notícias em

    grupos que são de alguma forma semelhantes ou relacionadas por diferentes variáveis.
  21. Workflow

  22. Workflow

  23. Seleção de dados Dados Dados de interesse Seleção Corpora BBC

    (2225 notícias em inglês) 20.246 termos distintos http://mlg.ucd.ie/howmanytopics/index.html
  24. Método: algoritmo k-means Clusterização pelo algoritmo k-means Entradas: 2225 textos

    Saída: k grupos
  25. Objetivo do pré-processamento Redução de dimensão dos dados 20.246 termos

    distintos ? termos distintos
  26. Etapas do pré-processamento Case Folding 1 Tokenização 2 Remoção de

    stop words 3 Redução ao radical 4 Corte de termos 5
  27. Etapas do pré-processamento

  28. 1) Case Folding Converter todas as palavras para minúsculas ou

    maiúsculas Por quê? A mesma palavra seria contada muitas vezes por diferentes escritas Exemplo: Amor e amor (seriam consideradas palavras diferentes)
  29. 2) Tokenização 1) u.s foi transformado em usa; 2) palavras

    compostas com hífen foram unidas; 3) expressões que continham subtraço (_) foram separadas Tokens com menos de 3 caracteres foram retirados da lista from nltk import regexp_tokenize
  30. 3) Remoção de stop words O que são stop words

    (ou palavras vazias)? Lista de stop words da NLTK a, agora, ainda, alguém, algum, alguma, meus, minha, minhas, muita, muitas, muito, muitos, na, não, nas, nem, nenhum, a, able, about, across, after, all, almost, also, am, among, an, and, any, are, as, at, be, because, been, but, by, can, cannot, from nltk.corpus import stopwords
  31. 4) Redução ao radical (Stemming) Playing Plays Played Play Play

    Play Radical comum é ‘play’ from nltk import SnowballStemmer
  32. 5) Corte de termos Termo aparece em menos de 3

    textos Termo aparece em mais de 35% dos textos Termo é excluído da lista
  33. Objetivo do pré-processamento Redução de dimensão dos dados 20.246 termos

    distintos 6997 termos distintos
  34. Mas, como iremos representar os textos para rodar o algoritmo?

  35. Representação dos dados pré-processados Dados pré-processado s Dados formados Formatação

    Tipos de representações: Binária TF
  36. Representação binária Texto 0 termo 0 termo 1 termo 2

    ….. termo n 1 0 1 1 1 0 0 1 1 0 1 1 0 1 0 0 0 1 0 0 1 1 1 0 1 Texto 1 Texto 2 Texto …. Texto 2225
  37. Representação binária

  38. Representação TF Texto 0 termo 0 termo 1 termo 2

    ….. termo n 2 0 5 0 15 7 0 1 1 0 1 1 0 1 0 0 0 1 0 0 1 1 1 0 1 Texto 1 Texto 2 Texto …. Texto 2225
  39. Representação TF

  40. Algoritmo k-means Algoritmo de aprendizado não supervisionado

  41. Algoritmo k-means (agrupamento) Algoritmo de aprendizado não supervisionado Objetivo: agrupar

    elementos em K grupos No nosso caso… iremos agrupar notícias da BBC
  42. 1. Determinar K 2. Inicializar K elementos (aleatoriamente) como centro

    dos clusters 3. Dividir todos os elementos em grupos de acordo com o centro mais próximo 4. Calcular centróide de cada cluster 5. Centróides são definidos como os novos centros dos clusters 6. Se não convergir, repetir passo 3
  43. None
  44. Qual o critério de agrupamento? O que determina que 2

    textos são semelhantes e deveriam pertencer ao mesmo grupo?
  45. Entradas do algoritmo Elementos (textos): 2225 textos Quantidade de grupos

    esperada (k): 5 grupos Tipo de distância utilizada: cosseno Número de iterações (condição de parada): 30 épocas
  46. Implementação do algoritmo

  47. Implementação do algoritmo

  48. Algoritmo k-means - Distâncias Distância Euclidiana Similaridade do cosseno

  49. Após a execução do algoritmo, como saber se obtivemos um

    bom resultado?
  50. Saídas do algoritmo Log de execução Para cada iteração do

    algoritmo, como os textos foram agrupados
  51. Saídas do algoritmo Silhouette - cálculo do quão bem representado

    aquele texto está no grupo dele 1 -1 0 Bem classificado no grupo Mal classificado no grupo
  52. Saídas do algoritmo Arquivos para pós-processamento Nuvem de palavras para

    cada grupo https://worditout.com/word-cloud/create
  53. Pós-processamento Grupo 0 Grupo 1

  54. Pós-processamento Grupo 2 Grupo 3

  55. Pós-processamento Grupo 4

  56. Como começar?

  57. Obrigada! Carla Vieira carlaprv@hotmail.com | @carlaprvieira bit.ly/soujava-carla-slides bit.ly/soujava-carla (feedback)

  58. Comunidades de Data Science https://www.meetup.com/pt-BR/R-Ladies-Sao-Paulo/ https://www.meetup.com/pt-BR/PyLadiesSP/ https://www.meetup.com/pt-BR/machine-learning-big-data-engenharia/ http://datahackers.com.br/

  59. Cursos https://www.alura.com.br/carreira-data-science https://www.datascienceacademy.com.br https://www.coursera.org/learn/google-machine-learning https://www.coursera.org/learn/ciencia-computacao-python-conceitos https://www.coursera.org/learn/google-machine-learning https://www.coursera.org/learn/ciencia-computacao-python-conceitos

  60. Referências Machine Learning • https://stanford.edu/~shervine/l/pt/teaching/cs-229/dicas-truques-aprendizado-maquina • https://stanford.edu/~shervine/l/pt/teaching/cs-229/dicas-aprendizado-supervisionado • https://stanford.edu/~shervine/l/pt/teaching/cs-229/dicas-aprendizado-nao-supervisionad o

    • https://hackernoon.com/best-machine-learning-libraries-for-java-development-4eccb88e1 348 • https://medium.com/nexo-ai/machine-learning-x-deep-learning-qual-a-diferen%C3%A7a-e ntre-eles-665c0739f78a • https://discuss.analyticsvidhya.com/t/difference-between-nlp-and-text-mining/2977/2 • https://www.infoq.com/br/presentations/processamento-de-linguagem-natural-com-deep -learning/ • https://github.com/fernandojvdasilva/nlp-python-lectures
  61. Referências Python • https://www.cursoemvideo.com/course/curso-python-3/ • https://paulovasconcellos.com.br/10-bibliotecas-de-data-science-para-python-que-ni ngu%C3%A9m-te-conta-706ec3c4fcef • https://cappra.com.br/2018/12/27/data-thinking-2019/