トピックモデル(LDA)で役に立つpyLDAvisを説明していきます。
試行錯誤する際に、効果的なライブラリと言えます。
本記事の内容
- pyLDAvisとは?
- pyLDAvisのシステム要件
- pyLDAvisのインストール
- pyLDAvisの動作確認
それでは、上記に沿って解説していきます。
pyLDAvisとは?
pyLDAvisは、トピックモデルをインタラクティブに可視化するためのPythonライブラリです。
「百聞は一見に如かず」であるため、次のデモを確認してみてください。
トピックモデルのインタラクティブなデモ
https://self-development.info/etc/html/movies.html
pyLDAvisを使えば、このようなhtmlをさくっと作成できます。
pyLDAvisは学習済みのモデルを読み込んでhtmlを作成するだけです。
その学習済みモデルの作成は、別途行う必要があります。
あと、学習する際に必要となるテキストデータも用意しないといけません。
さらには、テキストデータを形態素解析することも必要になります。
トピックモデル(LDA)自体が、そもそも機械学習による自然言語分析ですからね。
ちゃんとやろうとしたら、それなりに大掛かりになってしまいます。
この記事では、あくまでpyLDAvisについての解説となります。
そのため、動作確認には学習済みのモデルを利用します。
よって、みなさんも構えずに読み進めてください。
以上、pyLDAvisについて説明しました。
次は、pyLDAvisのシステム要件を確認します。
pyLDAvisのシステム要件
現時点(2021年7月)でのpyLDAvisの最新バージョンは、3.3.1となります。
この最新バージョンは、2021年3月24日にリリースされています。
サポートOSに関しては、以下を含むクロスプラットフォーム対応と思われます。
- Windows
- macOS
- Linux
そもそも、サポートOSが記載されていません。
ただ、ソースを見る限りでOS依存はありません。
このような場合は、ほぼクロスプラットフォーム対応です。
そして、サポート対象となるPythonのバージョンは以下。
- Python 3.7
- Python 3.8
- Python 3.9
Python 3.6をサポート対象外にするライブラリが増えてきました。
以下のPython公式開発サイクルをもとに判断しているのでしょう。
バージョン | リリース日 | サポート期限 |
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バージョン以上に注意すべきは、依存ライブラリです。
以下は、requirements.txtの内容になります。
numpy>=1.20.0 scipy pandas>=1.2.0 joblib jinja2 numexpr future funcy sklearn scikit-learn gensim setuptools
これらは、pyLDAvisが直接依存するだけのモノです。
依存するライブラリが、さらに依存するライブラリもあるでしょう。
それを込みで考えると、かなり多くのパッケージがインストールされることになります。
したがって、pyLDAvisは仮想環境へインストールすることをおススメします。
仮想環境については、次の記事で解説しています。
以上、pyLDAvisのシステム要件について説明しました。
次は、pyLDAvisをインストールしていきます。
pyLDAvisのインストール
最初に、現状のインストール済みパッケージを確認しておきます。
>pip list Package Version ---------- ------- pip 21.1.3 setuptools 57.0.0
次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。
python -m pip install --upgrade pip setuptools
では、pyLDAvisのインストールです。
pyLDAvisのインストールは、以下のコマンドとなります。
pip install pyLDAvis
インストールは、数分程度の時間がかかります。
そりゃ、あれだけの数のライブラリに依存していれば当然です。
では、どんなパッケージがインストールされたのかを確認しましょう。
>pip list Package Version --------------- ------- funcy 1.16 future 0.18.2 gensim 4.0.1 Jinja2 3.0.1 joblib 1.0.1 MarkupSafe 2.0.1 numexpr 2.7.3 numpy 1.21.0 pandas 1.2.5 pip 21.1.3 pyLDAvis 3.3.1 python-dateutil 2.8.1 pytz 2021.1 scikit-learn 0.24.2 scipy 1.7.0 setuptools 57.0.0 six 1.16.0 sklearn 0.0 smart-open 5.1.0 threadpoolctl 2.1.0
トータルで結構な数のパッケージが、インストールされました。
やはり、pyLDAvisは仮想環境にインストールした方が安全です。
以上、pyLDAvisのインストールについての説明でした。
最後は、pyLDAvisの動作確認を行います。
pyLDAvisの動作確認
pyLDAvisの動作確認を行います。
そのための準備として、次のページのjsonファイルを取得します。
pyLDAvisのGitHUbページ
https://github.com/bmabey/pyLDAvis/blob/master/tests/data/movie_reviews_input.json
ディレクトリ(「data」など)を用意して、そこに「movie_reviews_input.json」を保存します。
準備が整ったら、次のコードを実行します。
import json import pyLDAvis def load_R_model(filename): with open(filename, 'r') as j: data_input = json.load(j) data = {'topic_term_dists': data_input['phi'], 'doc_topic_dists': data_input['theta'], 'doc_lengths': data_input['doc.length'], 'vocab': data_input['vocab'], 'term_frequency': data_input['term.frequency']} return data movies_model_data = load_R_model('data/movie_reviews_input.json') movies_vis_data = pyLDAvis.prepare(**movies_model_data) pyLDAvis.save_html(movies_vis_data, "movies.html")
成功したら、同じディレクトリ上に「movies.html」が作成されています。
このmovies.htmlは、上記で示したデモ画面となります。
以上、pyLDAvisの動作確認について説明しました。