39
1 Python para Processamento de Linguagem Natural Introdução ao Processamento de Linguagem Natural Roney Lira de Sales Santos Rogério Figueredo de Sousa Prof. Thiago A. S. Pardo

Python para Processamento de Linguagem Natural

  • Upload
    others

  • View
    15

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Python para Processamento de Linguagem Natural

1

Python para Processamento de

Linguagem Natural

Introdução ao Processamento de Linguagem Natural

Roney Lira de Sales SantosRogério Figueredo de Sousa

Prof. Thiago A. S. Pardo

Page 2: Python para Processamento de Linguagem Natural

2

PLN: Definição

Instruir o computador a lidar com a língua, ou, como se diz informalmente, a “ler e escrever” Interpretação de textos

Tradução automática

Revisão gramatical

Busca de respostas para perguntas

Sumarização

Auxílio a escrita e ao aprendizado de línguas

Etc.

Multidisciplinar Computação

Linguística

Page 3: Python para Processamento de Linguagem Natural

3

Língua Natural

Língua humana

Em oposição às linguagens artificiais

Matemática, lógica, linguagens de programação

de computadores

Page 4: Python para Processamento de Linguagem Natural

Questão

Qual a diferença entre “língua” e

“linguagem”?

É Processamento de Linguagem Natural

ou Processamento de Línguas Naturais?

4

Page 5: Python para Processamento de Linguagem Natural

Linguagem & língua

Linguagem: capacidade humana de comunicação e suas manifestações, de forma verbal ou não

Fala, gestos, música, dança, pintura, um sorriso

Envolve nosso aparato físico e mental/cognição

Língua: código de comunicação utilizado por uma comunidade, com suas regras específicas

Português, Inglês, LIBRAS, etc.

5

Page 6: Python para Processamento de Linguagem Natural

6

PLN

Processamento de Língua Natural

Linguística Computacional

Processamento de Linguagem Natural

Engenharia das Línguas Naturais

No Brasil, tradicionalmente visto como subárea da Inteligência

Artificial & Computação

Habilidade linguística é um tipo de inteligência

Page 7: Python para Processamento de Linguagem Natural

7

PLN: um pouco de história

Nascimento na 2ª guerra mundial

Tradução automática

Possíveis nomes

Computational Linguistics

Mechanolinguistics

Automatic Language Data Processing

Natural Language Processing

Page 8: Python para Processamento de Linguagem Natural

8

PLN: um pouco de história

Globalização, internet, tecnologia da

informação, Google

Mais recentemente, web 2.0/3.0, redes sociais,

smartphones, big data e ciência de dados, deep

learning

Page 9: Python para Processamento de Linguagem Natural

9

PLN

Auxílio às tarefas humanas

(Ainda) Não substitui o humano

Não é possível “automatizar” toda a língua, apenas

aspectos dela

O computador (ainda) é uma máquina estúpida!

VS.

Page 10: Python para Processamento de Linguagem Natural

10

PLN

“Conversar” com uma máquina não é tão

difícil

Fazer a máquina “entender” é difícil, talvez

impossível

Futuro distante

Muitas pesquisas

Programas especializados

Recursos linguísticos e linguístico-computacionais

Page 11: Python para Processamento de Linguagem Natural

PLN

Será que é preciso ser tão fantástico para

ser útil?

Exemplos de programas simples que são úteis?

11

Page 12: Python para Processamento de Linguagem Natural

PLN

Será que é preciso ser tão fantástico para

ser útil?

Sugestão de possíveis sinônimos

Revisão ortográfica e gramatical

Outros?

Simples? Ou mais claros e facilmente automatizáveis?

12

Page 13: Python para Processamento de Linguagem Natural

O que é necessário para

aprender uma língua?

Conhecer as palavras e como elas são formadas

Saber o significado das palavras

Como compor frases

Como referenciar entidades do mundo

Como conectar frases

Protocolos de comunicação na língua/cultura

Etc.

E como ensinar isso às máquinas?

13

Page 14: Python para Processamento de Linguagem Natural

14

PLN: Níveis de Conhecimento

Vários níveis de conhecimento

Tradicionalmente distinguidos em PLN, apesar

dos limites entre eles serem nebulosos na

maioria dos casos

Pragmática / Discurso

Semântica

Sintaxe

Morfologia

Abstração &

Complexidade

Fonética / Fonologia

Page 15: Python para Processamento de Linguagem Natural

15

