自然言語処理を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.6 | 2016年12月23日 | 2021年12月 |
3.7 | 2018年6月27日 | 2023年6月 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年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の動作確認を説明しました。