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. Quem sou eu? Carla Vieira Graduanda e Aluna Especial de

    SI – USP AI Ethics and Society Evangelist carlavieira.dev
  2. 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
  3. 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.
  4. 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)
  5. “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.”
  6. 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
  7. 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)
  8. NLP x Mineração de Textos NLP (Natural Language Processing) Automated

    Speech Automated Writing Automated Translation Text Mining Automated Grouping Automated Classification Pattern Discovery
  9. “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)
  10. 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
  11. 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.
  12. 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
  13. 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
  14. 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)
  15. 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
  16. 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
  17. 4) Redução ao radical (Stemming) Playing Plays Played Play Play

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

    textos Termo aparece em mais de 35% dos textos Termo é excluído da lista
  19. 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
  20. 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
  21. 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
  22. 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
  23. Qual o critério de agrupamento? O que determina que 2

    textos são semelhantes e deveriam pertencer ao mesmo grupo?
  24. 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
  25. Saídas do algoritmo Log de execução Para cada iteração do

    algoritmo, como os textos foram agrupados
  26. 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
  27. Saídas do algoritmo Arquivos para pós-processamento Nuvem de palavras para

    cada grupo https://worditout.com/word-cloud/create
  28. 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