Natural Language Processing

 

Descrição da Disciplina

A disciplina de processamento de linguagem natural (NLP em inglês) é uma subárea de ciência da computação, linguística e inteligência artificial que tem como objetivo o estudo de interações linguísticas entre seres humanos e máquinas. Neste curso apresentaremos os principais conceitos elementares desta área de pesquisa e do conhecimento e apresentaremos aplicações, por exemplo construção de chat-bots. 

Duração

80 horas.

Programa do Curso

  • Dia 1: Introdução e conceitos elementares. 
  • Dia 2: Componentes de NLP. 
  • Dia 3: Classificação de textos. 
  • Dia 4: Modelagem de linguagem. 
  • Dia 5: Sequenciamento de tags. 
  • Dia 6: Espaço vetorial semântico. 
  • Dia 7: Tarefas sequência a sequência. 
  • Dia 8: Web scraping. 
  • Dia 9: Sistemas de diálogo. 
  • Dia 10: Aplicações. 

Dia 1: Introdução e conceitos elementares

 

  • O que é NLP e sua história. 
  • Principais abordagens em NLP. 
  • Conhecimentos básicos de linguística em NLP.
  • Introdução à linguística formal. 
  • Principais aplicações de NLP. 

Dia 2: Componentes de NLP

 

  • Entendimento de linguagem natural (NLU). 
  • Geração de linguagem natural (NLG). 
  • Ambiguidades em sintaxe, léxica e referencial. 
  • Morfologia, fonologia, pragmatismo, semântica, léxico, discurso, etc. 
  • Tipos de análise: léxica, semântica, discurso, etc. 
  • Aspectos de implementação em análise sintática. 
  • Gramática em contexto livre.
  • Análise sintática em árvores. 

Dia 3: Classificação de textos

 

  • Extração de features em textos. 
  • Pré processamento de textos. 
  • Truques de hash em filtros de spam. 
  • Análise de sentimentos. 
  • Redes neurais aplicadas à NLP. 

Dia 4: Modelagem de linguagem

 

  • Modelos de linguagem N-gram. 
  • Análise de perplexidade. 
  • Filtros e suavização. 
  • Modelos de Markov ocultos. 
  • Modelos neurais de linguagem. 

Dia 5: Sequenciamento de tags

 

  • Introdução e conceitos elementares. 
  • Algoritmo Viterbi (tags mais prováveis). 
  • Modelos sequenciais e reconhecimento de entidades nomeadas. 
  • Long Short Term Memory (LSTM). 

Dia 6: Espaço vetorial semântico

 

  • Semântica distribucional. 
  • Fatorização de matrizes (explícita e implícita). 
  • Word2vec. 
  • Doc2vec. 
  • Incorporação de sentenças e palavras. 
  • Probabilistic Latent Semantic Analysis  (PLSA). 

Dia 7: Tarefas sequência a sequência

 

  • Tradução para máquinas e canais com ruídos. 
  • Modelos de alinhamento de palavras. 
  • Arquitetura de encoder e decoder. 
  • Dicionários e vocabulário. 

Dia 8: Web scraping

 

  • Web scraping com Python. 
  • Crawlers com ScraPy. 

Dia 9: Sistemas de diálogo

 

  • Tarefas orientadas. 
  • Classificadores e tageadores. 
  • Contexto e léxico em entendimento de linguagem natural. 
  • Gerenciadores de diálogo. 

Dia 10: Aplicações

 

  • Implementando um chat-bot. 
  • Projeto de curso. 

Bibliografia do curso

  • Steven Bird, Ewan Klein, and Edward Loper (2009). Natural Language Processing with Python. O’Reilly Media.
  • Daniel Jurafsky and James H. Martin (2008). Speech and Language Processing, 2nd edition. Pearson Prentice Hall.
  • Mohamed Zakaria Kurdi (2016). Natural Language Processing and Computational Linguistics: speech, morphology, and syntax, Volume 1.
  • Mohamed Zakaria Kurdi (2017). Natural Language Processing and Computational Linguistics: semantics, discourse, and applications, Volume 2
  • Christopher D. Manning and Hinrich Schütze (1999). Foundations of Statistical Natural Language Processing. The MIT Press.
  • David M. W. Powers and Christopher C. R. Turk (1989). Machine Learning of Natural Language. Springer-Verlag.
  • https://selenium-python.readthedocs.io/.
  • https://scrapy.org/