[Brendan Shillingford, Yannis Assael, Chris Dyer]
Für diese Praktikum erhalten Sie ein teilweise vollständiger IPython-Notebook, eine interaktive webbasierte Python Computing-Umgebung, mit der wir Text, Code und interaktive Diagramme mischen können.
Wir werden Word2VEC -Modelle zu TED Talk und Wikipedia -Daten ausbilden, wobei die Word2VEC -Implementierung im Python -Paket gensim enthalten ist. Nach dem Training der Modelle werden wir die gelernten Einbettungen analysieren und visualisieren.
Klonen Sie auf einer Labor -Workstation das praktische Repository und führen Sie das aus . install-python.sh Shell Skript in einem Terminal, um Anaconda mit Python 3 und den für diese praktischen Pakete erforderlichen Pakete zu installieren.
Führen Sie ipython notebook im Repository -Verzeichnis aus und öffnen Sie das practical.ipynb Notebook in Ihrem Browser.
Der Code zum Herunterladen des Datensatzes und zur Vorverarbeitung ist vorgefertigt, Zeit zu sparen. Es wird jedoch erwartet, dass Sie eine solche Aufgabe in zukünftigen Praktikern angesichts von Rohdaten ausführen müssen. Lesen Sie es und stellen Sie sicher, dass Sie es verstehen. Oft verwendet man eine Bibliothek wie nltk , um diese Aufgabe zu vereinfachen, aber wir haben dies hier nicht getan und sich stattdessen für die Verwendung regelmäßiger Ausdrücke über re -Modul von Python entschieden.
Machen Sie eine Liste der häufigsten Wörter und deren Auftreten. Schauen Sie sich die Top 40 Wörter an. Möglicherweise möchten Sie die sklearn.feature_extraction.text CountVectorizer des Text -Moduls oder die Counter des collections verwenden.
Nehmen Sie die Top 1000 Wörter und zeichnen Sie ein Histogramm ihrer Zählungen. Der Plotcode für ein interaktives Histogramm ist bereits im Notebook angegeben.
Handin: Zeigen Sie das Histogramm der Frequenzverteilung.
Nachdem wir eine verarbeitete Liste von Sätzen haben, führen wir das Word2VEC -Training aus. Beginnen Sie mit der Gensim -Dokumentation für Word2VEC unter https://radimrehurek.com/gensim/models/word2vec.html, um herauszufinden, wie Sie die Word2Vec -Klasse verwenden. Lernen Sie Einbettungen in min_count=10 damit seltene Wörter ignoriert werden. Der Trainingsprozess sollte weniger als eine halbe Minute dauern.
Wenn Ihre trainierte Word2Vec -Instanz als model_ted bezeichnet wird, sollten Sie in der Lage sein, die Vokabulargröße mit len(model_ted.vocab) most_similar() überprüfen.
Handin: Finden Sie noch ein paar Wörter mit interessanten und/oder überraschenden Nachbarn der nächsten Nachbarn.
Handin: Finden Sie einen interessanten Cluster in der T-Sne-Handlung.
Optional, für begeisterte Schüler: Versuchen Sie manuell, zwei Wortvektoren mit dem Indexierungsbetreiber manuell abzurufen, wie in Gensims Dokumentation beschrieben, und dann ihre Cosinus -Entfernungen computer (erinnern Sie sich daran, dass es definiert ist als np.dot() und np.linalg.norm() finden Sie in der Numpy -Dokumentation für Einzelheiten. Vergleichen Sie dies mit der Entfernung, die von Gensims Funktionen berechnet wird.
Wir haben den Code für den Download/Vorverarbeitet (ähnlich dem vorherigen Code) für den Wikitext-2-Datensatz bereitgestellt. Der Code verwendet eine zufällige Teilstichprobe der Daten, sodass er mit den TED -Talk -Daten vergleichbar ist.
Wiederholen Sie dieselbe Analyse wie oben, jedoch auf diesem Datensatz.
Handin: Finden Sie ein paar Wörter mit ähnlichen Nachbarn.
Handin: Finden Sie einen interessanten Cluster in der T-Sne-Handlung.
Handin: Gibt es bemerkenswerte Unterschiede zwischen den in Daten erlernten Einbettungen im Vergleich zu den in den TED -Talksdaten gelernten?
Wenn Sie zusätzliche Zeit haben, versuchen Sie, ein K-Means-Clustering (z. B. mit sklearn.cluster.kmeans ) auf den Einbettungen durchzuführen und die Anzahl der Cluster zu stimmen, bis Sie interessante oder aussagekräftige Cluster erhalten.
Sehen Sie die fetten " Handin: " -Teile oben. Zeigen Sie auf dem Papier oder mündlich einem praktischen Demonstrator Ihre Antwort auf diese, um sich abzuschaffen.