LSI)を試すのに、どのような方法が一番良いのか調べています。現在、一番手軽に始められそうなのはタイトルにあるとおり、gensimMeCabを使った方法ではないでしょうか。以下に参考にしたサイトを挙げます。life;LSIやLDAを手軽に試せるGensimを使った自然言語処理入門(2011/06/23)takuti.megensimでWikipedia日本語版からコーパスを作ってトピックモデリング(2017/07/22)どちらもWikipedia日本語版の記事を読み込んでgensimに処理させようというもので、試しにWikipediaの記事を処理させてみる、というのは自然言語処理を試してみる際の定番のようですね。他のサイトなどもいっぱい出てきます。life;の記事が古く、それを参考に一部最新化したのがtakuti.meの記事です。現在ではこれも古く、takuti.meで公開されているソースでもエラーになって処理できませんでした。潜在意味解析もpythonもそれほど詳しくない中、手探りで実行した軌跡です。当面の目標はpython3でgensimを使ってWikipedia日本語版のコーパスを作成し、LSIを実行してみることです。私の環境はCentOS7(Docker)ですので、以下のパッケージをyumでインストールしています。gccgcc-c++python35upython35u-develpython35u-pipmecabmecab-develmecab-ipadicインストール方法などは検索すれば出てくると思います。pipでインストールするものは、以下のとおりです。gensimmecab-python3環境によっては他にも必要なものがあるかもしれませんが、きっちりエラーを出してくれると思いますので、その都度追加してください。コーパスの作成takuti.meの記事では、Wikipedia英語版からコーパスを作るgensim公式サンプルを、MeCabで使えるように、以下のような変更を加えたソースを公開してくれています。日本語向けに置き換えればよろしい:感謝しつつ何も考えずにそのソースをコピーしてきて試すと以下のようなエラーが出て、プロセスは3つ動いたままになりますが、処理はされていません。failed何か、マルチプロセス関連のエラーのようですが、これはPython2でないと動かないというものなのか、まったく別の問題なのか、原因がよく分かりません。そもそも、公開いただいているソースは、gensim公式のソースとはひどく乖離してしまっており、gensim公式のソースがどんどんメンテナンスされた結果、gensimのライブラリをは整合性が取れていないのかもしれません。「分かりません」「しれません」の連打で先に進んで良いものか「分かりません」が、gensim公式のソースに改めてMeCabによる分かち書きの処理を挿入してみます。takuti.meで公開されているソースをありがたく参考にカスタマイズします。ソースを修正takuti.meのソースではtokenizeという関数を定義して、WikiCorpusクラスのインスタンスのtokenizeメソッドをオーバーライドしています。tokenizeしかし現在では、WikiCorpusクラスのコンストラクタにtokenizer_funcパラメータが追加されており、分かち書きを実行する関数を指定できます。https://radimrehurek.com/gensim/corpora/wikicorpus.htmlですので、この仕組みを利用することにします。ここで指定する関数では4つのパラメータが必要です。case.パラメータtoken_min_lenとtoken_max_lenは、参考ソースのマジックナンバー、2と15にそのまま置き換えました。出来上がったのがこちらでgistに挙げています。ストップワードの除去などの前処理を何もしていませんし、各種オプションの調整もしていませんのでこのままでは使えませんが、とにかく動きます。lsi.print_topic(4)などでトピックを表示したりはできました。error)などでうんざりしてしまい、Javaでやろうと心に誓ってしまったので続きはありません。お願いなにせイマイチな理解のまま動かしていますので、もしかしたらこの記事を参考にされる方のために何か誤りなどあればご指摘いただけると幸いです。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。新しい投稿をメールで受け取る。