としおの読書生活

田舎に住む大学院生であるとしおの読書記録を綴ります。主に小説や新書の内容紹介と感想を書きます。 読書の他にも旅行やパソコン関係などの趣味を詰め込んだブログにしたいです。

2018年12月

1979年から現在にかけて、きのこの山派とたけのこの里派との間で繰り広げられているきのこたけのこ戦争に終止符を打つためにきのこの山、たけのこの里に関するツイートを集めて極性分析してみました。

今回の記事ではきのこの山、たけのこの里に関するツイートを同数集めて、ポジティブなツイートが多い方をきのこたけのこ戦争の勝者とします。




極性分析とは


自然言語処理の感情分析技術の一つで、分析したい文章がポジティブ(正)な文章なのかネガティブ(負)の文章なのか判定する技術である。

「カントリーマァムはお美味しい。」

上記のような例文がある場合美味しいはポジティブな単語なので例文はポジティブな文だと分析される。

極性分析は、東北大学の乾・鈴木研究室の日本語評価極性辞書(用言編)[1] と日本語極性辞書(名詞編)[2] を用いて行います。

用言編では用言を中心に約5000件に人手でポジ(経験)、ポジ(評価)、ネガ(経験)、ネガ(評価)のタグが割り振られています。

名詞編では評価極性を持つ名詞、約8500表現に対してp(ポジティブ)、e(ネガティブ)、n(ニュートラル)のタグが割り当てられています。



実行手順


きのこの山とたけのこの里に極性分析を行う実行手順は以下の通りになります。

1. Twitterから「きのこの山」 or 「たけのこの里」が入るツイートを集める
2. ツイートを分かち書きにする
3. 極性を求める


1. Twitterから「きのこの山」 or 「たけのこの里」が入るツイートを集める
今回ツイートはpythonでTwitterAPIを使うことができるtweepyを使用しました。

TwitterAPIでは過去一週間までのツイートを収集できるので一週間分収集しました。

またツイートの中にはきのこの山とたけのこの里の両方の言葉が入っているものもありましたが、今回はそういったものは除外しました。


2. ツイートを分かち書きにする
ツイートを分かち書きに変換するのにはMeCabを使用しました。また辞書はNEologd辞書を使用しました。

MeCabのインストール方法については下記の記事に書いているのでそちらを参考にしてください。

Python3でMeCabを動かしてみる(Windows10 64bit)

MeCabを使用すると文章を単語単位に分割できるので、これで日本語極性辞書が利用できます。


3. 極性を求める
今回極性は全てのポジティブな単語の重みを、全てのネガティブな単語の重みを-1として計算していきます。

最終的に文に対する重みの合計が1以上の場合はポジティブな文、-1以下の場合はネガティブな文、0の場合とネガティブまたはポジティブの単語が文中に一つもない場合はニュートラルな文として判定していきます。



きのこたけのこ戦争の結果


実験データとしてきのこの山が入っているツイートを3641件、たけのこの里が入っているツイートを4231件用意しました。

きのこの山とたけのこの里のツイート数をそろえないのはそれぞれに対しての過去一週間のツイート数も人気度に反映すると判断したからです。

以下がきのこの山とたけのこの里に関する極性分析の結果です。

kinokotakenoko1

結果は、ツイート数が多いたけのこの里の方がきのこの山よりもポジティブなツイート数が多いという結果になりました。当然と言えば当然な結果なのですがきのこの山派の私としては残念な結果となりました。

たけのこの里ときのこの山のネガティブ、ポジティブ、ニュートラルの割合をそれぞれいかに示します。
kinokotakenoko3
kinokotakenoko2

割合をみてもたけのこの里の方がポジティブなツイートが多いみたいなのできのこの山の完全敗北となりました。

どちらともポジティブなツイートよりもネガティブなツイートの方が多いのが面白いですね。



最後に


