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

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.

Carla Vieira

June 05, 2019
Tweet

More Decks by Carla Vieira

Other Decks in Technology

Transcript

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

    View Slide

  2. Quem sou eu?
    Carla Vieira
    Graduanda e Aluna Especial de SI – USP
    AI Ethics and Society Evangelist
    carlavieira.dev

    View Slide

  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

    View Slide

  4. Velocidade
    Variedade
    Volume

    View Slide

  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.

    View Slide

  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)

    View Slide

  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.”

    View Slide

  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

    View Slide

  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)

    View Slide

  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

    View Slide

  11. Aplicações de PLN

    View Slide

  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

    View Slide

  13. O que é Aprendizado de
    Máquina?
    + =
    Big Data Algoritmos Aprendizado

    View Slide

  14. View Slide

  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)

    View Slide

  16. Google
    Smart reply e classificação de SPAM

    View Slide

  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

    View Slide

  18. Mineração de textos
    github.com/carlaprv/k-means-clustering

    View Slide

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

    View Slide

  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.

    View Slide

  21. Workflow

    View Slide

  22. Workflow

    View Slide

  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

    View Slide

  24. Método: algoritmo k-means
    Clusterização pelo algoritmo k-means
    Entradas: 2225 textos
    Saída: k grupos

    View Slide

  25. Objetivo do pré-processamento
    Redução de dimensão dos dados
    20.246
    termos distintos
    ?
    termos distintos

    View Slide

  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

    View Slide

  27. Etapas do pré-processamento

    View Slide

  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)

    View Slide

  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

    View Slide

  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

    View Slide

  31. 4) Redução ao radical (Stemming)
    Playing
    Plays
    Played
    Play
    Play
    Play
    Radical comum é ‘play’
    from nltk import SnowballStemmer

    View Slide

  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

    View Slide

  33. Objetivo do pré-processamento
    Redução de dimensão dos dados
    20.246
    termos distintos
    6997
    termos distintos

    View Slide

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

    View Slide

  35. Representação dos dados pré-processados
    Dados
    pré-processado
    s
    Dados formados
    Formatação
    Tipos de representações:
    Binária
    TF

    View Slide

  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

    View Slide

  37. Representação binária

    View Slide

  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

    View Slide

  39. Representação TF

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  43. View Slide

  44. Qual o critério de agrupamento?
    O que determina que 2 textos são semelhantes e deveriam
    pertencer ao mesmo grupo?

    View Slide

  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

    View Slide

  46. Implementação do algoritmo

    View Slide

  47. Implementação do algoritmo

    View Slide

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

    View Slide

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

    View Slide

  50. Saídas do algoritmo
    Log de execução
    Para cada iteração do algoritmo, como os
    textos foram agrupados

    View Slide

  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

    View Slide

  52. Saídas do algoritmo
    Arquivos para pós-processamento
    Nuvem de palavras para cada grupo
    https://worditout.com/word-cloud/create

    View Slide

  53. Pós-processamento
    Grupo 0 Grupo 1

    View Slide

  54. Pós-processamento
    Grupo 2 Grupo 3

    View Slide

  55. Pós-processamento
    Grupo 4

    View Slide

  56. Como começar?

    View Slide

  57. Obrigada!
    Carla Vieira
    [email protected] | @carlaprvieira
    bit.ly/soujava-carla-slides
    bit.ly/soujava-carla (feedback)

    View Slide

  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/

    View Slide

  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

    View Slide

  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

    View Slide

  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/

    View Slide