Alura > Cursos de Data Science > Cursos de Machine Learning > Conteúdos de Machine Learning > Primeiras aulas do curso Word2Vec: interpretação da linguagem humana com Word embedding

Word2Vec: interpretação da linguagem humana com Word embedding

One-hot encode - Introdução

Olá, alunas e alunos, sejam bem-vindas e bem-vindos a mais um curso de data Science aqui na Alura. Nesse curso vamos trabalhar com técnicas de word embedding, que vão representar nossas palavras através de um vetor denso de n posições. Um tamanho fixo.

Antes da gente entender o que são word embeddings, vamos contextualizar nosso projeto. Nele, vamos criar um classificador que vai classificar notícias de jornal para a Alura News, o nosso site hipotético da Alura que vai disponibilizar artigos de jornais.

Para realizar essa classificação, precisaremos dos nossos vetores de palavras, e vamos estudar uma técnica mais clássica dessa representação vetorial, conhecida como one hot encode. O one hot encode vai representar nossa palavra através de um vetor esparso, cheio de 0 com uma única posição igual a 1. Daí o hot do nome one hot encode.

Depois nós vamos discutir uma outra técnica, conhecida como word2vec, que vai representar nossa palavra através de um vetor denso de tamanho fixo, ou seja, de 300, 50 ou de 60 posições.

E aí esses vetores têm a capacidade também de generalizar e de entender o contexto daquelas palavras. Ou seja, aqui temos os nomes de países agrupados em uma determinada região. Já as marcas de carro, Ferrari e Peugeot em outra região. Depois nós compararemos a diferença entre o one hot encode, que pode ser representado por essa nuvem de palavras, onde a posição dessas palavras não tem muito sentido, são aleatórias, com o word2vec, que representa essas palavras em um espaço vetorial onde a posição dessas palavras tem relação com seu contexto.

Para isso precisamos de uma técnica capaz de treinar nosso modelo e que gere um vetor capaz de absorver o contexto dessas palavras. Essa técnica que vamos estudar é o word2vec.

Temos duas formas de treinar esse modelo, uma delas é dado o contexto de uma palavra eu tentar prever a palavra que precisa ser preenchida nesse exemplo. No caso, vamos ter como entrada a palavra moro e país e preciso tentar adivinhar o nome do país. França, Itália, Rússia, tanto faz.

Essa técnica é conhecida como continuous bag of words. Mas tenho outra maneira de treinar meu word2vec, que é através da minha palavra eu tentar adivinhar o contexto, para assim treinar nossa representação vetorial. E essa técnica é conhecida como Skipgram. Nós vamos até discutir a diferença entre elas no nosso classificador e qual a diferença de resultado entre uma e outra, mas não ficamos só na teoria. Vamos rodar também.

Para isso, vamos carregar uma base de dados com dados de treinamento e dados de teste, e depois vamos criar até as representações one hot encode utilizando Python, verificar que o tamanho desse vetor vai depender do tamanho da nossa base de treinamento, então nós podemos ter um vetor do one hot encode muito grande, com 50 mil posições, por exemplo. Tudo isso depende dos dados de treinamento.

Nós vamos verificar onde podemos achar representações do word2vec já treinadas. Vamos usar a do Neuquén, o laboratório de linguística da USP. Vamos também realizar a importação dessas representações vetoriais, e através do Gensim, que é uma biblioteca de NLP do Python, vamos criar esse modelo word2vec. Vamos analisar a semelhança entre palavras e algumas características específicas dessa representação word2vec. Tentar somar palavras e criar analogias entre elas.

Depois disso, vamos criar realmente nosso modelo, desenvolver algumas funções que vão nos auxiliar a construir nosso classificador. Vamos usar como classificador aqui a regressão logística, chegando em um resultado com 80% de acurácia. Comparando com o dummy classifier, é um resultado bem interessante, já que o dummy classifier chegou a 17% de acurácia.

E depois de classificar a primeira vez com o continuous bag of words vamos comparar com o skip gram, adaptando nossas transações e realizando a classificação. Verificando que nós tivemos 1% de diferença com o CBOW.

Vamos discutir isso tudo aqui dentro do curso. Meu nome é Thiago e vou ser o instrutor de vocês neste curso. Vamos lá?

One-hot encode - Preparando o ambiente

Fala, pessoal, tudo bem? Antes da gente começar a colocar a mão na massa nesse curso, vamos preparar um pouco nosso ambiente para desenvolver esse curso de NLP aqui na Alura.

