laboratório: classificação de...

32
1 Laboratório: Classificação de textos MCZA017-13 Processamento de Linguagem Natural Prof. Jesús P. Mena-Chalco [email protected] 1Q-2018

Upload: lamdung

Post on 31-Oct-2018

215 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Laboratório: Classificação de textosprofessor.ufabc.edu.br/~jesus.mena/courses/pln-1q-2018/PLN-aula10.pdf · neg estou cansado dessas coisas neg não consigo lidar com isso neg

1

Laboratório:Classificação de textos

MCZA017-13Processamento de Linguagem Natural

Prof. Jesús P. Mena-Chalco

[email protected]

1Q-2018

Page 2: Laboratório: Classificação de textosprofessor.ufabc.edu.br/~jesus.mena/courses/pln-1q-2018/PLN-aula10.pdf · neg estou cansado dessas coisas neg não consigo lidar com isso neg

2

Bibliografia

Daniel Jurafsky & James H. Martin.Speech and language processing: An introduction to natural language processing, computational linguistics, and speech recognition. Pearson/Prentice Hall.

University of Colorado, Boulder

Stanford University

2000 2009

2019?

Page 3: Laboratório: Classificação de textosprofessor.ufabc.edu.br/~jesus.mena/courses/pln-1q-2018/PLN-aula10.pdf · neg estou cansado dessas coisas neg não consigo lidar com isso neg

3

Bibliografia – Capítulo 6

https://web.stanford.edu/~jurafsky/slp3/

Page 4: Laboratório: Classificação de textosprofessor.ufabc.edu.br/~jesus.mena/courses/pln-1q-2018/PLN-aula10.pdf · neg estou cansado dessas coisas neg não consigo lidar com isso neg

4

classificação de texto?

Text classification

Page 5: Laboratório: Classificação de textosprofessor.ufabc.edu.br/~jesus.mena/courses/pln-1q-2018/PLN-aula10.pdf · neg estou cansado dessas coisas neg não consigo lidar com isso neg

5

Classificação

Formalmente, a tarefa de classificação pode ser definida como:

Dada uma entrada x, eUm conjunto finito de classes Y = {y

1, y

2, … , y

n}

Determinar, para x, uma classe y que pertence a Y.

Em Classificação de texto:Dada uma entrada d, eUm conjunto finito de classes C = {c

1, c

2, … , c

n}

Determinar, para d, uma classe c que pertence a C.

Documento

Classe n

Page 6: Laboratório: Classificação de textosprofessor.ufabc.edu.br/~jesus.mena/courses/pln-1q-2018/PLN-aula10.pdf · neg estou cansado dessas coisas neg não consigo lidar com isso neg

6

Métodos de classificação:Usando Aprendizado de Máquina

dx

(d1,c

1)

(d2,c

15)

...(d

m,c

n)

(dx, c

i)

O desafio: Construir um classificador que seja capaz de mapear o novo documento d à sua classe correta c

i.

Ψ: d→ c

Page 7: Laboratório: Classificação de textosprofessor.ufabc.edu.br/~jesus.mena/courses/pln-1q-2018/PLN-aula10.pdf · neg estou cansado dessas coisas neg não consigo lidar com isso neg

7

Métodos de classificação:Usando Aprendizado de Máquina

Existe uma quantidade grande classificadores:

Naive Bayes

Regressão logística

Support-vector machines (SVM)

K-Nearest Neighbors (KNN)

Page 8: Laboratório: Classificação de textosprofessor.ufabc.edu.br/~jesus.mena/courses/pln-1q-2018/PLN-aula10.pdf · neg estou cansado dessas coisas neg não consigo lidar com isso neg

8

Classificação de texto usando Naive Bayes

Aprendizado supervisionado

Page 9: Laboratório: Classificação de textosprofessor.ufabc.edu.br/~jesus.mena/courses/pln-1q-2018/PLN-aula10.pdf · neg estou cansado dessas coisas neg não consigo lidar com isso neg

9

Bag-of-words

Um documento pode ser representado como uma bag-of-words

Bag-of-words: Conjunto não-ordenado de palavras (desonsidera a gramática, mas mantendo a multiplicidade).

