[Brendan Shillingford, Yannis Assael, Chris Dyer]
Para isso, você receberá um notebook IPython parcialmente completo, um ambiente interativo de computação em Python baseado na Web que nos permite misturar texto, código e gráficos interativos.
Estaremos treinando modelos Word2Vec nos dados do TED Talk e Wikipedia, usando a implementação do Word2Vec incluída no pacote Python gensim . Depois de treinar os modelos, analisaremos e visualizaremos as incorporações aprendidas.
Em uma estação de trabalho de laboratório, clone o repositório prático e execute o . install-python.sh shell script em um terminal para instalar o anaconda com o python 3 e os pacotes necessários para isso.
Execute ipython notebook no diretório do repositório e abra o notebook practical.ipynb no seu navegador.
O código para baixar o conjunto de dados e pré -processamento é pré -escrito para economizar tempo. No entanto, espera -se que você precise executar essa tarefa em futuras práticas, dados brutos. Leia e certifique -se de entender. Muitas vezes, usa -se uma biblioteca como nltk para simplificar essa tarefa, mas não o fizemos aqui e, em vez disso, optamos por usar expressões regulares através do módulo re do Python.
Faça uma lista das palavras mais comuns e sua ocorrência conta. Dê uma olhada nas 40 principais palavras. Você pode usar a classe CountVectorizer do módulo sklearn.feature_extraction.text ou a classe Counter do módulo collections .
Pegue as 1000 palavras superiores e plote um histograma de suas contagens. O código de plotagem para um histograma interativo já é fornecido no notebook.
Handin: mostre o histograma de distribuição de frequência.
Agora que temos uma lista processada de frases, vamos executar o treinamento do Word2Vec. Comece lendo a documentação de Gensim para o Word2vec em https://radiMrenedurek.com/gensim/models/word2vec.html, para descobrir como usar a classe Word2Vec . Aprenda incorporação min_count=10 para que palavras frequentes sejam ignoradas. O processo de treinamento deve levar menos de meio minuto.
Se a sua instância treinada Word2Vec for chamada model_ted , você poderá verificar o tamanho do vocabulário usando len(model_ted.vocab) , que deve ser de 14427. Tente usar o método most_similar() para retornar uma lista das palavras mais semelhantes ao "homem" e "computador".
Handin: Encontre mais algumas palavras com vizinhos interessantes e/ou surpreendentes mais próximos.
Handin: Encontre um cluster interessante no enredo T-Sne.
Opcional, para estudantes entusiasmados: tente recuperar manualmente dois vetores de palavras usando o operador de indexação, conforme descrito na documentação de Gensim e, em seguida, computador suas distâncias cosseno (lembre -se de que é definido como np.dot() e np.linalg.norm() , consulte a documentação Numpy para obter detalhes. Compare isso com a distância calculada pelas funções de Gensim.
Fornecemos o código de download/pré-processamento (semelhante ao código anterior) para o conjunto de dados Wikitext-2. O código usa uma subamostra aleatória dos dados para que seja comparável em tamanho aos dados do TED Talk.
Repita a mesma análise acima, mas neste conjunto de dados.
Handin: Encontre algumas palavras com vizinhos mais próximos semelhantes.
Handin: Encontre um cluster interessante no enredo T-Sne.
Handin: Existem diferenças notáveis entre as incorporações aprendidas nos dados em comparação com os aprendidos nos dados do TED Talk?
Se você tiver tempo extra, tente executar um cluster de means (por exemplo, usando sklearn.cluster.kmeans ) nas incorporações, ajustando o número de clusters até obter clusters interessantes ou significativos.
Veja as peças em negrito " Handin: " acima. No papel ou verbalmente, mostre a um demonstrador prático sua resposta a isso para ser assinado.