Olá, caríssima aluna! Olá, caríssimo aluno! Seja bem-vinda e bem-vindo a mais um curso de machine learning aqui na Alura: Word2Vec: Treinamento de Word Embedding. Meu nome é Tiago e eu conduzirei você por mais essa jornada.
Esse curso é voltado para quem procura avançar seus conhecimentos em processamento de linguagem natural, aonde nós vamos aprender a treinar a nossa própria representação Word2Vec
, vamos dar uma olhada qual vai ser o nosso projeto que iremos desenvolver?
Nós vamos criar aqui um classificador de notícias através de seus títulos, utilizando os dados do nosso projeto Alura News, nosso objetivo real, é treinar uma representação Word2Vec
para utilizar na construção deste classificador.
Então vamos dar uma olhada qual será o nosso workflow desse projeto. Nós iremos iniciar com as notícias e suas respectivas categorias, esses dados não estão tratados e não estão prontos para treinar a nossa representação Word2Vec
.
Então nesse processo de vetorização além do nosso treinamento do modelo, nós precisamos pré-processar esses nossos dados.
Depois de pré-processar e treinar a nossa representação Word2Vec, nós precisamos construir o nosso classificador. Esse classificador, depois de treinado, será disponibilizado em uma aplicação web para que consigamos treinar, classificar, automaticamente os títulos das nossas notícias.
E que arquitetura de treinamento nós vamos utilizar no momento de construir a nossa representação Word2Vec? Nós vamos utilizar as duas: tanto a arquitetura continuous bag-of-words, que recebe como entrada o contexto em que uma palavra é utilizada e tenta prever essa palavra.
Quanto também a arquitetura skip-gram, que recebe como entrada a palavra e tenta prever o contexto em que ela é utilizada.
Agora nós já sabemos tudo que vamos construir nesse nosso projeto, vamos dar uma olhada no código que nós vamos desenvolver.
Nós vamos iniciar com um processo de treinamento da nossa representação Word2Vec, mas como nós já falamos, os nossos dados não estão tratados e nós precisamos fazer o pré-processamento desses dados, nós vamos utilizar aqui a biblioteca Spacy
que vai nos ajudar a construir todo esse nosso pré-processamento dos dados.
Depois desse nosso pré-processamento, removendo, por exemplo, letras, caracteres não alfabéticos, nós vamos treinar o nosso modelo Word2Vec, e para treinar esse modelo Word2Vec nós vamos utilizar uma implementação da biblioteca gensim
.
Quando formos treinar esse modelo, nós vamos discutir sobre todos os parâmetros que utilizaremos nesse processo de treinamento.
Feito o treinamento com arquitetura skip-gram e com arquitetura continuous bag-of-words, nós vamos para o processo de desenvolvimento do nosso classificador.
E para criar esse classificador nós precisamos de uma série de funções auxiliadoras. Uma delas é a que faz a tokenização do nosso título, tratando o texto e separando esse texto em tokens. Depois uma função que vai fazer a combinação dos vetores de cada uma dessas palavras, para então criar uma representação Word2Vec do meu título como um todo. Por fim, uma função auxiliadora que vai vetorizar todos os títulos da nossa base de dados.
Após isso, nós conseguimos treinar o nosso modelo. No cas,o nós vamos utilizar uma regressão logística para realizar o treinamento desse nosso modelo, chegando em uma acurácia bem interessante, 80%, um bom resultado para os nossos dados.
Depois de treinar esse modelo, nós vamos salvá-lo para conseguirmos disponibilizar esse modelo em uma aplicação web.
Depois de disponibilizado esse modelo, nós teremos a nossa aplicação web conseguindo classificar as categorias de uma reportagem, através de seus títulos. Por exemplo, Barcelona e Real Madrid jogam hoje. Se eu pedir para ele classificar, ele vai classificar esse nosso título como uma categoria de esportes.
Repare que aqui nós já precisamos de alguns pré-conhecimentos antes de você iniciar esse curso. Eu recomendo fortemente que você faça o curso Word2Vec: introdução à word embedding e o curso Machine Learning: introdução a classificação com SKLearn.
Assim você vai ter o conhecimento necessário para conseguir aproveitar o máximo esse nosso curso. E aí? Tem bastante coisa para estudarmos, vamos lá? Eu estou esperando você aqui no curso.
Nós estamos aqui no meu drive, um drive específico onde desenvolvemos alguns cursos da Alura, e nessa pasta “curso_word2vec”. Essa foi a pasta que criamos no primeiro curso de word2vec
. Se você fez esse curso que colocamos até como um pré-requisito, você já deve ter criado essa pasta no seu drive. Se não, você cria essa pasta, baixa os dados de teste e treino e coloca nessa pasta curso_word2vec
.
Eu vou deixar o link na descrição dessa aula com os dados de teste e de treino para você fazer o download caso ainda não tenha essa pasta no seu drive.
Feito isso, criando a pasta e colocando essas duas bases de dados que nós vamos utilizar no nosso curso, vamos criar o nosso notebook para começar a trabalhar nesse curso propriamente dito.
Então eu vou clicar aqui em qualquer parte dessa pasta no drive com o botão direito, clicando com o botão direito eu venho aqui em “Mais”, depois eu seleciono a opção “Google colaboratory”.
Agora ele está criando aqui o nosso colaboratory e o que eu vou precisar para treinar o nosso modelo word2vec
é a nossa base de dados “treino”. Então eu preciso fazer a importação dessa base de dados “treino”.
Então vamos utilizar o pandas
, então Import pandas as pd
. Connecting significa que ele está inicializando a nossa máquina lá no Google, conectando, depois ele vai inicializar. Demora uns minutos.
E aí o que vamos fazer? Vamos instanciar aqui o nosso dataframe dados_treino = pd.read_csv
e entre parênteses eu preciso passar o local que está a minha base de treino, correto? Ela pode estar em qualquer lugar se você estiver fazendo isso no seu computador, você vai colocar o local onde está aquele arquivo.
No nosso caso, ele está no drive. Então o que eu preciso fazer é acessar a minha pasta no drive. E como que eu vou fazer isso?
Eu vou clicar aqui em files, o desenho dessa pasta ao lado esquerdo aqui do nosso notebook. Nas opções “Upload”, “Refresh” e “Mount Drive” aqui à esquerda, eu vou clicar em “Mount Drive”.
Ele pede aqui nesse aviso que apareceu a permissão para acessar o nosso drive, então eu vou permitir esse acesso clicando em “CONNECT TO GOOGLE DRIVE”. Eu vou mudar o nome do nosso notebook, aqui está untitled, eu vou colocar como “word2vec_treinamento”.
Enquanto mudamos lá, ele conseguiu criar o nosso drive aqui. Agora temos esse arquivo “drive”. Vamos clicar no arquivo drive
, ele vai abrir o meu drive, vou clicar em “My Drive” e ele vai abrir o quê? As pastas que eu tenho no meu drive. Dentre essas pastas, eu tenho o “curso_word2vec”.
Vamos selecionar essa pasta e ele tem os nossos arquivos que foram criados. Dentre esses arquivos nós temos o “treino.csv”. Eu não vou clicar nele, mas eu vou clicar nessas três bolinhas que aparecem do lado direito do nosso arquivo. Vou clicar nelas e depois selecionar “Copy path”.
O que ele fez aqui? Ele copiou o local no nosso drive como se desse um “Ctrl + C”, e vamos vir aqui na linha de código que estávamos digitando, onde precisamos colocar o endereço o local do nosso arquivo e dar um “Ctrl + V”.
Feito isso, o que eu vou querer fazer é dar uma olhada em umas cinco linhas, no meu caso aleatórias. Então dados_treino.sample(5)
para darmos uma olhada para ver como é que são esses dados.
Então, a configuração desses dados é o quê? Nós temos uma coluna “título”, que é a que vamos utilizar; uma coluna “texto”, que é o texto da reportagem, o corpo da reportagem; a data de lançamento dessa reportagem; categoria e subcategoria, que não nos interessam nesse momento e “link”.
Na realidade, do que vamos precisar é do título e da categoria. Por que título e categoria? Categoria é o que vamos querer prever, então vamos precisar dessa informação para o treinamento do modelo de classificação. Os títulos são os dados textuais que vamos utilizar para criar o nosso modelo Word2vec.
Então esses dados são dados textuais. Como esses dados vêm direto das reportagens, não houve nenhum tipo de pré-processamento. Nós vamos precisar fazer esse pré-processamento, como na maioria dos cursos de processamento de linguagem natural.
Nos cursos geralmente utilizamos o nltk
para fazer a tokenização, para fazer diversos processos do nosso pré-processamento. Dessa vez não vamos utilizar o nltk
, vamos utilizar uma biblioteca nova, o spacy
.
Vamos procurar no Google o “spaCy”. É essa primeira opção. O spaCy
é uma biblioteca open-source de processamento de linguagem natural.
Essa biblioteca já é voltada para desenvolver aplicações reais para a indústria de desenvolvimento de IA e de desenvolvimento de sistemas com modelos de processamento de linguagem natural.
Então ela já vem com diversas coisas prontas, ela é uma biblioteca super rápida e ela é ideal para preparar os nossos dados. Isso é o que ela está falando aqui, mas ela é muito boa mesmo para preparar os nossos dados, para modelos de deep learning, modelos mais avançados... inclusive o modelo que vamos utilizar, o Word2vec, e vamos utilizar a biblioteca Gensim
, que ele está até falando aqui na página, que ela ideal para fazer a preparação desses dados.
Então vamos inicializar a utilização dessa nossa biblioteca. Vamos clicar aqui na parte superior da página, em “Usage”. Aqui ele já traz para nós, dentro da documentação, como instalar essa biblioteca. Então, se você está utilizando o Mac ou o Windows e não está utilizando o Google Colab, você pode dar uma verificada em como fazer a instalação no seu sistema operacional e ele já deixa aqui mais abaixo o código pronto.
Se eu mudar aqui acima para o “Windows”, ele não mudou nada porque ele está utilizando o pip
para instalar, mas se eu colocar em conda
no “package manager”, por exemplo, ele vai mudar aqui o código, mostrando para você como você vai fazer a instalação do “spaCy”.
Só que eu quero instalar o pip
no Linux que é o que roda por baixo do Google Colab e o seguinte, aqui ele tem mais uma opção, que são esses models. O que é que são os models?
Se você já fez algum outro curso nosso de processamento de linguagem natural que precisou instalar e utilizar o nltk
, geralmente precisamos baixar dados específicos da língua que estamos trabalhando. No nosso caso, qual é a língua, o idioma que vamos estar trabalhando? É o português. Então, se clicarmos na opção “português” ele nos mostra como temos que instalar a biblioteca spacy
e depois como vamos fazer para instalar os pacotes, os dados necessários dos modelos da língua portuguesa.
Então, beleza, o Google Colab já tem o spaCy
instalado. Então eu não preciso fazer essa instalação, o pip install -U spacy
. O que eu preciso instalar são os dados em português e isso ele não tem, então o que eu vou fazer? Eu vou dar um “Ctrl + C” nessa linha que ele criou python -m spacy download pt_core_news_sm
e vou colar aqui em uma célula de código do nosso Colab.
Só que se eu executar isso daqui ele está chamando o comando python -m spacy download pt_core_news_sm
, mas ele está rodando como um código Python e isso não é um código Python. Esse daqui é um comando de terminal, como se você tivesse utilizando seu bash
ou qualquer outro terminal, correto?
Então eu preciso executar isso no nosso terminal. Como que eu posso fazer isso dentro do Colab? Dentro do meu próprio notebook, executar um comando lá e falar para ele executar esse comando pelo Linux? Eu vou colocar uma exclamação na frente do meu código. Então eu coloquei essa exclamação, agora sim: !python -m spacy download pt_core_news_sm
que é o nosso código. Eu vou rodar essa célula e ele vai inicializar a instalação.
Então, para você ter uma ideia: se eu colocar o código ls
e dar “Enter”, ele não vai fazer nada, vai gerar um erro. Vamos ver se ele gerou um erro. Ele não gerou um erro, que estranho... Era para ele gerar um erro, mas aparentemente o Colab entende o comando direto.
Então beleza, mas se eu der o !ls
aqui na célula de código ele fez a mesma coisa, mostrando a saída drive
e sample_data
que são os diretórios que nós temos aqui drive
e sample_data
.
Agora fizemos a instalação, o que que eu preciso fazer? Eu preciso verificar se a minha instalação do pt_core_new_sm
está correta. E como que eu posso fazer isso? Se eu voltar lá na documentação, vamos nos habituando a utilizar a documentação e tudo mais, eu tenho aqui, depois de installation, models & languages. Então vamos clicar aqui nela e verificar como que ele faz para importar esses modelos da linguagem.
Então o que ele faz? Ele chama esse spacy.load
com o nome do modelo. Aqui no caso, o nome do modelo que ele está utilizando é em inglês, nós vamos utilizar o nosso em português.
Então vamos verificar lá no Colab e fazer a mesma coisa. Ele chama de nlp
o nome dessa variável, eu vou chamar também nlp
. Ele foi lá para cima, deixa eu dar um “Ctrl + Z”. Eu vou dar até um “Ctrl + C” pois vamos precisar desse pt_core_news_sm
. Então eu vou chamar de nlp
, nlp
é um nome padrão que ele sempre utiliza e ele até recomenda que se utilize, quando estamos carregando os módulos da nossa linguagem específica. Então, nlp = spacy.load(pt_core_news_sm)
, com o nome do nosso modelo de linguagens entre os parênteses.
Fiz isso e o que aconteceu? Ele deu erro porque eu não importei o spacy
. Então na linha de código anterior eu coloco import spacy
. Ele vai dar mais um erro, já vou até avisar vocês para vocês não ficarem bravos comigo. Ele deu mais um erro, por quê?
Porque no momento que eu carreguei o meu kernel aqui da máquina no Google, ele ainda não tinha esses dados salvos, então preciso reinicializar o meu kernel para conseguir acessar esses dados, e como que eu faço isso? Eu venho aqui na barra superior em “Runtime > Restart runtime > YES”.
Ele está inicializando novamente aqui a nossa máquina, só que agora ele já tem esses dados salvos e o que que eu vou fazer? Eu vou até passar esse import
lá para cima, deixa eu dar um “Ctrl + X” aqui. Vou passar esse import
para cá, colando abaixo da linha do import pandas as pd
para ficar mais bonito; vou rodar essa célula de novo importando as bibliotecas, precisa importar novamente o meu dataframe.
Só que agora eu preciso instalar novamente os pacotes em português? Os módulos em português? Eu não preciso, eu vou até colocar aqui comentado: #Rodar apenas uma vez
. Claro, se você estiver fazendo isso no seu computador, você vai rodar o !python -m spacy download pt_core_news_sm
no terminal e essas linhas nem vão estar aqui. Mas caso você rode aí no Colab, esse daqui você vai rodar só uma vez.
E agora sim eu fiz a instalação do meu modelo de linguagem, o nlp
. Agora que eu tenho o meu spacy
devidamente instalado, vamos ver como que ele pode ser útil para fazermos o pré-processamento dos nossos dados. Vamos lá?
Então nós temos o nosso objeto nlp
criado e agora precisamos usar ele. Como que fazemos isso? Precisamos pegar um texto, que no caso vou colocar como exemplo aqui uma frase qualquer, texto = “Rio de Janeiro é uma cidade maravilhosa”
. Eu vou passar esse texto para o meu nlp(texto)
. Então vamos ver aqui qual que vai ser a saída.
Repara que ele retornou para mim o meu texto da mesma forma. Mas será que isso é realmente um texto? Se eu pegar aqui e colocar esse nlp(texto)
aqui dentro de uma variável para conseguirmos analisar ele melhor... então vamos colocar ele em uma variável chamada de doc
eu já vou explicar o porquê eu estou chamando isso de doc
.
Então coloquei nesse doc
aqui, agora eu quero verificar o tipo desse doc
. Então digitei type(doc)
. Vamos dar uma olhada no tipo desse doc
, e olha só que o tipo dele é um objeto aqui spacy.tokens.doc.Doc
. Está vendo porque eu chamei de doc
? Porque ele é um objeto dessa classe doc
.
Então, o seguinte, vamos entender um pouco melhor o que que é esse doc
para o spacy
, então vamos à documentação. Deixa eu dar um zoom aqui para ficar melhor a visualização, então vamos colocar aqui em 125%. É o seguinte, agora estávamos aqui em modelos e linguagens, que estávamos fazendo a instalação do nosso spacy
e instalando os dados necessários para criar os modelos. Eu vou vir aqui no canto esquerdo no “spacy 101” de novo, só que eu já quero ir aqui em “pipelines”, vou selecionar no canto esquerdo “pipelines”. Vamos selecioná-lo, que é onde ele fala um pouco, mesmo que superficialmente, do que que é esse doc
aqui.
E aqui tem um desenho bem legal, por quê? Ele está falando aqui que quando chamamos o nlp
, ele vai fazer diversos processos, no caso, tokenizar o nosso texto, taguear esse texto e afins, para transformar nesse doc
que é essa estrutura de dados aqui por baixo dos panos desse objeto.
Então, vamos olhar essa imagem aqui, ampliada. Temos o nosso texto, que lá no nosso exemplo era “Rio de Janeiro é uma cidade maravilhosa” e aqui temos o nosso nlp
que ele chamou exatamente de nlp
também aqui, então o nlp
.
O nosso objeto nlp
pegou o nosso texto e começou a fazer diversos processos dele. Entre esses processos, fazer a tokenização; depois o tagging; parsing; esse ner aqui é de reconhecimento de entidades nomeadas, então ele reconhece, por exemplo, nomes de empresa, nomes de pessoas, às vezes, estados, países e assim vai. Então ele gerou o nosso doc
e esse doc
é um conjunto de tokens com todas essas informações.
Então vamos voltar aqui para o nosso documento, para o nosso notebook e explorar um pouco esse doc
. Então, se esse doc
é um conjunto de tokens, quer dizer que se eu der um doc[0]
, por exemplo, eu vou ter o quê? A minha primeira palavra do texto. Essa primeira palavra, vai ser o quê? Antes, digito type(doc[0])
. Vai ser do tipo token
.
Agora o doc
já tem diversas funcionalidades interessantes, entre elas um dos atributos é as entidades, correto? Opa, aqui eu estou consultando o meu token e não o meu doc
, então o correto é doc.ents
. Eu tenho a minha entidade nomeada aqui que, no caso, era “Rio de Janeiro”.
Então olha só que legal: eu não precisei aqui criar diversos métodos, diversas funções para ele já me trazer um tanto de informação. Ele já está fazendo para mim automaticamente, quando eu crio o meu doc
.
Então isso facilita muito no nosso dia a dia em nlp
. Outra coisa interessante: o que eu consigo fazer com os tokens, no caso. Então eu vou pegar aqui o token 1, que é doc[0].
, e consultar diversos atributos que esse token tem. Por exemplo, esse token é um stopwords
? Digitando doc[0].is_stop
, vejo que é falso. Por quê?
Porque Rio não é um stopwords
. Mas o meu segundo token, o De (digito doc[1].is_stop
), é um stopwords
? Sim, ele é um stopwords
. Olha que legal, eu já tenho tudo isso pronto para nós então.
Veja como isso pode facilitar os nossos pré-processamentos. Eu não preciso criar uma função para stopwords
, uma função para tokenizar, eu já tenho tudo isso dentro da minha estrutura doc
.
Então, agora o que eu preciso? Eu preciso saber quais são os possíveis pré-processamentos que eu preciso para criar nossa representação Word2vec.
Então vamos relembrar um pouco das representações vetoriais que já vimos no último curso para pensarmos um pouco mais sobre os possíveis pré-processamentos.
Então vamos aqui relembrar primeiro uma vetorização mais simples que é a One-Hot-Encoding. Como era essa representação?
Tínhamos um conjunto de frases, que seriam os nossos textos, cada um poderia ser um título das nossas reportagens. Então, “TENHA UM BOM DIA”, “TENHA UM ÓTIMO DIA” e “TENHA UM PÉSSIMO DIA”. Vamos criar o nosso vocabulário, que é o quê? Cada palavra que eu tenho nesse conjunto de texto, só que sem repeti-las: “TENHA”, “UM”, “BOM”, “ÓTIMO”, “PÉSSIMO” e “DIA”. Agora eu vou criar a minha representação vetorial para cada uma dessas palavras.
Então aqui, na coluna, cada linha representa uma palavra e cada coluna representa uma posição no meu vocabulário. Então é o seguinte, a palavra “TENHA” vai estar como positivo apenas na posição que ela se encontra no meu vocabulário. Nas demais é a mesma coisa.
Então temos aqui que 1 vai estar com positivo apenas na posição 02 e todo o resto fica com 0. E assim é sucessivamente para todas as palavras. Por isso que essa representação é conhecida como One-Hot-Encoding.
Quais são os desafios dessa representação? Primeiro, ela vai ter dados extremamente esparsos, você não concorda? Porque eu tenho uma única posição como 1 e todas as outras como 0. Segundo, esse tamanho de vetor vai depender do tamanho do nosso vocabulário, então ele não vai ter um tamanho fixo. Podemos ter vetores que representam uma única palavra com 50 mil posições, por exemplo. Isso é muita coisa, vai ficar algo muito grande.
E aí estudamos então uma outra representação que levava em conta o contexto das palavras, que era justamente o Word2vec. Então tínhamos aqui, por exemplo, diversas palavras soltas no espaço: “Peugeot”, “China”, “Ferrari”, “Itália”, “Rússia” e “França”. De alguma maneira, esse vetor que criamos que leva em consideração o contexto das palavras e consegue agrupar em um plano, por exemplo (posicionar esses vetores no espaço hiperdimensional, no caso, mas aqui estamos representando no plano), as palavras que são utilizadas em mesmo contexto. Por exemplo, “Ferrari” e “Peugeot”, por que elas são utilizadas em mesmo contexto? Porque são marcas de carros, mais próximas do que palavras que representam nome de países, “Itália”, “França”, “Rússia” e “China”.
Veja que aqui nesse exemplo que nós estamos utilizando, posicionamos até Itália e França mais próxima do que Rússia e China. Por que nós fizemos isso? Provavelmente Itália e França são utilizados em contextos ainda mais próximos do que Rússia e China.
E o que gera essas representações baseadas em contextos? É justamente o nosso Word2vec, que pega uma base de dados, aqui representada por esses ícones, passa pelo nosso Word2vec e gera para nós essa representação da nossa palavra. Essa representação tem tamanho fixo e também esse vetor, então podemos ter vetores de 300 posições, 1000, 1500, nós que vamos definir o tamanho dessas nossas palavras.
Agora vamos ver como é que podemos fazer isso. Então esse nosso Word2vec vai ser muito semelhante com uma rede neural, vamos dizer assim, que é onde vamos ter uma camada de entrada, uma camada oculta e a camada de saída, que é a previsão da palavra.
Então é o seguinte, vamos para um exemplo onde eu tenho aqui a seguinte frase “EU MORO NA __, UM PAÍS LINDO”. A palavra que eu preciso prever, que é a palavra que eu estou gerando o meu vetor, no caso vai ser o nome de um país. Então o que eu vou querer fazer como pré-processamento?
Um dos passos que eu quero fazer é remover o que não me interessa. Então eu vou remover o “EU”, o “NA”, a vírgula, o “UM”. Por quê? Agora eu fico só com palavras que realmente agregam no meu contexto, então: “MORO”, “PAÍS” e “LINDO”. Eu já consigo compreender a minha frase, então eu removi aquilo que não me interessava. No nosso caso, vamos remover os stopwords
, vamos remover pontuação e a vamos remover também números.
Então eu removi o que não me interessava, e agora eu preciso do quê? Eu preciso de um contexto, e esse contexto pode ter tamanhos variados. Aqui nesse nosso exemplo vamos utilizar como contexto uma palavra antecessora à que queremos prever e uma palavra posterior à que queremos prever. Então o nosso contexto vai ser o “MORO” e o “PAÍS”.
Então o “MORO” e o “PAÍS” , as representações vetoriais dessas palavras, vão estar na camada de entrada e a palavra que eu tenho que prever é justamente o nome do país. Então, olha só, o que vai acontecer aqui? Ele vai ter um ciclo onde ele vai tentar prever, vai ajustar os parâmetros da minha camada oculta que gera o nosso vetor de n posições e ele vai ajustando isso de acordo com que ele vai tentando prever.
Então aqui ele está tentando prever “França”, depois ele vê que o contexto é o mesmo, e olha só o que me aparece aqui: a palavra Itália. Repara que o contexto não mudou, então eu poderia ter aqui “Itália”, “França”, “Brasil” e assim sucessivamente.
Os vetores que a minha camada oculta estará gerando serão mais próximos dessas palavras do que o nome de carro (são marcas de carro, Ferrari e Peugeot), já que o contexto da minha camada de entrada será alterado.
Então relembramos aqui um pouco de como são geradas as representações do Word2vec e já pensamos no que precisamos fazer de pré-processamento no nossos dados para conseguir realmente criar o nosso word embedding. Agora o que precisamos fazer é colocar a mão na massa e desenvolver esse pré-processamento. Vamos juntos.
O curso Word2Vec: treinamento de Word Embedding possui 182 minutos de vídeos, em um total de 47 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:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.