Nós vamos precisar de uma conta no Google. A primeira coisa. E depois vamos criar uma pasta no drive e subir alguns arquivos. Mas por que a gente vai precisar fazer isso especificamente nesse curso?

Esse curso vai trabalhar com algumas bases de dados um pouco maiores. Na realidade, a gente vai acabar consumindo de memória do computador aproximadamente 10gb, então quem tem menos de 10gb não vai conseguir desenvolver esse curso na sua máquina local, e quem tem mais de 10gb, 16gb ou 32gb, ainda assim fica um pouco pesado, então a gente recomenda fortemente que a gente desenvolva esse curso no Google colab.

Para isso a gente vai ensinar um passo a passo de como criar seu Google colab. A primeira coisa que eu preciso para ter o Google colab, que é o notebook do Google que a gente acaba utilizando as máquinas deles e eles disponibilizam uma máquina com um tamanho legal de memória, a gente precisa de uma conta no Google.

Estou aqui com nossa conta de cursos da Alura, e aí eu preciso ir para o drive. Clico nessas três bolinhas no canto superior direito do nosso Gmail, vamos abrir as opções de produtos do Google, e um deles é o drive. A gente clica no drive, ele vai abrir o drive para a gente.

No nosso caso, não temos nada no drive, mas quem tem o drive quase cheio, nesse curso nós vamos precisar de aproximadamente 5gb de espaço no drive. É interessante ou você criar uma conta nova ou colocar aquele lixo que não serve mais para nada, jogar fora e liberar espaço para a gente conseguir salvar as bases de dados.

Estou aqui no meu drive e o que quero agora é criar uma pasta para esse meu curso. Venho em novo, no canto superior esquerdo, onde tem aquele mais do Google, e aqui clico em pasta. Vamos criar uma nova pasta, que eu vou chamar de curso word2vec. É o assunto que vamos trabalhar neste curso.

Vou criar essa pasta, vou entrar dentro dessa pasta e dentro dela vou criar o meu colab, que a gente vai desenvolver o curso. Venho em novo de novo, em mais, e clico na opção Google Colaboratory.

Talvez essa opção não esteja aqui para você, porque ela não vem como padrão. Você vai precisar instalar o Google colab nas ferramentas. Você vem em conectar mais apps. Quando você clicar em conectar mais apps, ele vai abrir o marketplace do G suits e você digita colab. Se você digitar colab ele já vai aparecer.

Você vai clicar, fazer a instalação e beleza. Como no meu caso está instalado eu não vou precisar fazer instalação, mas é só você clicar em instalar e aí a opção vai ficar disponível para você.

Vou de novo no mais, Google colab. Agora criei meu Google colab, igual a gente já fez em vários cursos aqui na Alura de data Science. Ele está criando, vou colocar um nome aqui em cima.

Aqui é onde a gente pode editar o nome do curso, o nome do nosso notebook, no canto superior esquerdo. Vou colocar o nome de word2vec, que é o que a gente vai trabalhar.

Os outros cursos que nós já trabalhamos aqui, o que a gente fazia? A gente vinha no cantinho superior esquerdo e abria a opção files. Ele está conectando com a máquina do Google, criando a nossa máquina. E aí a gente fazia o upload dos nossos arquivos por aqui. Só que o que acontece? Como a gente está trabalhando com arquivos relativamente grandes, se a gente ficar fazendo upload toda hora que quisermos rodar nosso notebook de novo, ou se a gente parar o curso e depois voltar e ter que fazer de novo, vai demorar muito tempo.

Não vai se efetivo. A gente vai já vai ao invés de fazer o upload como a gente costumava fazer deixar nossos arquivos salvos no drive já. Vou voltar para o meu drive, a gente está na pasta que desejamos criar o curso, clico com o botão direito dentro dessa pasta, e venho na segunda opção, fazer upload de arquivos.

Cliquei em fazer upload de arquivos. A gente vai deixar um link para vocês baixarem a base de treino e teste. Então não se preocupem, vocês entram nesse link, baixam a base, salvam em algum diretório. Aí então você vai até o diretório onde você salvou esses arquivos e vamos fazer o upload lá para o drive. Aqui, é treino.csv, vou fazer o upload, e agora vou fazer o upload do meu teste. Então, teste.csv, que são os dois arquivos que vamos disponibilizar para vocês fazerem download, e open.

Agora então que estamos fazendo o upload desses arquivos, vamos precisar fazer isso para mais um arquivo depois, mas isso a gente vai fazer ao longo do curso, podemos dar início. Vamos voltar para o colab e dar início de fato ao nosso curso.