Page 10: Laboratório: Classificação de textosprofessor.ufabc.edu.br/~jesus.mena/courses/pln-1q-2018/PLN-aula10.pdf · neg estou cansado dessas coisas neg não consigo lidar com isso neg

10

Classificador Naive Bayes

MAPMaximum a posteriori

O documento drepresentado por um

conjunto de características

Qual a probabilidadeda classe c aparecer

no corpus (treinamento)?

Simplificação ingênua mas na prática permite resolver grandes

problemas

Page 11: Laboratório: Classificação de textosprofessor.ufabc.edu.br/~jesus.mena/courses/pln-1q-2018/PLN-aula10.pdf · neg estou cansado dessas coisas neg não consigo lidar com isso neg

11

Classificador Naive Bayes

Para aplicar o classificador para a sequência: w1,w

2,w

3,…,w

n

Considerando bag-of-words(a posição da palavra não importa)

As probabilidades P(wi,c) são independentes

Page 12: Laboratório: Classificação de textosprofessor.ufabc.edu.br/~jesus.mena/courses/pln-1q-2018/PLN-aula10.pdf · neg estou cansado dessas coisas neg não consigo lidar com isso neg

12

Classificador Bayesiano “ingênuo”:Aprendizado (treinamento)

Page 13: Laboratório: Classificação de textosprofessor.ufabc.edu.br/~jesus.mena/courses/pln-1q-2018/PLN-aula10.pdf · neg estou cansado dessas coisas neg não consigo lidar com isso neg

13

Treinamento

Número de documentoscuja classe é igual a c

Número de documentostotais (no treinamento)

Corpus:

P(classe_verde) = 3/10

P(classe_vermelha) = 7/10

Page 14: Laboratório: Classificação de textosprofessor.ufabc.edu.br/~jesus.mena/courses/pln-1q-2018/PLN-aula10.pdf · neg estou cansado dessas coisas neg não consigo lidar com isso neg

14

Corpus:

Treinamento

V é o vocabulário de todo o corpus (ie., de todaspalavras de todos os documentos)

Page 15: Laboratório: Classificação de textosprofessor.ufabc.edu.br/~jesus.mena/courses/pln-1q-2018/PLN-aula10.pdf · neg estou cansado dessas coisas neg não consigo lidar com isso neg

15

Treinamento

Qual seria o valor de P(wx|c) quando w

x é palavra

desconhecida no treinamento?

Zero! (não importando os outros termos)

Alternativa:

Laplace add-1 smoothing

Page 16: Laboratório: Classificação de textosprofessor.ufabc.edu.br/~jesus.mena/courses/pln-1q-2018/PLN-aula10.pdf · neg estou cansado dessas coisas neg não consigo lidar com isso neg

16

Page 17: Laboratório: Classificação de textosprofessor.ufabc.edu.br/~jesus.mena/courses/pln-1q-2018/PLN-aula10.pdf · neg estou cansado dessas coisas neg não consigo lidar com isso neg

17

Se uma palavra é desconhecidano treinamento, então será

desconsiderada (solucção padrão)

Page 18: Laboratório: Classificação de textosprofessor.ufabc.edu.br/~jesus.mena/courses/pln-1q-2018/PLN-aula10.pdf · neg estou cansado dessas coisas neg não consigo lidar com isso neg

18

Prática 1: Implementar a função 'test’

Page 19: Laboratório: Classificação de textosprofessor.ufabc.edu.br/~jesus.mena/courses/pln-1q-2018/PLN-aula10.pdf · neg estou cansado dessas coisas neg não consigo lidar com isso neg

19

Prática 1: naiveBayes1.py

Page 20: Laboratório: Classificação de textosprofessor.ufabc.edu.br/~jesus.mena/courses/pln-1q-2018/PLN-aula10.pdf · neg estou cansado dessas coisas neg não consigo lidar com isso neg

20

Prática 1: naiveBayes1.py

neg just plain boringneg entirely predictable and lacks energyneg no surprises and very few laughspos very powerfulpos the most fun film of the summer

train1.txt