極性分析できのこたけのこ戦争に決着をつけてみた結果たけのこの里の大勝利という結果で終わりました。みなさん納得のいく結果だったでしょうか?

きのこの山派の私としてはとても悔しいのできのこの山のポジティブなツイート数を増やすために今度きのこの山botでも作ろうと思います。

収集したツイートの中には「きのこの山よりたけのこの里の方が好きだ」といった両方のワードが出てきたツイートもありましたので、もしまた次やることがあればそういったツイートも分析の対象としていれていけるようにしたいです。

こんなネタ記事をここまで読んでくださってありがとうございました。


参考
[1] 小林のぞみ,乾健太郎,松本裕治,立石健二,福島俊一. 意見抽出のための評価表現の収集. 自然言語処理,Vol.12, No.3, pp.203-222, 2005. / Nozomi Kobayashi, Kentaro Inui, Yuji Matsumoto, Kenji Tateishi. Collecting Evaluative Expressions for Opinion Extraction, Journal of Natural Language Processing 12(3), 203-222, 2005.

[2] 東山昌彦, 乾健太郎, 松本裕治, 述語の選択選好性に着目した名詞評価極性の獲得, 言語処理学会第14回年次大会論文集, pp.584-587, 2008. / Masahiko Higashiyama, Kentaro Inui, Yuji Matsumoto. Learning Sentiment of Nouns from Selectional Preferences of Verbs and Adjectives, Proceedings of the 14th Annual Meeting of the Association for Natural Language Processing, pp.584-587, 2008.









Python3でtweetの形態素解析を行うためにWindows10でMeCabの辞書をNEologd辞書に変更しようとしたら思いのほかてこずったので変更手順をまとめました。

MeCabをインストールしていることを前提として進めるのでまだインストールしていない方は下の記事を参考にしてください。

Python3でMeCabを動かしてみる(Windows10 64bit)


NEologd辞書とは
Neologd辞書とは佐藤敏紀(@overlast)が開発しているオープンソースのMeCabと共に使う単語分かち書き辞書です。

特徴として週二回以上という頻繁なペースで更新されているため新語や固有表現に強く、語彙数が多くなっています。

そのためSNSなどの新語が多い環境で自然言語処理を行う際一般的にNeologd辞書が使われています。



NEologd辞書のインストール


動作確認
本記事における動作環境は下記の通りになります。
  • Windows10 Home
  • Python 3.6.7


コマンドプロンプトでLinuxコマンドをたたけるようにする
Linuxコマンドを使ってneologd辞書をインストールしていくので最初にコマンドプロンプトでLinuxコマンドを入力できるようにしていきます。

1. Windows Subsystem for Linuxを有効にする

コントロールパネル > プログラム
neologd1
Windowsの機能の有効化または無効化
neologd2
Windows Subsystem for Linuxにチェックして再起動
neologd3


2. Ubuntuをインストール

Windows Subsystem for Linuxを有効にしたら次はMicrosoft StoreからUbuntuをインストールします。

Microsoft Storeを起動してUbuntuと検索したら下記の画面がでるので入手をクリックしてください。
neologd4

3. ユーザ登録

インストールが完了したらUbuntuを起動してください。そうするとユーザ名とパスワードを入力するように指示がでますのでにゅうりょくしてください。


4. パッケージを最新化する

ユーザ登録ができたらパッケージを最新化するために下記のコマンドを入力してください。
sudo apt update
sudo apt upgrade




NEologdをインストール
1. ビルドに必要なものをインストール

下記のコマンドを入力してビルドに必要なものをインストールします。
sudo apt install mecab
sudo apt install libmecab-dev
sudo apt install make

2. UbuntuでNeologdをインストール

git clone https://github.com/neologd/mecab-ipadic-neologd.git
cd mecab-ipadic-neologd
sudo bin/install-mecab-ipadic-neologd