PLN: Níveis de Conhecimento

Vários níveis de conhecimento

Tradicionalmente distinguidos em PLN, apesar

dos limites entre eles serem nebulosos na

maioria dos casos

Pragmática / Discurso

Semântica

Sintaxe

Morfologia

Abstração &

Complexidade

Fonética / Fonologia

Page 16: Python para Processamento de Linguagem Natural

16

Pragmática / Discurso

Semântica

Sintaxe

Morfologia

Fonética / Fonologia

Palavra: construção, componentes de formação

Morfema, raiz, afixo (prefixo, sufixo, etc.), vogal temática,

desinência

Stemming

Lematização

PLN: Níveis de Conhecimento

Page 17: Python para Processamento de Linguagem Natural

17

Pragmática / Discurso

Semântica

Sintaxe

Morfologia

Fonética / Fonologia

Interação entre morfologia e sintaxe: classes

gramaticais ou etiquetas morfossintáticas

Substantivo/nome, verbo, adjetivo, advérbio, pronome,

preposição, conjunção, interjeição, etc.

PLN: Níveis de Conhecimento

Page 18: Python para Processamento de Linguagem Natural

18

PLN

Ele queria jogar

tênis com Janete,

mas também queria

jantar com Suzana.

Sua indecisão o

deixou louco.

Pragmática / Discurso

Semântica

Sintaxe

Morfologia

Fonética / Fonologia

Ele/PRS#ms3

queria/QUERER/V#ii-3s

jogar/JOGAR/V#inf-nInf

tênis/?,TÊNI/PPA#??

com/PREP

Janete/PNM

,*//PNT

mas/CJ

também/ADV

queria/QUERER/V#ii-3s

jantar/JANTAR/CN#ms

com/PREP

Suzana/PNM

.*//PNT

Sua/PNM

indecisão/INDECISÃO/CN#fs

o/DA#ms

deixou/DEIXAR/V#ppi-3s

louco/LOUCO/ADJ#ms

./PNT

Page 19: Python para Processamento de Linguagem Natural

19

Pragmática / Discurso

Semântica

Sintaxe

Morfologia

Fonética / Fonologia

Como as sentenças são formadas, como as

palavras podem se combinar

Função: sujeito, predicado, objetos, predicativos, etc.

Estruturação/constituição: sintagma nominal, sintagma

verbal, etc.

PLN: Níveis de Conhecimento

Page 20: Python para Processamento de Linguagem Natural

20

Ele queria jogar tênis com Janete, mas também queria jantar com

Suzana. Sua indecisão o deixou louco.

Pragmática / Discurso

Semântica

Sintaxe

Morfologia

Fonética / Fonologia

nsubj xcomp obj

obl

case

conj

PLN: Níveis de Conhecimento

Page 21: Python para Processamento de Linguagem Natural

21

Ele queria jogar tênis com Janete, mas também queria jantar com

Suzana. Sua indecisão o deixou louco.

Pragmática / Discurso

Semântica

Sintaxe

Morfologia

Fonética / Fonologia

conj

cc

advmod xcomp

obl

case

PLN: Níveis de Conhecimento

Page 22: Python para Processamento de Linguagem Natural

22

Ele queria jogar tênis com Janete, mas também queria jantar com

Suzana. Sua indecisão o deixou louco.

Pragmática / Discurso

Semântica

Sintaxe

Morfologia

Fonética / Fonologia

det

nsubj

obj xcomp

PLN: Níveis de Conhecimento

Page 23: Python para Processamento de Linguagem Natural

23

Pragmática / Discurso

Semântica

Sintaxe

Morfologia

Fonética / Fonologia

Significado

Palavras, expressões, orações, sentenças, textos

Metáforas, expressões idiomáticas, polissemia

Qual a diferença entre polissemia e homonímia?

Banco (assento vs. instituição financeira) é polissêmico, mas

manga (camisa vs. fruta) não é

PLN: Níveis de Conhecimento

Page 24: Python para Processamento de Linguagem Natural

24

Ele queria jogar tênis com Janete, mas também queria

jantar com Suzana. Sua indecisão o deixou louco.

Pragmática / Discurso

Semântica

Sintaxe

Morfologia

Fonética / Fonologia

“Ele”, “Janete” e “Suzana” = humanos.

Jogar tênis = praticar o esporte tênis ≠ arremessar o calçado.

...

PLN: Níveis de Conhecimento

Page 25: Python para Processamento de Linguagem Natural

25

Pragmática / Discurso

Semântica

Sintaxe

Morfologia

Fonética / Fonologia

Pragmática

Língua em uso, interação, contexto

Fatores como força, educação, hierarquia, crença,

cooperação, atitude

Discurso

Aquilo que está além da sentença

PLN: Níveis de Conhecimento

Page 26: Python para Processamento de Linguagem Natural

26

PLN

Considerações para uso por um computador

Os níveis de conhecimento precisam ser representados (formalizados) e manipulados automaticamente

Interação entre os níveis Morfologia e sintaxe

Sintaxe e semântica

Semântica e discurso

Page 27: Python para Processamento de Linguagem Natural

27

PLN

Considerações para uso por um computador

Os níveis de conhecimento precisam ser representados (formalizados) e manipulados automaticamente

Interação entre níveis mais distantes Morfologia e semântica (goleiro e porteiro vs. padeiro)

Morfologia e pragmática (são carlense vs. são carlino, laranjada e limonada vs. cajuada)

Sintaxe e discurso (subordinadas)

Page 28: Python para Processamento de Linguagem Natural

PLN e humanos

Humanos lidam naturalmente com

Ambiguidade

Irregularidade

Vagueza

Variedade

Etc.

... máquinas (ainda) não!

28

Page 29: Python para Processamento de Linguagem Natural

29

PLN: Fases do Trabalho

Trabalho em PLN

Fase

linguística

Fase

representacional

Fase

implementacional

Page 30: Python para Processamento de Linguagem Natural

30

Trabalho em PLN

Fase

linguística

Fase

representacional

Fase

implementacional

Resumos de artigos

de jornais

Formalização das

regras para resumir

Desenvolvimento do

sumarizador automático

Tradução espanhol-

português

Regras de tradução,

dicionários bilíngues

Desenvolvimento do

tradutor automático

PLN: Fases do Trabalho

Page 31: Python para Processamento de Linguagem Natural

31

Trabalho em PLN

Aspectos da língua que são possíveis capturar e

automatizar

Fase

linguística

Fase

representacional

Fase

implementacional

Teorias e dados

linguísticos

Formalismos/esquemas

de representação

Métodos e modelos

computacionais

PLN: Fases do Trabalho

Page 32: Python para Processamento de Linguagem Natural

PLN

Classificação

Recursos

Ferramentas

Aplicações

32

Page 33: Python para Processamento de Linguagem Natural

33

Recursos

Córpus Anotação: humana e/ou automática

XML, XCES, TEI, etc.

Paralelo, comparável, alinhado, etc.

Dicionários monolíngues e bilíngues Machine readable vs. machine tractable

Léxicos Vários paradigmas

Page 34: Python para Processamento de Linguagem Natural

34

Ferramentas

Segmentadores textuais: palavras (tokenizador), sentenças, parágrafos, tópicos

Stemmers, lematizadores, nominalizadores

Etiquetadores morfossintáticos (taggers)

Analisadores sintáticos shallow (chunkers) e deep (parsers)

Analisadores semânticos e discursivos

Alinhadores textuais: lexicais, sentenciais, etc.

Concordanceadores, word counting, ...

Classificadores de polaridade

Etc.

Page 35: Python para Processamento de Linguagem Natural

35

Aplicações

Tradutores automáticos

Revisores ortográficos e gramaticais

Ferramentas de auxílio à escrita

Sumarizadores automáticos

Simplificadores textuais

Minerador de opinião

Etc.

Page 36: Python para Processamento de Linguagem Natural

36

Recursos, ferramentas e aplicações

Atenção

Classificação difusa, às vezes

Dependente do uso Sumarizador como passo intermediário para

recuperação da informação ferramenta

Dicionário eletrônico para consulta aplicação

Page 37: Python para Processamento de Linguagem Natural

PLN e áreas correlatas

Limites cada vez mais suaves entre PLN e outras áreas

Recuperação de informação

Banco de dados

Interação humano-computador

Mineração de textos

Linguística de córpus

37

Page 38: Python para Processamento de Linguagem Natural

38

PLN - resumão

Vários níveis de conhecimento

Formalização e interação entre os níveis

Etapas do trabalho em PLN

Classificação

Page 39: Python para Processamento de Linguagem Natural

39

PLN - resumão

Vários níveis de conhecimento

Formalização e interação entre os níveis

Etapas do trabalho em PLN

Classificação