owned this note
owned this note
Published
Linked with GitHub
# Curso de Processamento de Linguagem Natural, com Deep Learning, baseado no curso da fast.ai
Área compartilhada para troca de links e comentários durante as aulas: http://abre.ai/share-fastnlp
Wifi, rede: TCU-VISITANTES-ISC
Uma vez conectado na rede wifi, acessar pelo navegador. Uma página de identificação aparecerá, com opção para criar um novo usuário, no link no canto inferior direito. Esse novo usuário é independente do usuário no portal do TCU e é válido por 7 dias.
![frescura para agradar a Carla, de hunanas!](https://i.imgur.com/TDMn7w2.jpg)
______________________
## PRÓXIMO ENCONTRO
### 8/10 - Apresentações finais dos participantes do curso
9:10 - Geração de Musicas Polifônicas por Redes Neurais, por Pedro Henrique Mendes: Utilizando técnicas de NLP em redes neurais profundas conseguimos obter novas melodias conforme os padrões aprendidos provenientes de uma base de dados, assim criando amostras de musicas com harmonias e ritmos próximos ao gênero característico dos dados originais.
9:30 Detecção de Fake News por NLP, por Pedro Henrique Mendes: apenas uma ensaio sobre o tema Fake News para relacionar e fixar os conteúdos aprendidos durante o curso, portanto foi criada uma base fictícia de noticias reais e falsas com material de sites de humor de notícia, como por exemplo: o "O Sensacionalista" e o "O Otarianista", para que modelos preditivos possam diferenciar esses dois tipos de noticias. No estudo em questão utilizou as técnicas de NLP Bag of Words e UMLfit afim de montar um comparativo. Link da competição:https://www.kaggle.com/t/b0bf6050ab9647318d8be2d429255020
9:50 Sumarizador Abstrato de texto em cima do corpus dos Acordãos do TCU, por Daniel Beigelman
GoogleColab: https://colab.research.google.com/drive/1UBRY2ZuygTMHRbr4abrFQcBPiZjWba45
10:10 NLP aplicado às normas da ANVISA, por equipe da ANVISA1. Geração automática de normas; 2. Classificação de normas em macrotemas (84% de acurácia); 3. Clusterização das normas por similaridade utilizando a representação vetorial gerada pelo encoder.
[Apresentacao-Slides](https://drive.google.com/file/d/1o9aPjCULakyQ8Cf2Jy0GC-f61rGSs1_I/view?usp=sharing)
[Repositório no GitHub](https://github.com/thiagodma/Cluster-Normas)
10:30 Comparação de Modelos para Classificação de Medicamentos nas Classes ATC pelas Indicações Terapêuticas Contidas nas Bulas, por equipe ANVISA. Comparação entre modelos clássicos e modelos de deep learning para classificar diferentes medicamentos na classificação ATC: 1. Regressão Logística, SVM linear, Naive Bayes e Random Forest. 2. Modelo de deep learning sem pré-treinamento com os textos em português; 3. Modelo de deep learning com pré-treinamento com os textos em português; 4. Modelo de deep learning com pré-treinamento com os textos traduzidos para o inglês usando a tradução do Microsoft Word (tradução de máquina).
[Apresentacao-Slides] https://drive.google.com/file/d/1_A4kMmsIQM9bSOYaK2op3weEf96YxSpG/view?usp=sharing
10:50 - 100 Dias de Código Machine Learning - 10 min - Joel Melo - https://drive.google.com/file/d/1HayxvzKJNBs7J-7cZZVXXikMK4C6miss/view?usp=sharing
11:00 Classificador de Tweets dos Correios, por Alex e Hederson. Clusterizados com Kmeans. Os grupos serviram para definir os labels que serviram como input para o modelo gerado rodando LSTM.
Clusterização com kmeans: https://drive.google.com/open?id=15KZkEI5CswmbIccm6uJFn4gq7ibMLckj
Encoder ULMFit: https://drive.google.com/open?id=1HtkAXfL1HkrPq2Lty6MX7PRdk-n-YXoD
Classificador: https://drive.google.com/file/d/1RLKoUA4R6oUuJUth47EtMtOZoCtyPtLy/view?usp=sharing
Quem pretende apresentar e não comunicou tema/resumo ainda assim compareça amanhã que encontraremos um encaixe. Até amanhã!
11:10 Tutorial Ludwig: Eric Hans Messias e Alexandre Roriz
Link para o repositório que será usado: https://github.com/erichans/ludwig-deeplearning-bsb
Modelo de linguagem para o português + classificador de textos legais do TCU fine-tuned pelo método MultiFiT: Pierre Guillou
https://github.com/piegu/language-models
______________________
## Calendário do curso
| Data | Aula | Conteúdo |
| ---- | ---| -------- |
|06/08 | 1 | Apresentação Geral; NLP tradicional|
|13/08 | 2 | Modelagem de Tópicos com SVD e NMF|
|20/08 | 3 | DL: modelagem de linguagem & transferência; análise de sentimentos|
|27/08 | 4 | Naive Bayes, Regex, Language Modeling e visão geral ULMFiT|
|03/09 | 5 | Transfer learning|
|10/09 | 6 | ULMFiT para não inglês; laboratório|
|17/09 | - | Seminário sobre Análise de Dados, apresentações de NLP na Administração Pública|
|24/09 | 7 | RNNs, Seq2Seq|
|01/10 | 8 | Geração de texto; GRU: implementação; Atenção & Transformer|
|08/10 | 9 | Apresentações dos participantes e tutorial Ludwig|
## Memória das aulas
### 1/10 - Aula 8 - Geração de texto, GRU & Transformer
* vídeos
* 14 - Text generation algorithms (25'): https://youtu.be/3oEb_fFmPnY
* 15 - Implementing a GRU (23'): https://youtu.be/Bl6WVj6wQaE
* 17 - Introduction to the Transformer (23'): https://youtu.be/AFkGPmU16QA
* 18 - The Transformer for language translation (55'): https://youtu.be/KzfyftiH7R8
* cadernos:
* 7b, attention: https://github.com/fastai/course-nlp/blob/master/7b-seq2seq-attention-translation.ipynb
* 7b, nucleus: https://github.com/fastai/course-nlp/blob/master/7b-seq2seq-nucleus.ipynb
* 8: https://github.com/fastai/course-nlp/blob/master/8-translation-transformer.ipynb
* anotações:
Text generation: 4 abordagens para seleção da próxima palavra (decoding):
1. ingênua/greedy: {7b-seq2seq-attention-transformer, In[20]}: argmax() palavra mais provável
Explicar defeito da abordagem greedy: ao selecionar sempre a próxima palavra mais provável corre-se o risco de gerar uma sequência completa de menor probabilidade total, assim como entrar em loop, gerando repetições.
Comentar gráfico do paper: [The Curious Case of Neural Text Degeneration](https://arxiv.org/abs/1904.09751)
![](https://i.imgur.com/0AwJ6Ne.png)
2. beam search: {desenho tela + biblioteca fastai} seleciona k strings (sequências) de próximas palavras mais prováveis, permitindo identificar uma sequência completa mais provável ainda que não tenha tido a primeira palavra mais provável. Modera a busca greedy.
3. top k sampling: {7b-seq2seq-nucleus, In[11]}: retorna aleatoriamente uma das k palavras mais prováveis
4. **nucleus sampling**: {7b-seq2seq-nucleus, In[12]}: sampling, similar a top k, com k dinâmico em função de probabilidade cumulada superior a algum patamar
### 24/09 - Aula 7 - RNNs, Seq2Seq
* vídeos
* 11 - Understanding RNNs (33'): https://youtu.be/l1rlFh0PmZw
* 12 - Seq2Seq Translation (1h): https://youtu.be/IfsjMg4fLWQ
* 14 - Text generation algorithms (25'): https://youtu.be/3oEb_fFmPnY
* cadernos 6 e 7: https://github.com/fastai/course-nlp
Sondar interesse/disponibilidade para [oficina de Ludwig](https://speakerfight.com/events/5o-seminario-internacional-sobre-analise-de-dados-na-administracao-publica/#construcao-e-experimentacao-de-modelos-de-deep-learning-de-forma-rapida-e-sem-codigo) (autoML Uber): *Ludwig is a toolbox that allows to train and test deep learning models without the need to write code*
Vejam também a experiência do colega Pierre Guillou, que treinou modelo ULMFiT para o francês, publicando todos os resultados: https://twitter.com/pierre_guillou/status/1175054315804864517
### 17/09 - Seminário sobre Análise de Dados na Administração Pública
Forte programação em NLP: http://www.brasildigital.gov.br/brasil-digital/programa/
### 10/09 - Aula 6 - Treinando um modelo de linguagem ULMFiT em línguas não inglesas:
* vídeo 10 (https://youtu.be/MDX_x6rKXAs)
* caderno https://github.com/fastai/course-nlp/blob/master/nn-imdb-more.ipynb
* laboratório de ULMFiT em português, conduzido pelo colega Ami Aram. https://colab.research.google.com/drive/1Mw4aJmYIUXiQ84pB9H0F6Ls_6SilQdDl
Na próxima terça-feira, 17/9/2019, não teremos aula devido à realização do 5º Seminário Internacional sobre Análise de Dados na Administração Pública, que ocorrerá no ISC de 16 a 18 de setembro.
Recomendo que venham ao seminário, pelo menos no dia 17/9, para aproveitar a ampla oferta de palestras de casos de aplicação de NLP na Administração Pública. Confira a programação: http://www.brasildigital.gov.br/brasil-digital/programa/
### 03/09 - Aula 5 - Transfer learning
Assistir ao vídeo 9.
Concluíremos o caderno 5-nn-imdb.ipynb e assistiremos a extratos do vídeo 9. Deixaremos o laboratório com aplicação de ULMFiT para português para a aula seguinte, após o vídeo 10.
#### Videos
* Transfer learning (NLP video 9) https://www.youtube.com/watch?v=5gCQvuznKn0
* ULMFit for non-English Languages (NLP Video 10) - https://www.youtube.com/watch?v=MDX_x6rKXAs
### 27/08 - Aula 4 - Naive Bayes, Regex, Language Modeling e ULMFiT para não inglês
#### Cadernos
* Caderno 5: https://github.com/fastai/course-nlp/blob/master/5-nn-imdb.ipynb
** Colab: https://colab.research.google.com/github/fastai/course-nlp/blob/master/5-nn-imdb.ipynb
#### Videos
* Derivation of Naive Bayes & Numerical Stability (NLP video 6) (24') - https://www.youtube.com/watch?v=z8-Tbrg1-rE
Teorema de Bayes, estabilidade numérica, representação de números floating point, velocidade relativa dos diversos tipos de memória e *regex*.
Obs: Foco em regex e exercícios: https://regexone.com/
* Revisiting Naive Bayes, and Regex (NLP video 7) (37') - https://www.youtube.com/watch?v=Q1zLqfnEXdw
Obs: Exercícios: regexr.com, callumacrae.github.io/regex-tuesday/)
* Intro to Language Modeling (NLP video 8) (41')- https://www.youtube.com/watch?v=PNNHaQUQqW8
Obs: Language Modeling, transfer learning, exemplos de aplicação de ULMFiT, recomendações GPU em nuvem (Colab), gerador de texto
Para a aula presencial, deve ser dado um overview de regex e apresentado o caderno 4: criar tokenizador próprio, com exemplos de uso de regex em python.
Na segunda parte da aula, deve ser dado um overview do vídeo 8 e apresentado o caderno 5: primeiro uso de ULMFiT com dados IMDB
### 20/08/2019 Aula 3 - Análise de Sentimentos
#### Videos
* Sentiment Classification with Naive Bayes (NLP video 4) - https://www.youtube.com/watch?v=hp2ipC5pW4I
* Sentiment Classification with Naive Bayes & Logistic Regression, contd. (NLP video 5) - https://www.youtube.com/watch?v=dt7sArnLo1g
#### Cadernos
* Caderno 3: https://github.com/fastai/course-nlp/blob/master/3-logreg-nb-imdb.ipynb
* Colab: https://colab.research.google.com/github/fastai/course-nlp/blob/master/3-logreg-nb-imdb.ipynb
* Caderno 3b: https://github.com/fastai/course-nlp/blob/master/3b-more-details.ipynb
#### Laboratório Análise de Sentimentos
* Dataset-OLIST no Kaggle: https://www.kaggle.com/olistbr/brazilian-ecommerce
* csv com amostra de 1000 avaliações OList, no formato esperado pelo caderno 3 da fast.ai: https://drive.google.com/uc?authuser=0&id=1--d0SRPUGdoj3rZSrMbWWMC32Po4tKT6&export=download
###### Cadernos
* Caderno (antigo) no Colab: https://colab.research.google.com/drive/1ziTEQBXm9t4fRzoCtoyr1qTcrqxQjLUR
* Caderno (modificado) no Colab: https://colab.research.google.com/drive/1MpgfN6U66ypP-s1H4DSxMuTdusdU1QgT#scrollTo=JbKsmIv261l4
* Caderno com tratamento de emoji: http://abre.ai/fasttext-olist
Vejam como importar o arquivo csv seja pela url acima, seja acessando seu Google Drive a partir do Colab.
### 13/08/2019 Aula 2 - Modelagem de Tópicos com SVD e NMF
### 06/08/2019 - Aula 1 - Aula inaugural:
Apresentação: https://docs.google.com/presentation/d/19BqOlc-QIGAzjvL8ldpyxYdH8RsZnUo6foy7I7DGkvA/edit?usp=sharing
______________________
## Links Importantes
Grupo no WhatsApp: https://chat.whatsapp.com/Fsav0dMRIXZGpGbYuYFxf0
Inscrição no Curso: https://contas.tcu.gov.br/ords/f?p=portal:detalhe:::::V:161124
Chamada:
- https://kahoot.it/
Material:
- compartilhamento links: http://dontpad.com/fastNLP
- conteúdo fast.ai: https://www.fast.ai/2019/07/08/fastai-nlp/
- playlist YouTube: https://www.youtube.com/playlist?list=PLtmWHNX-gukKocXQOkQjuVxglSDYWsSh9
- cadernos Jupyter: https://github.com/fastai/course-nlp
- cadernos Jupyter no Colab: https://colab.research.google.com/github/fastai/course-nlp
- SVD : https://www.youtube.com/watch?v=d7iIb_XVkZs
______________________
## Informações Úteis
Canais de comunicação:
- email cadastrado no TCU;
- whatsapp para notícias do curso: https://chat.whatsapp.com/Fsav0dMRIXZGpGbYuYFxf0
- fórum fast.ai para dúvidas: https://forums.fast.ai/t/study-group-in-brazil/25789/43
Criar contas para acesso gratuito a instâncias na nuvem com GPU:
* Colaboratory (http://colab.research.google.com/notebooks/welcome.ipynb)
* Kaggle (https://www.kaggle.com/)
* Google Cloud (GCP): https://cloud.google.com/
* Detalhes de configuração para fast.ai: https://course.fast.ai/
______________________
## Introdução sobre o Curso
Estamos lançando o primeiro curso de NLP organizado pelo grupo de estudo em Deep Learning de Brasília, baseado no curso da fast.ai
Os encontros serão às terças pela manhã (9h às 12h) no ISC/TCU, iniciando na primeira terça-feira de agosto, 6/8/2019.
Serão 8 encontros de 3h, voltado para programadores, com experiência em python e ML.
Como todos os cursos da fast.ai, esse de NLP também será extremamente prático e voltado para replicar resultados no estado da arte.
Conteúdo do curso:
1. **Métodos tradicionais de NLP**
2. **Modelagem de Tópicos com SVD e NMF**
* Classificação de sentimentos com Naive Bayes e Regressão Logística
* Derivação de Naive Bayes e Estabilidade Numérica
* Revisitando Naive Bayes e Regex
3. **Aprendizado Profundo (Deep Learning): Transferência de aprendizado para NLP**
* Introdução à modelagem de linguagem
* Transferência de aprendizagem
* ULMFit para idiomas não ingleses
4. **Deep Learning: tradução Seq2Seq e o Transformer**
* Noções básicas sobre RNNs
* Tradução com Seq2Seq
* Algoritmos de geração de texto
* Implementando uma GRU
* Introdução ao Transformer
* O Transformer para tradução de idiomas
5. **Questões Éticas em NLP**
Detalhes do curso da fast.ai: https://www.fast.ai/2019/07/08/fastai-nlp/
Peço ajuda para organizarmos essa área de compartilhamento para uso no curso.
Outro canal para dúvidas pelo nosso grupo no Telegram: t.me/DeepLearningBSB
Vídeos de resultados recentes em NLP:
* Seminário de IA aplicada, resultados de NLP do GEDL: https://youtu.be/5f5J8ZFAN2o?t=7818
* Panorama de NLP (julho 2019): https://youtu.be/fkicHKdxrT0