Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

Velocidade Variedade Volume

Slide 5

Slide 5 text

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.

Slide 6

Slide 6 text

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)

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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)

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

Aplicações de PLN

Slide 12

Slide 12 text

NLP x Mineração de Textos NLP (Natural Language Processing) Automated Speech Automated Writing Automated Translation Text Mining Automated Grouping Automated Classification Pattern Discovery

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

“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)

Slide 16

Slide 16 text

Google Smart reply e classificação de SPAM

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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.

Slide 21

Slide 21 text

Workflow

Slide 22

Slide 22 text

Workflow

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

Etapas do pré-processamento

Slide 28

Slide 28 text

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)

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

5) Corte de termos Termo aparece em menos de 3 textos Termo aparece em mais de 35% dos textos Termo é excluído da lista

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

Representação binária

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

Representação TF

Slide 40

Slide 40 text

Algoritmo k-means Algoritmo de aprendizado não supervisionado

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

No content

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

Implementação do algoritmo

Slide 47

Slide 47 text

Implementação do algoritmo

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

Pós-processamento Grupo 0 Grupo 1

Slide 54

Slide 54 text

Pós-processamento Grupo 2 Grupo 3

Slide 55

Slide 55 text

Pós-processamento Grupo 4

Slide 56

Slide 56 text

Como começar?

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

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/

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

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/