okpy

Pythonエンジニア兼テックリーダーが、多くのプロジェクトとチーム運営から得た実践的な知識を共有するブログです。

自然言語処理に特化したPythonライブラリ: gensimライブラリ完全ガイド

Python gensim ライブラリ完全ガイド

Pythongensim は、文書シミラリティ計算やトピックモデリングなど、自然言語処理に特化したライブラリです。

1. gensim ライブラリの概要

  • LDA (トピックモデル)やDoc2Vec / Word2Vecなどを使用した分析に適す
  • 大規模テキストを効率的に処理
  • 各種の文書ベクトル化、類似度計算を支援

インストール方法

pip install gensim

2. 主な機能と使用例

(1) 単純な文章をトークナイズ

from gensim.utils import simple_preprocess

doc = "Gensim is a great Python library for topic modeling."
print(simple_preprocess(doc))

(2) Dictionary の作成

from gensim.corpora import Dictionary

docs = [["gensim", "is", "great"], ["topic", "modeling", "library"]]
dictionary = Dictionary(docs)
print(dictionary.token2id)

(3) Bag-of-Words 表現

corpus = [dictionary.doc2bow(text) for text in docs]
print(corpus)

(4) TF-IDF の計算

from gensim.models import TfidfModel

tfidf = TfidfModel(corpus)
tfidf_corpus = tfidf[corpus]
print(list(tfidf_corpus))

(5) LSI モデルの作成

from gensim.models import LsiModel

lsi = LsiModel(tfidf_corpus, id2word=dictionary, num_topics=2)
print(lsi.print_topics())

(6) LDA モデルの作成

from gensim.models import LdaModel

lda = LdaModel(corpus, num_topics=2, id2word=dictionary)
print(lda.print_topics())

(7) Word2Vec の訓練

from gensim.models import Word2Vec

model = Word2Vec(docs, vector_size=50, window=2, min_count=1, workers=1)
print(model.wv["gensim"])

(8) Doc2Vec の使用

from gensim.models.doc2vec import Doc2Vec, TaggedDocument

tagged_data = [TaggedDocument(words=d, tags=[str(i)]) for i, d in enumerate(docs)]
model = Doc2Vec(tagged_data, vector_size=20, window=2, min_count=1, workers=1)
print(model.dv["0"])

(9) 類似語の検索

print(model.wv.most_similar("gensim"))

(10) モデルの保存と読み込み

model.save("word2vec.model")
model = Word2Vec.load("word2vec.model")

3. gensim の主要モジュール

機能 説明
simple_preprocess 文章を単語に分解
Dictionary 単語とIDの対応関係の生成
TfidfModel TF-IDFの計算
LdaModel LDA によるトピック分析
Word2Vec 言語の分散表現を形成

まとめ

gensim は、文書分析とトピックモデリングを手軽に行うための最適なライブラリです。文書の類似性評価やテーマ分析に役立てるので、文章理解を効率化したい方に最適です 🚀