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 full-size slide

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

    View full-size 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 full-size slide

  4. Velocidade
    Variedade
    Volume

    View full-size 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 full-size 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 full-size 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 full-size 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 full-size 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 full-size 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 full-size slide

  11. Aplicações de PLN

    View full-size 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 full-size slide

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

    View full-size slide

  14. “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 full-size slide

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

    View full-size slide

  16. 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 full-size slide

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

    View full-size slide

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

    View full-size slide

  19. 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 full-size slide

  20. 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 full-size slide

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

    View full-size slide

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

    View full-size slide

  23. 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 full-size slide

  24. Etapas do pré-processamento

    View full-size slide

  25. 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 full-size slide

  26. 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 full-size slide

  27. 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 full-size slide

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

    View full-size slide

  29. 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 full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  33. 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 full-size slide

  34. Representação binária

    View full-size slide

  35. 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 full-size slide

  36. Representação TF

    View full-size slide

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

    View full-size slide

  38. 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 full-size slide

  39. 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 full-size slide

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

    View full-size slide

  41. 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 full-size slide

  42. Implementação do algoritmo

    View full-size slide

  43. Implementação do algoritmo

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  47. 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 full-size slide

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

    View full-size slide

  49. Pós-processamento
    Grupo 0 Grupo 1

    View full-size slide

  50. Pós-processamento
    Grupo 2 Grupo 3

    View full-size slide

  51. Pós-processamento
    Grupo 4

    View full-size slide

  52. Como começar?

    View full-size slide

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

    View full-size slide

  54. 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 full-size slide

  55. 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 full-size slide

  56. 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 full-size slide

  57. 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 full-size slide