コンテンツにスキップ

Python/Gensim

出典: フリー教科書『ウィキブックス(Wikibooks)』

Gensimの概要

[編集]

Gensim(ジェンシム)は、Pythonで利用できるオープンソースの自然言語処理(NLP)ライブラリであり、特にトピックモデリングやテキスト類似度の計算などの機能に特化しています。Gensimは、効率的に大規模なテキストデータを処理できるように設計されており、テキストの意味をベクトル表現に変換し、それを使って様々なタスクを実行することができます。

Word2Vecモデル

[編集]

GensimはWord2Vecアルゴリズムを実装しており、テキストコーパスから単語の分散表現(word embeddings)を学習できます。これにより、単語の意味や関連性をベクトルとして表現し、文書や単語の類似度を計算することが可能になります。

Doc2Vecモデル

[編集]

Word2Vecの拡張版として、GensimはDoc2Vecもサポートしています。Doc2Vecは、文書全体の分散表現を学習し、文書レベルの類似度計算に利用されます。

LDA(Latent Dirichlet Allocation)トピックモデル

[編集]

GensimはLDAアルゴリズムを実装しており、テキストコーパスからトピックモデルを学習できます。LDAは、文書のトピック構造を抽出するために広く用いられる手法です。

TF-IDFモデル

[編集]

Gensimは、TF-IDF(Term Frequency-Inverse Document Frequency)を計算するためのツールも提供しています。TF-IDFは、文書内での単語の重要性を計算するために使用されます。

テキスト類似度計算

[編集]

Gensimは、文書の類似度を計算するための機能を提供します。Word2VecやDoc2Vecなどで学習された分散表現を利用して、文書間の意味的な類似性を評価することができます。

FastTextモデル

[編集]

Gensimは、FastTextモデルもサポートしています。FastTextは、subword情報を考慮した高速な単語の分散表現を学習する手法です。

Gensimのコード例

[編集]

コードは未検証です。検証&修正してくれる方を募集しています

Word2Vecモデルの学習と類似度計算

[編集]
from gensim.models import Word2Vec

# テキストコーパス
corpus = [['apple', 'banana', 'orange', 'grape'],
          ['banana', 'orange', 'grape', 'kiwi'],
          ['apple', 'banana', 'grape'],
          ['orange', 'kiwi', 'grape', 'apple']]

# Word2Vecモデルの学習
model = Word2Vec(corpus, vector_size=100, window=2, min_count=1, workers=4)

# 単語のベクトル表現の取得
vector_apple = model.wv['apple']
vector_orange = model.wv['orange']

# 単語の類似度計算
similarity_score = model.wv.similarity('apple', 'orange')
print(similarity_score)

LDAトピックモデルの学習

[編集]
from gensim import corpora
from gensim.models import LdaModel

# テキストコーパス
documents = [["apple", "banana", "orange", "grape"],
             ["banana", "orange", "grape", "kiwi"],
             ["apple", "banana", "grape"],
             ["orange", "kiwi", "grape", "apple"]]

# 辞書を作成
dictionary = corpora.Dictionary(documents)

# 文書をBoW表現に変換
corpus = [dictionary.doc2bow(doc) for doc in documents]

# LDAモデルの学習
model = LdaModel(corpus, num_topics=2, id2word=dictionary, passes=10)

# トピックを表示
topics = model.print_topics(num_words=4)
print(topics)

これらのコード例は、Gensimの基本的な機能を示しています。Gensimは様々なNLPタスクに利用できる豊富な機能を提供しており、詳細な使用方法については公式ドキュメントを参照することをおすすめします。