3. NEologdをWindowsにコピーする
cd ..
sudo cp -R /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd/ /mnt/c/
コピー先は各自好みで指定してください。


NEologdがWindows10で使えるか確認
上記の作業が全て完了したらWindowsで使えるか確認します。

下記のコードが動いたら正しくインストールできています。
import MeCab

mecab = MeCab.Tagger("-Ochasen -d C:\mecab-ipadic-neologd")
print(mecab.parse("進撃の巨人の発売日だ"))
実行結果は以下の通りになります。
neologd5

また最初からMeCabに入っている辞書を使った場合の結果は以下の通りになります。
neologd6


DSC_3381

朝井リョウさんの『世にも奇妙な君物語』が文庫化していたのでさっそく購入してみました。

本作は「世にも奇妙な物語」の大ファンだという朝井さんが、番組での映像化を目指して書かれた短編集です。

全部で五編の奇妙な話が詰め込まれていますがどの物語もオチが絶妙でとてもおもしろかったです。

以下感想になりますがネタバレを含むので未読の方は注意してください。





世にも奇妙な君物語


異様な世界観。複数の伏線。先の読めない展開。想像を超えた結末と、それに続く恐怖。もしこれらが好物でしたら、これはあなたのための物語です。待ち受ける「意外な真相」に、心の準備をお願いします。各話読み味は異なりますが、決して最後まで気を抜かずに——では始めましょう。



シェアハウさない


シェアハウスの記事を書こうとしていたライターの浩子がシェアハウスの住民たちと接していくうちに住人に少し不信感を持ち始める…。

浩子は「シェアハウスが本当にシェアしているものはなんのか」という記事を書くために密かに住人たちがシェアしているものを探そうとしていたがなかなか見つけることができなかった。最後の最後にシェアしているものの正体を見つけるがそれは異常性癖者たちがお互いの異常な性衝動をみはりあうことで抑止するというものだった。

物語の中盤で浩子が昔犯罪にあったことからなんとなく犯罪者の集団がシェアしている家だとは分かっていたが、犯罪を隠ぺいするための家だと思っていたので、お互いの性衝動を抑えあうために住んでいたのには驚きだった。

物語は悲惨な結末で終わってしまうが実に世にも奇妙な物語っぽいないようで本書の一作目にふさわしい作品となっていた。


リア充裁判


コミュニケーション能力が高いリア充が本当に正しいのが疑問を持っている知子は、ある日コミュニケーション能力をはかる裁判に招待される。そこで裁判官に批判されるリア充たちを見て知子は自分が正しかったと確信するのだが…。

オチが絶妙すぎる話でした。主人公の知子が考えていた理想のオチで終わるのかと思いきや、まさかその世界が主人公の描く漫画の世界だっととは…。しかも知子が非リア充でコミュニケーション能力がなく大学内で唯一就職活動に失敗している人間だという。

物語を読んでいる途中はコミュニケーション能力がない人間をなくそうとする国策は間違っているんだと思わされるんですが、最後まで読み切るとけっきょくはどんなことをするにもコミュニケーション能力って大切なんだなと感じさせられました。

コミュニケーション能力がなくても成功をおさめて認められている人間って現実世界でも確かにほとんどいないなと思わされる物語だった。




立て!金次郎


親からの評価を気にする幼稚園で働く孝次郎。そんな幼稚園の現状がおかしいと感じる考次郎は園の考えに背き、自分の考えに従って行動した結果、親からの評価につながったのだが…。

物語終盤まで来ると今回の物語はハッピーエンドで終わりそうだなと思ったのですが、この作品も最後の最後にまさかのどんでん返しが待ち構えていました。

オチの内容は、保護者が事前に褒める先生やいじめる先生を決めておいて幼稚園の先生を絶妙にコントロールするというものでした。

どんでんがえしがなければ世にも奇妙な要素がないんですけど、このオチを読んだときは衝撃的でした。孝次郎の努力のおかげで上手くいったと思ったのにそれをくつがえされてしまいました。

