見出し画像

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」を選択します。

画像1

「Doing something else」を選択します。

画像2

「国」と「ニックネーム」を入力します。

画像13

twitter API の使用目的を英文で入力します。「ツイートを感情分析する」旨を英文で入力すれば結構です。英文に自信がない場合は、翻訳サービスを利用しても結構です。

画像4

入力内容を確認します。

画像5

利用規約に同意します。

画像6

一通り申請が終わりました。

画像7

twitterから登録完了のメールが届くので、届いたらメール内のリンクをクリックします。

画像8

これで申請が完了です。

次にAPI key、API secret key、Access token、Access token secretを取得します。Appを作成しますので、「Create an app」を選択してください。

画像9

required となっている箇所を英文で入力します。

画像10

「Create」を選択します。

画像11

これでAppが作成されました。

画像13

「Keys and tokens」を選択すると、API key、API secret key、Access token、Access token secretが参照できます。これで一通り完了です。

画像13

・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 というフォルダが生成されます。このフォルダ内に、インストールしたライブラリが格納されています。

これで、感情分析をするための環境が整いました。

次回は、実際にプログラムを動かして感情分析をする方法をご紹介したいと思います。

お付き合いいただき、ありがとうございました。

この記事が気に入ったらサポートをしてみませんか?