Gensim-developing-word-embedding
Gensim-単語埋め込みの開発
この章は、Gensimに埋め込まれた単語の開発を理解するのに役立ちます。
単語の埋め込み、単語とドキュメントを表現するアプローチは、同じ意味を持つ単語が類似した表現を持つテキストの密なベクトル表現です。 以下は、単語の埋め込みのいくつかの特徴です-
- これは、事前に定義されたベクトル空間で個々の単語を実数値のベクトルとして表すクラスのテクニックです。
- すべての単語が1つのベクトルにマッピングされ、ベクトル値はNN(ニューラルネットワーク)と同じ方法で学習されるため、この手法はしばしばDL(深層学習)の分野にまとめられます。
- 単語埋め込み手法の主要なアプローチは、すべての単語の密な分散表現です。
さまざまな単語の埋め込み方法/アルゴリズム
上記のように、単語の埋め込み方法/アルゴリズムは、テキストのコーパスから実数値のベクトル表現を学習します。 この学習プロセスは、ドキュメント分類などのタスクでNNモデルを使用するか、ドキュメント統計などの監視されていないプロセスです。 ここでは、テキストから埋め込む単語を学習するために使用できる2つの方法/アルゴリズムについて説明します-
GoogleによるWord2Vec
Tomas Mikolovらによって開発されたWord2Vec。 al. 2013年のGoogleでは、テキストコーパスから埋め込まれた単語を効率的に学習するための統計手法です。 実際には、NNベースの単語埋め込みトレーニングをより効率的にするための応答として開発されました。 これは、単語埋め込みの事実上の標準になっています。
Word2Vecによる単語の埋め込みには、学習したベクトルの分析と、単語の表現に関するベクトル数学の調査が含まれます。 以下は、Word2Vecメソッドの一部として使用できる2つの異なる学習方法です-
- CBoW(単語の連続バッグ)モデル
- 連続スキップグラムモデル
GloVe by Standford
GloVe(Word表現のグローバルベクトル)は、Word2Vecメソッドの拡張機能です。 それはペニントンらによって開発されました。 スタンフォードで。 GloVeアルゴリズムは両方の混合です-
- LSA(潜在的意味分析)などの行列因数分解手法のグローバル統計
- Word2Vecのローカルコンテキストベースの学習。
ローカルコンテキストを定義するためにウィンドウを使用する代わりに、その機能について話す場合、GloVeはテキストコーパス全体の統計を使用して、明示的な単語の共起行列を作成します。
Word2Vec埋め込みの開発
ここでは、Gensimを使用してWord2Vec埋め込みを開発します。 Word2Vecモデルを操作するために、Gensimは models.word2vec からインポートできる Word2Vec クラスを提供しています。 その実装のために、word2vecは多くのテキストを必要とします。 アマゾンレビューコーパス全体。 しかし、ここでは、この原則をメモリ内テキストに適用します。
実装例
最初に、次のようにgensim.modelsからWord2Vecクラスをインポートする必要があります-
次に、トレーニングデータを定義する必要があります。 大きなテキストファイルを取得するのではなく、このプリンシパルを実装するためにいくつかの文を使用しています。
トレーニングデータが提供されたら、モデルをトレーニングする必要があります。 それは次のように行うことができます-
モデルを次のように要約できます−;
私たちは次のように語彙を要約することができます-
次に、1つの単語のベクトルにアクセスしましょう。 私たちは「チュートリアル」という言葉のためにそうしています。
次に、モデルを保存する必要があります-
次に、モデルをロードする必要があります-
最後に、保存されたモデルを次のように印刷します-
完全な実装例
出力
単語の埋め込みの視覚化
埋め込みという言葉を視覚化して調べることもできます。 これは、(PCAのような)古典的な投影法を使用して、高次元の単語ベクトルを2次元プロットに削減することで実行できます。 いったん削減されると、それらをグラフにプロットできます。
PCAを使用した単語ベクトルのプロット
最初に、次のようにトレーニング済みモデルからすべてのベクトルを取得する必要があります-
次に、PCAクラスを次のように使用して、単語ベクトルの2D PCAモデルを作成する必要があります-
今、私たちは次のようにmatplotlibを使用して、結果の投影をプロットできます-
また、グラフ上のポイントに単語自体で注釈を付けることもできます。 次のようにmatplotlibを使用して、結果の投影をプロットします-