[ブレンダン・シリングフォード、ヤニス・アッサエル、クリス・ダイアー]
この実用的には、テキスト、コード、インタラクティブプロットを混合できるインタラクティブなWebベースのPythonコンピューティング環境である部分的に完全に複雑なIPythonノートブックが提供されます。
Pythonパッケージgensimに含まれるWord2Vec実装を使用して、TED TalkおよびWikipediaデータでWord2Vecモデルをトレーニングします。モデルをトレーニングした後、学習した埋め込みを分析および視覚化します。
ラボのワークステーションで、実用的なリポジトリをクローンして実行します. install-python.shターミナルに. install-python.shシェルスクリプトがpython 3にアナコンダをインストールし、この実用に必要なパッケージをインストールします。
リポジトリディレクトリでipython notebookを実行し、ブラウザでpractical.ipynbノートブックを開きます。
データセットをダウンロードしてプリプロセシングするためのコードは、時間を節約するために予測されています。ただし、生データを考慮して、将来の実践でこのようなタスクを実行する必要があると予想されます。それを読んで、あなたがそれを理解していることを確認してください。多くの場合、 nltkようなライブラリを使用してこのタスクを簡素化しますが、ここではそうしておらず、代わりにPythonのreモジュールを介して正規表現を使用することを選択しました。
最も一般的な単語とその発生数のリストを作成します。上位40語を見てください。 sklearn.feature_extraction.textモジュールのCountVectorizerクラスまたはcollections ModuleのCounterクラスを使用することができます。
上位1000語を取り、カウントのヒストグラムをプロットします。インタラクティブヒストグラムのプロットコードは、すでにノートブックに記載されています。
Handin:頻度分布ヒストグラムを表示します。
センテンスの処理リストが作成されたので、Word2vecトレーニングを実行しましょう。 Word2vec.com/gensim/models/word2vec.htmlのWord2vecのGensimドキュメントを読むことから、 Word2Vecクラスの使用方法を把握します。埋め込みを学びますmin_count=10を除いてデフォルトである必要があります。そのため、まれな単語が無視されます。トレーニングプロセスには30分以内にかかるはずです。
訓練されたWord2Vecインスタンスがmodel_tedと呼ばれる場合、LEN most_similar() len(model_ted.vocab)を使用して語彙サイズを確認できるはずです。
Handin:興味深い、そして/または驚くべき最近の隣人を含むいくつかの言葉を見つけてください。
Handin: T-SNEプロットで興味深いクラスターを見つけます。
オプション、熱狂的な学生のために: Gensimのドキュメントで説明されているように、インデックス作成演算子を使用して2つの単語ベクトルを手動で取得してから、Cosine距離をコンピューターしてみてください(それが次のように定義されていることを思い出してくださいnp.dot()およびnp.linalg.norm()に興味があるかもしれません。詳細については、numpyドキュメントを参照してください。これを、Gensimの関数によって計算された距離と比較してください。
wikitext-2データセットのダウンロード/プリプロセシングコード(前のコードと同様)を提供しました。コードはデータのランダムなサブサンプルを使用するため、TEDトークデータにサイズが匹敵します。
上記と同じ分析を繰り返しますが、このデータセットで。
Handin:同様の最近の隣人を持ついくつかの単語を見つけます。
Handin: T-SNEプロットで興味深いクラスターを見つけます。
Handin: TEDトークデータで学んだものと比較して、データで学んだ埋め込みの間に顕著な違いはありますか?
余分な時間がある場合は、埋め込みでK-Meansクラスタリング( sklearn.cluster.kmeansを使用するなど)を実行してみて、興味深いまたは意味のあるクラスターが得られるまでクラスターの数を調整してみてください。
太字の「 Handin: 」上の部分を参照してください。紙または口頭で、実用的なデモンストレーターにこれらに対する応答を示して、サインオフします。