もしかしたら現実世界のモンスターペアレントのなかにも教師をコントロールするためにクレームを入れている人がいるのかもしれませんね…。


13.5文字しか集中して読めな


インタネットニュース記事を書くライターとして働く香織。自分の仕事に誇りを持ち、尊敬する上司を持ち、自分の息子からも憧れられており順風満帆な生活を送っているのだが…。

まずタイトルの文字数が13.5文字(半角は0.5文字とする)っていうがいいですね。

ネットニュースの記事に対する朝井リョウさんなりの批判が入っている作品でした。ネットニュースは新聞と違って紙面に限りがないのでいくらでも記事数が増やせるがどうでもいい内容の記事も量産されているという朝井リョウさんのネットニュースに対する批判が入っている作品でした。

最後に息子が授業参観で母親の浮気調査と浮気の様子を記事にしていましたが母親としては衝撃的ですよね。息子は母に憧れて母の真似事をしているんですが自分の浮気がばれていたとは…。息子の成長を素直に喜べなさそうだ。



脇役バトルロワイアル


主演オーディションの最終選考に残った淳平。最終オーディションが行われる部屋に入るとそこには自分を含めて普段は脇役ばかり演じる役者たちがいた。不思議なオーディションに合格して淳平は主演になれたのか。

今までの四話に脇役として登場した役者たちが集められていて本当にテレビの世にも奇妙な物語を見ているかのように読める作品でした。登場人物の名前も実際の役者によせられており誰が誰なのか想像しやすかったです。

場面を説明するなどの脇役的な行動をしたら失格となるというのも秀逸で、朝井リョウさんが脇役の行動をよく分析しているのが分かる作品でした。

周りの脇役たちがみんないなくなり淳平が合格したと思ったら最後の最後に真の主役が現れるというのに笑わされてしまいました。

五編の中で一番笑える作品となっています。


最後に


皆さんはどの物語が一番好きですか?私は『立て!金次郎』が一番好きです。

朝井リョウさんの描く『世にも奇妙な君物語』がいつか実際に世にも奇妙な物語で映像化されてほしいですね。



以前Windowsの環境でPythonでMeCabを使おうと思ったら上手くいかず諦めてUbuntuを使っていたのですが、今回久しぶりに挑戦してみるとあっさりできたので環境構築方法をまとめました。


動作確認

本記事における動作環境は下記の通りになります。
  • Windows10 Home
  • anaconda
  • Python 3.6.7
今回はanacondaを使っていますがanacondaを使ってなくても手順通り進めればインストールすることができます。


MeCab(64bit版)のインストール
1. MeCab(64bit版)のインストーラのダウンロードする。

MeCabのインストーラは下記のページからダウンロードできるのでダウンロードしてください。

https://github.com/ikegami-yukino/mecab/releases

2. mecab-0.996.exeを実行する



環境変数の設定
MeCabを無事インストールすることができたら次は環境変数の設定を行います。

1. 環境変数に「MeCabのインストール先\bin」を設定する。

インストール先を特に指定せずデフォルトの設定でインストールしたのなら下記の例と同じもので問題ありません。

環境変数の例:C:\Program Files\MeCab\bin

2. 環境変数が正しく通せているか確認する。

環境変数を設定できたら設定を正しく行えているか確認します。

コマンドプロンプトを起動してMeCabと入力した後に好きな文章を入力して形態素解析が実行されたら正しく環境変数を設定できています。

この際文字化けがおきますがそれはコマンドプロンプトがUTF-8に対応していないのが原因で起きるので気にしなくて大丈夫です。
MeCab1


mecab-python-0.996のセットアップ

1. mecab-python-0.996.tarのダウンロード。

mecab-python-0996.tarは下記のページのperl/ruby/python/java バインディングの下にあるダウンロードリンクからダウンロードができます。

ダウンロードの際様々なバージョンのものがありますが0.996のものをダウンロードしてください。

2. mecab-python-0.996.tarを解凍する。

mecab-python-0.996.tarをダウンロードすることができたら好きな場所に解凍してください。

3. setup.pyの編集

mecab-python-0.996のフォルダ内にあるsetup.pyはpython2.xxに合わせて書かれているものなのでpython3で利用できるように中身を少し書き換える必要があります。

下記に編集後のコードを乗せておくのでこれをそのままコピーしたらほぼほぼ大丈夫です。

ただMeCabのインストール先をデフォルトとは別の場所にした場合その部分だけインストール先に合わせて修正してください。
#!/usr/bin/env python

from distutils.core import setup,Extension,os

setup(name = "mecab-python",
	version = '0.996',
	py_modules=["MeCab"],
	ext_modules = [
		Extension("_MeCab",
			["MeCab_wrap.cxx",],
			include_dirs=[r'C:\Program Files\MeCab\sdk'],
			library_dirs=[r'C:\Program Files\MeCab\sdk'],
			libraries=['libmecab'])
			])


4. ビルドとインストール

Anaconda Promptを起動してmecab-python-0.996のフォルダに移動してください。

移動できたら下記のコマンドを入力してビルドしてください。
python setup.py build
ビルドができたら下記のコマンドを入力してインストールしてください。
python setup.py install

5. 実行確認

インストールができたら最後に実行できるか確認を行います。

下記のコードを実行して形態素解析の結果がかえってきたら作業は終了です。
import MeCab
mecab = MeCab.Tagger("-Ochasen")
print(mecab.parse("すもももももももものうち"))
実行結果は下記の通りになります。
MeCab2



最後に
環境を構築中にVisual Studioをインストールしていない場合はそれ関連のエラーが出るかもしれませんが適宜対応してください。

もし何か分からないことがあればコメントをもらえれば返しますのでコメントしてください。

DSC_3368


Amazon Cyber Monday Sale (サイバーマンデーセール) 2018で『Anker PowerCore 10000』が普段より700円ほど安い2099円で売っていたので購入しました。

以前使っていた『Anker PowerCore 15600』が劣化しつつあったので安く購入できてラッキーでした。

色は黒、白、赤の三色があったのですが今回は見た目はあまり気にせず一番値段が安かったという理由で
を購入しました。

商品が届くとモバイルバッテリーの小ささに驚かされてしまいました。文庫本と比較すると文庫本の半分ほどのサイズです。

DSC_3366


箱がぶ厚かったので以前使っていたものよりも厚くなっているのかと思ったのですが箱を開けてみると箱の厚さの半分ほどしかないサイズのモバイルバッテリーが現れまたまた驚かされてしまいました。

以前使用していたものとサイズを比べてみると半分ほどの大きさとなっていました。

DSC_3369


以前使用していたものの容量が15600で今回新たに購入したもののサイズが10000ということで容量は少し落ちるのですが、2、3泊の旅行で使用するぶんにはあまり影響はないと思います。

Anker PowerCore 10000』を買ってよかったと思ったのですが一点だけ残念な点がありました。

それはポートが一つしかないということです。

スマホしか使わない人には問題ないのでしょうが私は。タブレットを外出で持っていくことがあるのでスマホとタブレットの同時充電ができないのだけが残念です。

購入する前に確認していない私が悪いんですけどね…。

DSC_3371


なのでもし複数受電をしたいと思う人は購入する際に注意してください。




最後に

Anker PowerCore 10000』はセールをしていないときでも3000円未満の値段で購入できるのでもしどのモバイルバッテリーを買うか悩んでいる人がいたらこの製品がおすすめです。

また、急速充電の機能が欲しい場合は本製品とは別に『Anker PowerCore Speed 10000 QC』があるのでそちらの購入をおすすめします。





↑このページのトップヘ