日々drdrする人のメモ

今日もdrdr、明日もdrdr

Twitterからテキストマイニングするためのcoreサーバーの環境構築のメモ的何か

Python上でTwitterからテキストマイニングできる環境をcoreサーバーで整えたけど、その時のメモ的何かを書いておく。春休みにやったので今更感あるけど、とりあえず雑なメモとして書いておく。

(今見返してみると残っているメモが一部アレしてるので、抜けてる箇所があるかも)

やろうと思ったきっかけ

ふと、借りてるcoreサーバーを活用せずに一年ぐらい放置してたことに気づく
=> サーバーを手軽に活用する方法を考える
=> Twitterのツイートからテキストマイニングしたりするのがよさそう
的なことを考えた気がする

今回利用したもの

coreサーバーには標準で入っているけど、今回は入れなおした
バージョンは2.7.11

テキストマイニングのために、日本語を形態素解析するツール
今回は、なんか面白そうだと思ったのでCaboChaまで入れてみた

Twitterから抽出したデータを保管するために利用
coreサーバーに標準で入っているもの(5.1系)を使用

環境構築

今回は以下を参考にしながら環境構築してみた
qiita.com
qiita.com

手順として、

  1. Pythonをインストール
  2. CRF++をインストール
  3. MeCab(+ipadic)をインストール
  4. CaboChaをインストール
  5. Pythonのpipでインストール

みたいな流れで構築した。

以下では、構築の際の簡単な説明や躓いた点を書いておく。(詳しい導入方法や使い方は参考元を参照)

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を入れた。
wgetcurlを叩いて持ってくる際、証明書がない云々言われて持ってこれなかったので、証明書確認を無視する(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

wgetで持ってきてからのインストールはPythonとだいたい同じなので略

3. MeCab(+ipadic)をインストール

URLは以下
http://taku910.github.io/mecab/

導入方法はCRF++とほとんど同じ

この時、参考元に書かれているように、PythonMeCabを使えるように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アプリの生成とかいろいろやるけど、ここでは説明を省略する。(これ以上メモがない...)

実際に実装して動かした

上の環境構築後、

  1. データベース構築
  2. Twitterアプリの生成、トークン取得
  3. ツイートを取得して抽出したデータをDBへ格納する処理と、そのデータからツイート内容を生成してツイートする処理を行うPythonコードを書く
  4. crontabに定期的にそのコードを実行するように設定

みたいなことをしたら動いた

きちんとツイートを収集して、そのデータから文章らしき何かを生成してツイートしてくれてるので満足して放置してる。
3月頭から放置してるけど、今DBのサイズは60MB程度になってて膨れ上がりまくってて手をつけたくなくなってる。

その他問題

DBでutf8がうまく扱えない

設定でutf8に対応する必要があるため、my.cnfに以下を記述

[mysqld]
default-character-set=utf8

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8
DBでutf8mb4が扱えない

utf8mb4(4byteのutf8)は5.3系以降で対応されている。しかし、coreサーバーに入っているmysqlは5.1系で対応できない。
それによって、顔文字に含まれている特殊な文字がダメになる。これはcoreサーバーの仕様なので、対処できなくて詰みΩ\ζ°)チーン
とりあえず、Pythonでツイート取得時に正規表現でフィルタして対応した。

今後の予定

  • 生成する文章がちょっと雑なので改善したい
  • タスク管理したい

時間があるときにでもいろいろしたい