【Python】自然言語処理ライブラリのGensimをインストールする

【Python】自然言語処理ライブラリのGensimをインストールする プログラミング

自然言語処理をPythonで行うなら、Gensimが選択肢になります。
トピックモデル(LDA)を本格的にやるなら、Gensimが最有力です。

本記事の内容

  • Gensimとは?
  • Gensimのシステム要件
  • Gensimのインストール
  • Gensimの動作確認

それでは、上記に沿って解説していきます。

Gensimとは?

Gensimは、文書をベクトル(数値)化するオープンソースのPythonライブラリです。
Gensimの主なアルゴリズムには、以下のモノがあります。

  • Word2Vec
  • FastText
  • Latent Semantic Indexing (LSI、LSA、LsiModel)
  • Latent Dirichlet Allocation (LDA、LdaModel)

これらは、教師なしの機械学習アルゴリズムです。
そのため、とにかくテキストデータを集めることが重要となります。

そして、集めたテキストデータを単語に分けることも重要なことです。
いわゆる形態素解析を行う必要があります。

つまり、Gensimを利用するために形態素解析を行う必要があるということです。
このことにより、Gensimを利用するハードルが少し上がります。

でも、安心してください。
形態素解析は、それ専用のソフトウェアが存在します。
以下は、代表的なモノとなります。

  • GiNZA
  • Janome
  • Mecab

これらをインストールして、Pythonから使えるようにすれば大したことありません。
その方法は、それぞれごとに解説しています。

お好きなモノを選んでください。
個人的には、Mecabを使うケースが多いです。

以上、Gensimについて形態素解析を中心にして説明しました。
次は、Gensimのシステム要件を確認します。

Gensimのシステム要件

現時点(2021年7月)でのGensimの最新バージョンは、4.0.1となります。
この最新バージョンは、2021年4月1日にリリースされています。

サポートOSに関しては、以下を含むクロスプラットフォーム対応となります。

  • Windows
  • macOS
  • Linux

そして、サポート対象となるPythonのバージョンが以下となります。

  • Python 3.6
  • Python 3.7
  • Python 3.8

Python 3.9がないのは、単にテストをしていないからだけでしょう。
Python 3.6以降に対応していれば、Python 3.9でも問題はないはずです。

なお、私は以下のバージョンで検証しています。

>python -V
Python 3.9.5

あと、Numpyが必要との記載があります。
つまり、GensimがNumpyに依存しているということです。

pipでインストールするので、それほど気にする必要はありません。
ただ、最新版のNumpyはもうPython 3.6のサポートをやめています。

バージョンリリース日サポート期限
3.62016年12月23日2021年12月
3.72018年6月27日2023年6月
3.82019年10月14日2024年10月
3.92020年10月5日2025年10月

上記は、Pythonの公式開発サイクルになります。
NumpyによるPython 3.6の切り捨ては、サポート期限が切れるのを見越してのことでしょう。

その意味では、実質GensimのサポートはPython 3.7以降と言えます。

以上、Gensimのシステム要件を説明しました。
次は、Gensimをインストールしていきます。

Gensimのインストール

まずは、現状のインストール済みパッケージを確認しておきます。

>pip list
Package    Version
---------- -------
pip        21.1.3
setuptools 57.0.0

次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。

python -m pip install --upgrade pip setuptools

では、 Gensimのインストールです。
Gensimのインストールは、以下のコマンドとなります。

pip install gensim

インストール処理は、ちょっとだけ待ちます。
では、どんなパッケージがインストールされたのかを確認しましょう。

>pip list
Package    Version
---------- -------
gensim     4.0.1
numpy      1.21.0
pip        21.1.3
scipy      1.7.0
setuptools 57.0.0
smart-open 5.1.0

Gensimは、Scipyにも依存しているようです。
Scipyについては、次の記事で説明しています。

それ以外は、smart-openですね。
smart-openは、前提条件として記載されていました。

以上、Gensimのインストールを説明しました。
最後は、Gensimの動作確認を行いましょう。

Gensimの動作確認

Gensimの動作確認は、以下のコードで行います。

import gensim.downloader as api
wv = api.load('word2vec-google-news-300')

for r in wv.most_similar(positive=['blog']):
    print(r)

初めて上記を実行すると、しばらく待たされます。
なぜなら、Word2Vecの学習済みモデルをダウンロードするからです。

ダウンロードするモデルの正体は、以下。

word2vec-GoogleNews-vectors(GitHUb上のページ)
https://github.com/mmihaltz/word2vec-GoogleNews-vectors

日本語未対応のモデルとなります。
容量的には、1GBほどです。
これでも、学習済みモデルとしては小さい方です。

では、コード実行の続きに戻りましょう。
学習済みモデルのダウンロードが終わって、それ以降の処理が実行されます。

最終的には、次の表示で終わります。

('Blog', 0.7875412702560425)
('blogs', 0.7712531685829163)
('blogger', 0.70732581615448)
('blogsite', 0.6899762153625488)
('Weblog', 0.6877126097679138)
('Visit_Sandy_Bauers', 0.6658025979995728)
('blogging', 0.658011257648468)
('http://go.philly.com/greenspace', 0.6500120162963867)
('Blogger', 0.6438940763473511)
('Twitter', 0.6436737179756165)

「blog」の類似語が表示されています。
確かに、「blog」を想起させる単語です。

今度は、「dog」で実行してみましょう。
結果は、以下。

('dogs', 0.8680489659309387)
('puppy', 0.8106428384780884)
('pit_bull', 0.780396044254303)
('pooch', 0.7627376914024353)
('cat', 0.7609457969665527)
('golden_retriever', 0.7500901818275452)
('German_shepherd', 0.7465174198150635)
('Rottweiler', 0.7437615394592285)
('beagle', 0.7418621778488159)
('pup', 0.740691065788269)

「dog」に近い単語ですね。
納得の結果となりました。
Gensimの動作確認としては十分でしょう。

以上、Gensimの動作確認を説明しました。

タイトルとURLをコピーしました