One-hot encode - Importando dados a partir do drive

Fala, pessoal, tudo bem? Conforme nós conversamos na introdução desse curso, vamos criar um modelo de processamento de linguagem natural que vai pegar o título de algumas reportagens e classificar a categoria daquela reportagem, se é de tecnologia, esporte, etc.

Para isso, precisamos de uma base de dados de treino e de teste. Nós mandamos essa base de treino e teste para o nosso drive, e nós de alguma maneira precisamos acessar essa base de dados a partir do nosso colab. Se a gente clicar na pastinha novamente, nós vamos verificar que o diretório do drive não está aqui. Nós temos o diretório simple data e essa outra barrinha com instalação do Linux, que está lá por baixo dos panos dessa máquina do Google.

O que eu preciso fazer então é montar meu drive para ele se tornar acessível pelo colab. Para isso, posso clicar nesse botão mount drive, com o símbolo do drive. Ele vai pedir para a gente conectar a conta do Google, a gente clica em connect Google drive, e agora ele está montando a pasta drive para nós.

Se eu clicar na pasta drive, ele vai abrir o diretório my drive, depois ele vai abrir nossa pasta, o curso word2vec. Cliquei de novo no curso word2vec, e temos os arquivos que a gente precisa.

O que preciso fazer agora é importar esse arquivo para o meu colab e a gente começar a trabalhar no desenvolvimento do nosso projeto. Para isso, vou importar o pandas, então import pandas as pd, e aí vou ler meu artigo de treino e meu artigo de teste. Vou criar uma variável artigo treino e a variável artigo teste.

Artigo treino e artigo teste. O artigo treino vai ser igual a pd.read_csv, para a gente ler um arquivo csv e transformar esse arquivo em um dataframe, e aí vou passar o local onde está meu arquivo.

O arquivo que eu quero aqui no artigo treino é o arquivo treino.csv. Mas ele está dentro de drive, dentro de my drive, dentro de cursos word2vec, quanta coisa para ficar escrevendo.

Uma dica que vou dar para vocês. Você pode clicar com o botão direito em cima do nome do arquivo que você deseja e aqui copy path. Copiei o caminho, venho aqui, coloco duas aspas, e colo. Agora sim tenho então o local do meu drive, o local do meu arquivo. E a mesma coisa vou fazer para o artigos teste.

Já vou copiar o test, então botão direito, copy path em cima do teste. Já tenho salvo. É igual pd.read_csv, abre parênteses, aspas, e “Ctrl + V”. Tenho meus dados de treino, meus dados de teste, e agora vou ver as cinco ou três primeiras linhas do meu artigo treino e artigo teste.

Deixa eu plotar aqui artigo_treino.sample(5). Teve um errinho aqui. Faltou fechar as aspas. Agora sim. Não é para ter erro. Vamos fazer a mesma coisa para o teste, que a gente já estava fazendo, .sample para a gente verificar como está a base de dados que a gente vai trabalhar.

Ele está lendo o arquivo, é um arquivo relativamente grande, por isso demora um pouco mais. Depois que ele lê esses arquivos ele plota para a gente o dataframe das nossas bases de dados.

Vamos conhecer um pouquinho dessa base de dados. Essa daqui é meu artigo treino, então tenho aqui o título do meu artigo, que é o que a gente precisa para realizar a classificação, o texto do artigo, a data de criação desse artigo, a categoria, que é justamente o que a gente precisa para classificar. A gente tem a subcategoria que não vamos utilizar no momento, e aqui temos o link também com a reportagem original.

Da mesma maneira, temos os artigos de teste. Temos o título, o texto, a data e assim vai. Então, o que eu preciso? Eu tenho título aqui. Vamos dar uma olhadinha. Vamos colocar artigos teste .iloc, porque quero verificar exatamente esse daqui, 643. Enter, e olha só. Tenho aqui o meu título, somos todos imprevisíveis.

Esse meu título é uma string, e de alguma maneira, como já somos habituados nos cursos de NLP, precisamos transformar essa nossa string em um vetor numérico, vamos verificar como podemos fazer isso no próximo vídeo.

Sobre o curso Word2Vec: interpretação da linguagem humana com Word embedding

O curso Word2Vec: interpretação da linguagem humana com Word embedding possui 202 minutos de vídeos, em um total de 55 atividades. Gostou? Conheça nossos outros cursos de Machine Learning em Data Science, ou leia nossos artigos de Data Science.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Machine Learning acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas