twitterのツイートを使って感情分析をしてみよう(初級者向け)~環境構築編~
前回は、twitterを使って感情分析をするための概要をご紹介しました。
おさらいしますと、
・twitter APIを用いてツイートを自動的に取得する
・ツイートを形態素解析する
・感情辞書(極性辞書)を用いてツイートの感情をスコアリングする
という内容でした。
本記事では、感情分析をするための環境構築をご紹介いたします。
はじめに
環境構築にあたり、エンジニア初級者レベルの知識が必要となります。
具体的には、
Linux上でコマンド操作できること
PHPのプログラミングができること
の経験をお持ちの方が対象となります。
また、下記OS・ミドルウェア・言語がインストールされている前提で手順を進めていきます。
CentOS release 6.8
Apache 2.2
PHP 5.6
1. MeCabのインストール
形態素解析の代表的なツールとして、MeCab があげられます。今回はこちらのインストールをご紹介していきます。
ライブラリのインストール
はじめに、MeCab をインストールする際に必要なライブラリをyum install で入れておきます。
$ yum install php-devel
$ yum install mecab-devel
$ yum install re2c
$ yum install gcc-c++
MeCab本体インストール
次にMeCab本体をインストールします。
$ cd /user/local/src
$ wget "https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7cENtOXlicTFaRUE"
$ tar xvfz mecab-0.996.tar.gz
$ cd mecab-0.996
$ ./configure --with-charset=utf8
$ make
$ make install
インストールされているか確認をしてください。
$ mecab -v
mecab of 0.996
MeCabのipa辞書インストール
MeCab向けの辞書であるipa辞書をインストールします。辞書はEUC-JPのため--with-charset=utf8を入れてutf8に変換してください。
$ cd /user/local/src
$ wget "https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7MWVlSDBCSXZMTXM"
$ tar zxfv mecab-ipadic-2.7.0-20070801.tar.gz
$ cd mecab-ipadic-2.7.0-20070801
$ ./configure --with-charset=utf8
$ make
$ make install
ipa辞書のインストールが完了したら、動作確認をしてみます。
echo 今日の天気は晴れです | mecab
今日 名詞,副詞可能,*,*,*,*,今日,キョウ,キョー
の 助詞,連体化,*,*,*,*,の,ノ,ノ
天気 名詞,一般,*,*,*,*,天気,テンキ,テンキ
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
晴れ 名詞,一般,*,*,*,*,晴れ,ハレ,ハレ
です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
EOS
2.MeCabをPHPから使えるようにする
MeCabをPHPから呼びさせるようにするために、拡張モジュールのインストールが必要です。拡張モジュールは、ソースからインストールする方法とPEARからインストールする方法があります。
php-mecab拡張モジュールをソースからインストール
$ cd /user/local/src
$ git clone https://github.com/rsky/php-mecab.git
$ cd php-mecab/mecab/
$ ./configure --with-php-config=/usr/bin/php-config --with-mecab=/usr/bin/mecab-config
$ make
$ make test
$ make install
# mecab.soがinstallされたかチェック
$ ls /usr/lib64/php/modules/ | grep mecab
mecab.so
※phpizeで下記エラーが出たとき
$ phpize
Can't find PHP headers in /usr/include/php
The php-devel package is required for use of this command.
php-devel をインストールします。
$ yum install php-devel
※./configureでエラーが出たとき
configure: error: wrong MeCab library version or lib not found. Check config.log for more information
mecab-devel、re2c、gcc-c++モジュールがインストールされているかチェックします。
$ yum install mecab-devel
$ yum install re2c
$ yum install gcc-c++
PEAR からインストールする場合
PEARのチャネル登録をします。
$ pear channel-discover pecl.opendogs.org
$ pear install opendogs/mecab-beta
# mecab-configのパスを入力
> specify pathname to mecab-config [no] : /usr/bin/mecab-config
※mecab-configのパスを通さずに[no]を入力すると下記エラーになります。必ずパスを入力してください。
checking for mecab-config... no
configure: error: mecab-config not found
php.iniに拡張モジュールを追加
拡張モジュールのインストールが完了したら、php.iniのextensionにモジュールを追加してください。
/etc/php.ini に extension を追加入力します。
$ vi /etc/php.ini
extension=/usr/lib64/php/modules/mecab.so
apacheを再起動します。
$ service httpd restart
PHPのコードでMeCabの動作確認をします。
<?php
// インストールした辞書のパス
$options = array('-d', '/usr/local/src/mecab-ipadic-2.7.0-20070801');
// 辞書のパスをわたして インスタンス生成
$mecab = new \MeCab\Tagger($options);
$text = "s";
$node = $mecab->parseToNode($text);
while($node){
var_dump($node->getSurface());
var_dump($node->getFeature());
//次の語句へ
$node = $node->getNext();
}
下記のように出力されれば成功です。
string(0) ""
string(23) "BOS/EOS,*,*,*,*,*,*,*,*"
string(9) "すもも"
string(51) "名詞,一般,*,*,*,*,すもも,スモモ,スモモ"
string(3) "も"
string(36) "助詞,係助詞,*,*,*,*,も,モ,モ"
string(6) "もも"
string(42) "名詞,一般,*,*,*,*,もも,モモ,モモ"
string(3) "も"
string(36) "助詞,係助詞,*,*,*,*,も,モ,モ"
string(6) "もも"
string(42) "名詞,一般,*,*,*,*,もも,モモ,モモ"
string(3) "の"
string(36) "助詞,連体化,*,*,*,*,の,ノ,ノ"
string(6) "うち"
string(56) "名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ"
string(0) ""
string(23) "BOS/EOS,*,*,*,*,*,*,*,*"
エラーが出たときの対処方法もご紹介いたします。
※辞書のパスエラー
$mecab = new \MeCab\Tagger();
Warning: MeCab\Tagger::__construct() in mecab_test.php on line 9
下記のように、\Mecab\Tagger()のパラメーターにipa辞書のパスを入力してください。
$options = array('-d', '/usr/local/src/mecab-ipadic-2.7.0-20070801');
$mecab = new \MeCab\Tagger($options);
※Mecab_Tagger()を使用したときの非推奨のエラー
$mecab = new Mecab_Tagger();
Deprecated: Function MeCab_Tagger::__construct() is deprecated in mecab_test.php on line 9
上記書式は非推奨となりますので、下記のように書き換えてください。
// インストールした辞書のパス
$options = array('-d', '/usr/local/src/mecab-ipadic-2.7.0-20070801');
// 辞書のパスをわたして インスタンス生成
$mecab = new \MeCab\Tagger($options);
3.感情の辞書(極性辞書)のインストール
単語別にポジティブかネガティブかを数値でスコアリングした辞書のことを極性辞書と呼びます。その辞書が感情分析をする際のベースとなりますので、こちらをインストールします。
東京工業大学の高村研究室のサイトで公開されておりますので、こちらを使用いたします。
http://www.lr.pi.titech.ac.jp/\~takamura/pubs/pn_ja.dic
4.twitter API を使えるようにする
twitter APIを使用して、PHP内でツイートを取得できるようにします。
twitter APIの申請
twitter API を使用するためには、申請が必要です。早ければ30分程度で終わります。(2020年5月14日現在の情報です。申請方法は変更される可能性がありますのでご了承ください。)
developers twitter より申請を行います。
「Create an app」を選択します。
「Doing something else」を選択します。
「国」と「ニックネーム」を入力します。
twitter API の使用目的を英文で入力します。「ツイートを感情分析する」旨を英文で入力すれば結構です。英文に自信がない場合は、翻訳サービスを利用しても結構です。
入力内容を確認します。
利用規約に同意します。
一通り申請が終わりました。
twitterから登録完了のメールが届くので、届いたらメール内のリンクをクリックします。
これで申請が完了です。
次にAPI key、API secret key、Access token、Access token secretを取得します。Appを作成しますので、「Create an app」を選択してください。
required となっている箇所を英文で入力します。
「Create」を選択します。
これでAppが作成されました。
「Keys and tokens」を選択すると、API key、API secret key、Access token、Access token secretが参照できます。これで一通り完了です。
・API key
・API secret key
・Access token
・Access token secret
は後ほどPHPプログラム内で使用しますのでメモしておいてください。
twitter API を操作するライブラリーのインストール
twitter API をPHP内で操作するためには、OAuth認証が必要です。認証部分を自分でコーディングするのは手間なので、ライブラリをインストールします。
今回は、abraham/twitteroauthを使用します。
ライブラリをインストールする前に、composerをインストールします。
composerとは、ライブラリの依存管理ツールです。ライブラリの中で他のライブラリーが必要な時に、まとめてインストールしてくれる便利なツールです。
それでは、composerのインストールをしてみます。
$ curl -sS https://getcomposer.org/installer | php
$ mv composer.phar /usr/local/bin/composer
インストールが終わったら、composerを使ってabraham/twitteroauthのインストールします。
# home ディレクトへ
$ cd /path-to-home-directory/
$ composer require abraham/twitteroauth
インストールが成功するとホーム ディレクトリにvendor というフォルダが生成されます。このフォルダ内に、インストールしたライブラリが格納されています。
これで、感情分析をするための環境が整いました。
次回は、実際にプログラムを動かして感情分析をする方法をご紹介したいと思います。
お付き合いいただき、ありがとうございました。