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/