Page 21: Laboratório: Classificação de textosprofessor.ufabc.edu.br/~jesus.mena/courses/pln-1q-2018/PLN-aula10.pdf · neg estou cansado dessas coisas neg não consigo lidar com isso neg

21

Prática 1: naiveBayes1.py

Page 22: Laboratório: Classificação de textosprofessor.ufabc.edu.br/~jesus.mena/courses/pln-1q-2018/PLN-aula10.pdf · neg estou cansado dessas coisas neg não consigo lidar com isso neg

22

Prática 1: naiveBayes1.py

Page 23: Laboratório: Classificação de textosprofessor.ufabc.edu.br/~jesus.mena/courses/pln-1q-2018/PLN-aula10.pdf · neg estou cansado dessas coisas neg não consigo lidar com isso neg

23

Prática 1

S = “predictable with no fun”

S deve ser classificada como ‘neg’

Classe Texto

neg just plain boring

neg entirely predictable and lacks energy

neg no surprises and very few laughs

pos very powerful

pos the most fun film of the summer

Page 24: Laboratório: Classificação de textosprofessor.ufabc.edu.br/~jesus.mena/courses/pln-1q-2018/PLN-aula10.pdf · neg estou cansado dessas coisas neg não consigo lidar com isso neg

24

Prática 1: naiveBayes1.py

python3 naiveBayes1.py train1.txt Total: classes=2 documentos=5 vocabulario=20

{'few', 'very', 'fun', 'no', 'energy', 'plain', 'entirely', 'the', 'most', 'of', 'surprises', 'boring', 'predictable', 'just', 'lacks', 'powerful', 'film', 'summer', 'laughs', 'and'}

{'neg': ['just', 'plain', 'boring', 'entirely', 'predictable', 'and', 'lacks', 'energy', 'no', 'surprises', 'and', 'very', 'few', 'laughs'], 'pos': ['very', 'powerful', 'the', 'most', 'fun', 'film', 'of', 'the', 'summer']}

{'neg': 0.6, 'pos': 0.4}

{('just', 'neg'): 0.058823529411764705, ('entirely', 'neg'): 0.058823529411764705, ('boring', 'neg'): 0.058823529411764705, ('surprises', 'pos'): 0.034482758620689655, ('film', 'pos'): 0.06896551724137931, ('very', 'pos'): 0.06896551724137931, ('energy', 'pos'): 0.034482758620689655, ('no', 'pos'): 0.034482758620689655, ('plain', 'neg'): 0.058823529411764705, ('predictable', 'neg'): 0.058823529411764705, ('fun', 'pos'): 0.06896551724137931, ('few', 'pos'): 0.034482758620689655, ('very', 'neg'): 0.058823529411764705, ('the', 'neg'): 0.029411764705882353, ('lacks', 'pos'): 0.034482758620689655, ('and', 'pos'): 0.034482758620689655, ('predictable', 'pos'): 0.034482758620689655, … , ('plain', 'pos'): 0.034482758620689655}

Testando: predictable with no funTeste 1: neg

Page 25: Laboratório: Classificação de textosprofessor.ufabc.edu.br/~jesus.mena/courses/pln-1q-2018/PLN-aula10.pdf · neg estou cansado dessas coisas neg não consigo lidar com isso neg

25

Prática 1: naiveBayes1.py

Page 26: Laboratório: Classificação de textosprofessor.ufabc.edu.br/~jesus.mena/courses/pln-1q-2018/PLN-aula10.pdf · neg estou cansado dessas coisas neg não consigo lidar com isso neg

26

Prática 2: Opiniões em português?

pos eu amo esse sanduíchepos este é um lugar incrível!pos eu me sinto bem com essas cervejaspos este é o meu melhor trabalhopos que visão incrívelneg eu não gosto deste restauranteneg estou cansado dessas coisasneg não consigo lidar com issoneg ele é meu inimigo jurado!neg meu chefe é horrível

Page 27: Laboratório: Classificação de textosprofessor.ufabc.edu.br/~jesus.mena/courses/pln-1q-2018/PLN-aula10.pdf · neg estou cansado dessas coisas neg não consigo lidar com isso neg

27

Prática 1: .naiveBayes2.py

