[Brendan Shillingford, Yannis Assael, Chris Dyer]
Pour cette pratique, vous bénéficierez d'un cahier IPython partiellement complet, un environnement de calcul Python Web interactif qui nous permet de mélanger le texte, le code et les tracés interactifs.
Nous allons former des modèles Word2VEC sur les données TED Talk et Wikipedia, en utilisant l'implémentation Word2Vec incluse dans le package Python gensim . Après avoir entraîné les modèles, nous analyserons et visualiserons les intérêts apprises.
Sur un poste de travail de laboratoire, clonez le référentiel pratique et exécutez le . install-python.sh Shell Script dans un terminal pour installer Anaconda avec Python 3, et les packages requis pour ce pratique.
Exécutez ipython notebook dans le répertoire du référentiel et ouvrez le cahier practical.ipynb dans votre navigateur.
Le code de téléchargement de l'ensemble de données et de prétraitement est pré-écrit pour gagner du temps. Cependant, il est prévu que vous devrez effectuer une telle tâche dans de futures pratiques, compte tenu des données brutes. Lisez-le et assurez-vous de le comprendre. Souvent, on utilise une bibliothèque comme nltk pour simplifier cette tâche, mais nous ne l'avons pas fait ici et nous avons plutôt choisi d'utiliser des expressions régulières via le module re de Python.
Faites une liste des mots les plus courants et leur compte d'occasion. Jetez un œil aux 40 premiers mots. Vous souhaiterez peut collections être utiliser Counter classe CountVectorizer du module sklearn.feature_extraction.text .
Prenez les 1000 premiers mots et tracez un histogramme de leur décompte. Le code de traçage pour un histogramme interactif est déjà donné dans le cahier.
Handin: montrez l'histogramme de distribution de fréquence.
Maintenant que nous avons une liste traitée de phrases, exécutons la formation Word2Vec. Commencez par lire la documentation Gensim pour Word2Vec sur https://radimrehurek.com/Gensim/Models/Word2Vec.html, pour déterminer comment utiliser la classe Word2Vec . Apprenez des intégres dans min_count=10 afin que les mots peu fréquents soient ignorés. Le processus de formation devrait prendre moins d'une demi-minute.
Si votre instance Word2Vec formée est appelée model_ted , vous devriez être en mesure de vérifier la taille du vocabulaire à l'aide de len(model_ted.vocab) , qui devrait être vers 14427. Essayez d'utiliser la méthode most_similar() pour retourner une liste des mots les plus similaires à "man" et "ordinateur".
Handin: Trouvez quelques mots supplémentaires avec des voisins les plus proches intéressants et / ou surprenants.
Handin: Trouvez un cluster intéressant dans l'intrigue T-SNE.
Facultatif, pour les étudiants enthousiastes: essayez de récupérer manuellement les vecteurs de deux mots à l'aide de l'opérateur d'indexation comme décrit dans la documentation de Gensim, puis par ordinateur leurs distances de cosinus (rappelez-vous qu'il est défini comme np.dot() et np.linalg.norm() , voir la documentation Numpy pour plus de détails. Comparez cela à la distance calculée par les fonctions de Gensim.
Nous avons fourni du code de téléchargement / prétraitement (similaire au code précédent) pour l'ensemble de données Wikitext-2. Le code utilise un sous-échantillon aléatoire des données, il est donc comparable en taille aux données TED Talk.
Répétez la même analyse que ci-dessus mais sur cet ensemble de données.
Handin: Trouvez quelques mots avec des voisins les plus proches similaires.
Handin: Trouvez un cluster intéressant dans l'intrigue T-SNE.
HANDIN: Y a-t-il des différences notables entre les intérêts appris sur les données par rapport à ceux appris sur les données TED Talk?
Si vous avez du temps supplémentaire, essayez d'effectuer un clustering k-means (par exemple en utilisant sklearn.cluster.kmeans ) sur les intégres, en réglant le nombre de clusters jusqu'à ce que vous obteniez des grappes intéressantes ou significatives.
Voir le " Handin: " Parts en gras ci-dessus. Sur le papier ou verbalement, montrez un démonstrateur pratique votre réponse à ceux-ci pour vous faire signe.