Gensim-creating-lsi-and-hdp-topic-model
Gensim-LSIおよびHDPトピックモデルの作成
この章では、Gensimに関する潜在的セマンティックインデックス(LSI)および階層型ディリクレプロセス(HDP)トピックモデルの作成について説明します。
Gensimで潜在ディリクレ割り当て(LDA)を使用して最初に実装されたトピックモデリングアルゴリズムは、*潜在セマンティックインデックス(LSI)*です。 *潜在的意味分析(LSA)*とも呼ばれます。 1988年にスコットディアウェスター、スーザンドゥマイス、ジョージファーナス、リチャードハーシュマン、トーマスランダー、カレンロクバウム、リンストリートが特許を取得しました。
このセクションでは、LSIモデルを設定します。 これは、LDAモデルを設定するのと同じ方法で実行できます。 gensim.models からLSIモデルをインポートする必要があります。
LSIの役割
実際、LSIは、特に分散セマンティクスにおいて、技術NLPです。 一連のドキュメントとこれらのドキュメントに含まれる用語との関係を分析します。 その機能について説明すると、大きなテキストからドキュメントごとの単語数を含むマトリックスが作成されます。
構築後、行数を減らすために、LSIモデルは特異値分解(SVD)と呼ばれる数学的手法を使用します。 行数を減らすことに加えて、列間の類似構造も保持します。
マトリックスでは、行は一意の単語を表し、列は各ドキュメントを表します。 これは、分布仮説に基づいて機能します。 意味が近い単語は同じ種類のテキストに現れると想定しています。
Gensimによる実装
ここでは、LSI(潜在セマンティックインデックス)を使用して、データセットから自然に議論されたトピックを抽出します。
データセットを読み込んでいます
使用するデータセットは、ニュースレポートのさまざまなセクションからの数千のニュース記事を含む* ’20ニュースグループ ’のデータセットです。 *Sklearn データセットで利用できます。 私たちは次のPythonスクリプトの助けを借りて簡単にダウンロードできます-
次のスクリプトの助けを借りて、サンプルニュースのいくつかを見てみましょう-
前提条件
NLTKのストップワードとScapyの英語モデルが必要です。 どちらも次のようにダウンロードできます-
必要なパッケージのインポート
LSIモデルを構築するには、以下の必要なパッケージをインポートする必要があります-
ストップワードの準備
次に、ストップワードをインポートして使用する必要があります-
テキストを整理する
次に、Gensimの* simple_preprocess()を使用して、各文を単語のリストにトークン化する必要があります。 また、句読点や不要な文字を削除する必要があります。 これを行うために、 sent_to_words()*という名前の関数を作成します-
バイグラムおよびトライグラムモデルの構築
私たちが知っているように、バイグラムはドキュメントで頻繁に発生する2つの単語であり、トライグラムはドキュメントで頻繁に発生する3つの単語です。 Gensimのフレーズモデルの助けを借りて、これを行うことができます-
ストップワードを除外する
次に、ストップワードを除外する必要があります。 それに加えて、バイグラム、トリグラムを作成し、見出し語化するための関数も作成します-
トピックモデルの辞書とコーパスの構築
次に、辞書とコーパスを作成する必要があります。 私たちは前の例でもそれをしました-
LSIトピックモデルの構築
LSIモデルのトレーニングに必要なものはすべて実装済みです。 ここで、LSIトピックモデルを作成します。 私たちの実装例では、次のコード行の助けを借りて行うことができます-
実装例
LDAトピックモデルを構築するための完全な実装例を見てみましょう-
これで、上記で作成したLSIモデルを使用してトピックを取得できます。
LSIモデルのトピックの表示
上記で作成したLSIモデル*(lsi_model)*を使用して、ドキュメントのトピックを表示できます。 それは次のスクリプトの助けを借りて行うことができます-
出力
階層型ディリクレプロセス(HPD)
LDAやLSIなどのトピックモデルは、手動では分析できないテキストの大規模なアーカイブを要約および整理するのに役立ちます。 LDAおよびLSIとは別に、Gensimのもう1つの強力なトピックモデルはHDP(階層型ディリクレプロセス)です。 これは基本的に、グループ化されたデータの教師なし分析のための混合メンバーシップモデルです。 LDA(有限の対応物)とは異なり、HDPはデータからトピックの数を推測します。
Gensimによる実装
GensimでHDPを実装するには、コーパスと辞書をトレーニングする必要があります(上記の例でLDAおよびLSIトピックモデルを実装しているときと同様)。gensim.models.HdpModelからインポートできるHDPトピックモデル。 ここでも20NewsgroupデータにHDPトピックモデルを実装します。手順も同じです。
コーパスと辞書(LSIおよびLDAモデルの上記の例で作成された)の場合、次のようにHdpModelをインポートできます-
LSIモデルのトピックの表示
HDPモデル*(Hdp_model)*を使用して、ドキュメントのトピックを表示できます。 それは次のスクリプトの助けを借りて行うことができます-