python3 .naiveBayes2.py train2.txt Total: classes=2 documentos=10 vocabulario=37

{'não', 'eu', 'este', 'com', 'consigo', 'o', 'esse', 'gosto', 'que', 'sanduíche', 'é', 'bem', 'restaurante', 'visão', 'cansado', 'chefe', 'estou', 'um', 'jurado', 'incrível', 'deste', 'trabalho', 'inimigo', 'melhor', 'meu', 'sinto', 'lugar', 'lidar', 'coisas', 'horrível', 'me', 'essas', 'cervejas', 'isso', 'amo', 'ele', 'dessas'}

{'neg': ['eu', 'não', 'gosto', 'deste', 'restaurante', 'estou', 'cansado', 'dessas', 'coisas', 'não', 'consigo', 'lidar', 'com', 'isso', 'ele', 'é', 'meu', 'inimigo', 'jurado', 'meu', 'chefe', 'é', 'horrível'], 'pos': ['eu', 'amo', 'esse', 'sanduíche', 'este', 'é', 'um', 'lugar', 'incrível', 'eu', 'me', 'sinto', 'bem', 'com', 'essas', 'cervejas', 'este', 'é', 'o', 'meu', 'melhor', 'trabalho', 'que', 'visão', 'incrível']}

{'neg': 0.5, 'pos': 0.5}…

Teste 1: neg Teste 2: neg Teste 3: neg Teste 4: pos Teste 5: pos Teste 6: neg

"a cerveja era boa""eu não gosto do meu trabalho""eu não estou me sentindo bem hoje""eu me sinto incrível""Roberto é um amigo meu""eu não posso acreditar que estou fazendo isso"

Page 28: Laboratório: Classificação de textosprofessor.ufabc.edu.br/~jesus.mena/courses/pln-1q-2018/PLN-aula10.pdf · neg estou cansado dessas coisas neg não consigo lidar com isso neg

28

Prática 3: Identificar idioma?

Page 29: Laboratório: Classificação de textosprofessor.ufabc.edu.br/~jesus.mena/courses/pln-1q-2018/PLN-aula10.pdf · neg estou cansado dessas coisas neg não consigo lidar com isso neg

29

Prática 3: .naiveBayes3.py

python3 .naiveBayes3.py capivara.csv

Total: classes=3 documentos=15 vocabulario=915

{'sp': 0.26666666666666666, 'pt': 0.4, 'eng': 0.3333333333333333}

Digite uma frase: es un animalResposta: sp

Digite uma frase: é um animalResposta: pt

Digite uma frase: it is an animalResposta: eng

Teste com outras frases.

Dependente do corpus!

Page 30: Laboratório: Classificação de textosprofessor.ufabc.edu.br/~jesus.mena/courses/pln-1q-2018/PLN-aula10.pdf · neg estou cansado dessas coisas neg não consigo lidar com isso neg

30

Prática 4: Classificar notícias?

Page 31: Laboratório: Classificação de textosprofessor.ufabc.edu.br/~jesus.mena/courses/pln-1q-2018/PLN-aula10.pdf · neg estou cansado dessas coisas neg não consigo lidar com isso neg

31

Prática 4: .naiveBayes3.py

python3 .naiveBayes3.py noticias.csv Total: classes=3 documentos=7 vocabulario=1709

{'Noticia-Fapesp': 0.42857142857142855, 'Noticia-Folha': 0.2857142857142857, 'Noticia-Sensacionalista': 0.2857142857142857}

Digite uma frase: importante para o desenvolvimento humanoResposta: Noticia-Fapesp

Digite uma frase: o procurador avaliará o casoResposta: Noticia-Folha

Digite uma frase: comemorar gol antes de tempoResposta: Noticia-Sensacionalista

Page 32: Laboratório: Classificação de textosprofessor.ufabc.edu.br/~jesus.mena/courses/pln-1q-2018/PLN-aula10.pdf · neg estou cansado dessas coisas neg não consigo lidar com isso neg

32

Prática 5: Identificar disciplina?

Modifique o programa anterior Para listar as 5 classes com Maior probabilidade

Catalogo.csv