Python上でTwitterからテキストマイニングできる環境をcoreサーバーで整えたけど、その時のメモ的何かを書いておく。春休みにやったので今更感あるけど、とりあえず雑なメモとして書いておく。
(今見返してみると残っているメモが一部アレしてるので、抜けてる箇所があるかも)
やろうと思ったきっかけ
ふと、借りてるcoreサーバーを活用せずに一年ぐらい放置してたことに気づく
=> サーバーを手軽に活用する方法を考える
=> Twitterのツイートからテキストマイニングしたりするのがよさそう
的なことを考えた気がする
今回利用したもの
coreサーバーには標準で入っているけど、今回は入れなおした
バージョンは2.7.11
- MeCab, CaboCha
テキストマイニングのために、日本語を形態素解析するツール
今回は、なんか面白そうだと思ったのでCaboChaまで入れてみた
Twitterから抽出したデータを保管するために利用
coreサーバーに標準で入っているもの(5.1系)を使用
環境構築
今回は以下を参考にしながら環境構築してみた
qiita.com
qiita.com
手順として、
みたいな流れで構築した。
以下では、構築の際の簡単な説明や躓いた点を書いておく。(詳しい導入方法や使い方は参考元を参照)
1. Pythonをインストール
今回Pythonを入れなおしたのは、標準で入っているPythonでpipのインストールがうまくいかなかったためである。root権限がないとつらかった。
# Pythonを入れる $ wget https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tgz --no-check-certificate ... $ ./configure --prefix=<rootが必要ないディレクトリ> $ make $ make install # pip $ curl -kO https://pypi.python.org/packages/source/d/distribute/distribute-0.7.3.zip ... $ python setup.py install $ easy_install pip
とりあえず2.7.11を入れた。
wgetやcurlを叩いて持ってくる際、証明書がない云々言われて持ってこれなかったので、証明書確認を無視する(wgetでは--no-check-certificate、curlでは-kをつける)ようにした。
また、入れる際、configureの--prefixでrootが不要なところを指定した。
2. CRF++をインストール
参考元にかかれているURL先が無効だったので探したら以下のURLだった
https://taku910.github.io/crfpp/
今回はファイル取得にwgetを用いたため、google driveにあるソースファイルをそのまま持ってくるのが難しかった。
そこで、以下を参考に取得URLを生成して持ってきた。
Google Driveに上げられてる系ファイルのリンク - Test
3. MeCab(+ipadic)をインストール
URLは以下
http://taku910.github.io/mecab/
導入方法はCRF++とほとんど同じ
この時、参考元に書かれているように、PythonでMeCabを使えるようにmecab-pythonも入れておく。
導入の注意点として、突っ込むテキストがUTF8であればCaboChaもUTF8に対応しておく必要があるため、ipadicをインストールする際のconfigureで"--with-charset=utf8"を指定しておく
4. CaboChaをインストール
URLは以下
http://taku910.github.io/cabocha/
導入方法はCRF++とほとんど同じ
CaboChaもMeCabと同様、Pythonで使う時にcabocha-pythonが必要なので入れておく。
これは、cabochaフォルダのpythonフォルダ内のsetup.pyからできる。
4. pipを利用してインストール
Pythonであれこれできるようにするためにpipを使って導入する。
今回はTwitterAPIを扱うためにrequests_oauthlibを、Pythonからmysqlを使うためにmysql-pythonを入れた。
これで基本的な環境構築はだいたいできた。
あとはデータベースの構築とか、Twitterアプリの生成とかいろいろやるけど、ここでは説明を省略する。(これ以上メモがない...)
実際に実装して動かした
上の環境構築後、
- データベース構築
- Twitterアプリの生成、トークン取得
- ツイートを取得して抽出したデータをDBへ格納する処理と、そのデータからツイート内容を生成してツイートする処理を行うPythonコードを書く
- crontabに定期的にそのコードを実行するように設定
みたいなことをしたら動いた
きちんとツイートを収集して、そのデータから文章らしき何かを生成してツイートしてくれてるので満足して放置してる。
3月頭から放置してるけど、今DBのサイズは60MB程度になってて膨れ上がりまくってて手をつけたくなくなってる。
その他問題
DBでutf8がうまく扱えない
設定でutf8に対応する必要があるため、my.cnfに以下を記述
[mysqld] default-character-set=utf8 [client] default-character-set=utf8 [mysql] default-character-set=utf8
今後の予定
- 生成する文章がちょっと雑なので改善したい
- タスク管理したい
時間があるときにでもいろいろしたい