42
BPStudy#100 タイムラインでポジろう!! 2015年シーズン結果報告編 にがうり @bohemianway

タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

Embed Size (px)

Citation preview

Page 1: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

BPStudy#100

タイムラインでポジろう!! 2015年シーズン結果報告編

にがうり@bohemianway

Page 2: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

自己紹介❖ 職業 : フリーランスのWeb系何でも屋やってます。

❖ 好きなチームとか

❖ 今は亡き「東京ドームの日ハム」ファン

❖ あまり特定のチームには肩入れせずに、色々な球場、試合に足を運んでいます

❖ 甲子園、マツダ、ヤフドの3球場に足を運べば12球団制覇

❖ 好きな選手

❖ 1人あげるならガッツこと小笠原道大(現中日二軍監督)。日ハムファンになったのもガッツがきっかけ

❖ 20世紀のベストナインをオール助っ人で投票する程度の助っ人好き

❖ 色んな意味で惜しい選手も好物です。荒木(選球眼があれば…)、糸井(頭が…)、實松(当たれば…)、多村(健康なら…)などなど

❖ 数少ない同年代の選手を見守っています

❖ 1977年(昭和52年)度生まれ。同い年の現役は僅か4人

❖ 現役 : 荒木雅博(中), 福留孝介(阪), 安藤優也(阪), 鶴岡一成(阪)

Page 3: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

本日のテーマ❖ Twitterのハッシュタグをベースにファンのポジネガを算出し、チームの状態との関連性を比較

❖ 全体の結果

❖ ベイスターズファンは本当にポジティブなのか? (DeNA)

❖ 優勝候補オリックス (オリックス)

❖ 大型連敗はファンの心を折ってしまったのか? (DeNA, 西武, ヤクルト)

❖ セ・リーグの混戦 (ヤクルト, 巨人, 阪神, 広島)

❖ 実装よりの話題

❖ 前回からの改善点

❖ 苦労したこと

❖ 積み残しの課題

❖ その他

❖ 参考にさせて頂いたサイト、資料など

Page 4: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

使ったもの❖ 言語: Python (2.7.11)

❖ BPStudyっぽく

❖ DB : MySQL (5.6.27)❖ 抽出したツイート、ポジネガ判定結果等の格納

❖ 日本語解析 : Mecab (0.996)

❖ ポジネガ判定の下処理に必要な、品詞毎の語句分解を行うために利用

❖ http://mecab.googlecode.com/svn/trunk/mecab/doc/index.html

❖ 日本語辞書 : mecab-ipadic-neologd (0.0.4)

❖ Mecabの動作に必要

❖ 前回はIPA辞書(2.7.0)を利用していましたが、新しい語句に対応していないためIPA辞書を元に拡張したこちらを採用

❖ http://diary.overlasting.net/2015-03-13-1.html

❖ ポジネガ判定 : 単語感情極性対応表 (以降、感情表と記載)

❖ http://www.lr.pi.titech.ac.jp/~takamura/pndic_ja.html

❖ Mecabで分解された語句毎にこの感情表と照合を行い、スコアを取得

❖ ※語彙数約5万5千。ポジティブ系の単語が5千程度で残りはほぼ全てネガティブ系の判定。

❖ 普通に使うと超ネガティブな結果になるため、実際にはかなり大規模な調整を入れています。詳しくは後述

Page 5: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

対象データ❖ 1日毎に、1チームあたり200件のツイートをランダムに抽出

❖ どのチームのツイートかは下記ハッシュタグで判断。

❖ 該当ハッシュタグが複数あるツイートは抽出対象外

❖ 主な対象期間

❖ シーズンの開幕から全日程終了まで

❖ 2015/3/27(金)~2015/10/09(金) ※全日程終了は10/7(水)

チーム名 ハッシュタグ チーム名 ハッシュタグ

オリックス #bs2015 DeNA #baystars

日本ハム #lovefighters 中日 #dragons

楽天 #rakuteneagles

ヤクルト #swallows

西武 #seibulions 巨人 #kyojin

ロッテ #chibalotte 阪神 #hanshin

ソフトバンク #sbhawks 広島 #carp※期間中の平均ツイート数/日試合が無い日 20,000~25,000

試合がある日 60,000~70,000程度

Page 6: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

ポジネガ判定の例❖ 例1

❖ ツイート

❖ 抜けた!サヨナラ!4連勝!#dragons

❖ Mecabで品詞毎に分解

❖ 抜け / た / ! / サヨナラ / ! / 4 / 連勝 /!/ # / dragons

❖ ※実際には、分解した単位毎に品詞の取得等も行っています。詳しくは後述

❖ 分解結果を1つずつ単語感情極性対応表(を元にしたデータ)と照合し、スコアを取得。

❖ 抜け, -0.1 / サヨナラ, 0.2 / 連勝, 0.5

❖ ※照合できない単語は無視

❖ スコア :0.6 (-0.1 + 0.2 + 0.5)

❖ ※単語毎のスコアは1~-1の間

Page 7: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

ポジネガ判定の例❖ 例2

❖ ツイート

❖ \横浜優勝/ 神様仏様山﨑様! #baystars

❖ 品詞毎に分解

❖ \ / 横浜 / 優勝 / / / 神様 / 仏様 / 山 / 﨑様 / !/ # / baystars

❖ ※山﨑様の分解に失敗しています

❖ スコアを取得。

❖ 優勝, 0.3 / 神様, 0.988

❖ ※優勝は \横浜優勝/ で頻出するため抑えめに調整

❖ スコア :1.288 (0.3 + 0.988)

Page 8: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

テーマ1. 全体の結果

Page 9: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

テーマ1. 全体の結果貯金推移 - セ

-18

-14

-11

-7

-4

0

4

7

11

14

03/2704/0304/1004/1704/2405/0105/0805/1505/2205/2906/0506/1206/1906/2607/0307/1007/1707/2407/3108/0708/1408/2108/2809/0409/1109/1809/2510/0210/09

ヤクルト 巨人 阪神 広島 中日 DeNA

※貯金推移の元データは「プロ野球ヌルデータ置き場」様より http://lcom.sakura.ne.jp/NulData/簡略化のため金曜毎の順位比較をしており、その他の曜日の変動は無視

Page 10: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

テーマ1. 全体の結果ポジネガ推移 - セ

-0.042

-0.028

-0.014

0.000

0.014

0.028

0.042

0.056

0.070

03/2704/0304/1004/1704/2405/0105/0805/1505/2205/2906/0506/1206/1906/2607/0307/1007/1707/2407/3108/0708/1408/2108/2809/0409/1109/1809/2510/0210/09

ヤクルト 巨人 阪神 広島 中日 DeNA

※セパあわせたポジネガ期間中の平均は 0.034点。 極力0に揃うように調整こちらも金曜毎の比較。前6日分のスコアを含めた移動平均で算出

Page 11: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

テーマ1. 全体の結果貯金推移 - パ

-30

-20

-10

0

10

20

30

40

50

03/2704/0304/1004/1704/2405/0105/0805/1505/2205/2906/0506/1206/1906/2607/0307/1007/1707/2407/3108/0708/1408/2108/2809/0409/1109/1809/2510/0210/09

ソフトバンク ハム ロッテ 西武 オリックス 楽天

Page 12: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

テーマ1. 全体の結果ポジネガ推移 - パ

-0.064

-0.048

-0.032

-0.016

0.000

0.016

0.032

0.048

0.064

0.080

03/2704/0304/1004/1704/2405/0105/0805/1505/2205/2906/0506/1206/1906/2607/0307/1007/1707/2407/3108/0708/1408/2108/2809/0409/1109/1809/2510/0210/09

ソフトバンク 日本ハム ロッテ 西武 オリックス 楽天

Page 13: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

テーマ2. ベイスターズファンは 本当にポジティブなのか?

Page 14: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

テーマ2. ベイスターズファンは本当にポジティブなのか?

❖ 好調な序盤

❖ 交流戦での12連敗

❖ 貯金無しでの首位ターン

❖ そして史上初の首位ターンからの最下位転落

❖ ベイスターズファンはこの展開でどれだけポジティブで居られたのか?

Page 15: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

テーマ2. ベイスターズファンは本当にポジティブなのか?

※ポジティブなベイスターズファンの想像図

(*^◯^*)

Page 16: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

テーマ2. ベイスターズファンは本当にポジティブなのか?

ポジネガと貯金推移の比較

-18

-13.5

-9

-4.5

0

4.5

9

13.5

-0.020

-0.010

0.000

0.010

0.020

0.030

0.040

0.050

03/2704/0304/1004/1704/2405/0105/0805/1505/2205/2906/0506/1206/1906/2607/0307/1007/1707/2407/3108/0708/1408/2108/2809/0409/1109/1809/2510/0210/09

ポジネガ 貯金

❖ 9/25前後を除くと、概ね貯金推移に沿った変動

(*^◯^*) 首位ターンなんだ!!優勝間違いなしなんだ!!

(ヽ*´◯`*) 首位ターンからの最下位は史上初なんだ。。。

(*^◯^*) 首位なんだ!優勝するんだ!

(ヽ*´◯`*) パリーグ強すぎるんだ。。。

Page 17: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

テーマ2. ベイスターズファンは本当にポジティブなのか?

❖ 期間中(3/27-10/9)のポジネガスコア変動

❖ 平均 : 0.017 (12球団の平均 0.034)

❖ 最大 : 0.41 (7/10) ※首位ターンの頃

❖ 最小 : -0.11 (6/19 & 10/2) ※ 12連敗期間中 & 最終戦(最下位決定)の前日

❖ チームの状態に連動していてかなり正直

Page 18: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

テーマ2. ベイスターズファンは本当にポジティブなのか?

❖ 考察

❖ 結構ションボリしている

❖ それでも中々マイナスにならないこと、後半の悲惨な状況を考慮するとポジティブと言えるのでは

❖ 観客動員、ファンクラブ会員数の好調さを考慮すると、耐性の薄い新規ファンが多いのもスコアの変動に影響与えているかも?(詳細は未確認)

Page 19: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

テーマ3. 優勝候補オリックス

Page 20: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

テーマ3. 優勝候補オリックス❖ 前年は最後まで優勝を争い久しぶりのAクラス。

❖ 大型補強を敢行

❖ オープン戦も好調

❖ 今年こそは・・・!と思いきや怪我人続出

❖ 前年の優勝争いを支えた強力リリーフ陣も総崩れ

❖ 頼みの金子は怪我で離脱、糸井は連続3割が6年で途切れ、森脇監督は途中辞任

❖ 最下位だけは免れたけど・・・という状況をどう捉えたのか?

Page 21: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

テーマ3. 優勝候補オリックスポジネガと貯金推移の比較

-30

-22.5

-15

-7.5

0

-0.060

-0.048

-0.036

-0.024

-0.012

0.000

0.012

0.024

0.036

0.048

0.060

03/2704/0304/1004/1704/2405/0105/0805/1505/2205/2906/0506/1206/1906/2607/0307/1007/1707/2407/3108/0708/1408/2108/2809/0409/1109/1809/2510/0210/09

ポジネガ 貯金

❖ 9/25前後を除くと、概ね貯金推移に沿った変動

借金しかないせいで変なグラフに。。。

6/2に森脇監督辞任

最下位脱出したころ

Page 22: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

テーマ3. 優勝候補オリックス❖ 期間中のポジネガスコア変動

❖ 平均 : 0.009 (12球団の平均 0.034)

❖ 最大 : 0.046 (6/12) ※福良体制初の3連勝を記録した時期

❖ 直後に心折れてるとか言わない

❖ かつて近鉄吸収が報じられたのは2004/6/13。前後でそれなりに言及がされているため、スコアに何らかの影響を与えていた可能性あり

❖ 最小 : -0.054 (7/3) ※ 復帰した金子がKOされていた時期

❖ 一貫して他チームの底値と同程度。底値安定。

❖ ただし、7/3を除くとそこまで他チームとの乖離が無い

❖ 最下位脱出が視野に入るタイミングで多少ポジティブ方面に良化

Page 23: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

テーマ3. 優勝候補オリックス❖ 考察

❖ DeNAと違い順位変動が殆ど無いこともあるが、あまり急激には変動していない。徐々にネガティブに傾いている傾向

❖ そもそも古参ファンは慣れていると思われる

❖ 21世紀以降連続Aクラスになっていない

❖ 2008年(2位)の翌年も優勝候補に挙げられていた関わらず、怪我人続出で最下位

❖ DeNA同様今年の観客動員はかなり増えていたが、新規よりも出戻りの方が多かったのかも? (未確認)

Page 24: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

テーマ4. 大型連敗はファンの心を折ってしまったのか?

Page 25: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

テーマ4. 大型連敗はファンの心を折ってしまったのか?

❖ 大型連敗期間中のスコアを抜粋

❖ ヤクルトの9連敗 (5/4 - 5/16)

❖ DeNAの12連敗 (6/3 - 6/20)

❖ 西武の13連敗 (7/15 - 8/4)

Page 26: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

テーマ4. 大型連敗はファンの心を折ってしまったのか?(ヤクルト)

9連敗中のポジネガ推移

-0.030

-0.024

-0.018

-0.012

-0.006

0.000

05/02

05/03

05/04

05/05

05/06

05/07

05/08

05/09

05/10

05/11

05/12

05/13

05/14

05/15

05/16

05/17

05/18

05/19

❖ 綺麗に落下

5/4 連敗スタート

5/17 連敗ストップ

Page 27: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

テーマ4. 大型連敗はファンの心を折ってしまったのか?(DeNA)

12連敗中のポジネガ推移

-0.020

-0.016

-0.012

-0.008

-0.004

0.000

0.004

0.008

0.012

06/0106/0206/0306/0406/0506/0606/0706/0806/0906/1006/1106/1206/1306/1406/1506/1606/1706/1806/1906/2006/2106/2206/2306/2406/25

❖ やはり綺麗に落下。試合が無い日の方が落下が大きいような・・・

6/3 連敗スタート

6/23に連敗ストップ6/21,22は試合無し

6/8は試合無し

6/15-18は試合無し

Page 28: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

テーマ4. 大型連敗はファンの心を折ってしまったのか?(西武)

13連敗中のポジネガ推移

-0.040

-0.032

-0.024

-0.016

-0.008

0.000

0.008

0.016

07/1207/1307/1407/1507/1607/1707/1807/1907/2007/2107/2207/2307/2407/2507/2607/2707/2807/2907/3007/3108/0108/0208/0308/0408/0508/06

❖ 試合が無い日に変動が大きいのはDeNA同様

7/15 連敗スタート ※前半最終戦

8/5に連敗ストップ

7/27 は試合無し

7/22,3 は試合無し

Page 29: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

テーマ4. 大型連敗はファンの心を折ってしまったのか?

結論ぽっきりと折れてました

Page 30: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

テーマ5. セリーグの混戦

Page 31: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

テーマ5. セリーグの混戦

最後まで優勝を争った4チームの後半を詳細比較

Page 32: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

テーマ5. セリーグの混戦ポジネガ推移

-0.050

-0.040

-0.030

-0.020

-0.010

0.000

0.010

0.020

0.030

0.040

0.050

09/0109/0209/0309/0409/0509/0609/0709/0809/0909/1009/1109/1209/1309/1409/1509/1609/1709/1809/1909/2009/2109/2209/2309/2409/2509/2609/2709/2809/2909/3010/0110/0210/0310/0410/0510/0610/07

巨人 ヤクルト 阪神 広島

10/2にヤクルト優勝決定!

9/11にヤクルト首位浮上

9/11まで阪神首位。1月ぶりの陥落

誤審騒動は9/15

10/5に賭博の発表

10/4に3位に並ぶも最終戦で4位転落

Page 33: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

テーマ5. セリーグの混戦

❖ 考察

❖ 順位がストレートに反映されるのはこれまでの流れの通り

❖ 順位転落のダメージはより一層ストレートに反映される傾向

Page 34: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

総評

❖ ポジネガはファン気質よりもチーム順位の方が大事!!

❖ だから、球団はファンを大切にするならしっかり補強しよう!!

Page 35: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

実装よりの話題

Page 36: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

前回からの改善点❖ 精度の向上

❖ 品詞分解精度の向上

❖ mecab-ipadic-neologdのおかげでかなり精度が向上

❖ ただし、mecab-ipadic-neologdの問題ではない問題も

❖ IPA辞書で判断不能な語句がサ変の名詞扱いになっており、そのままだとノイズの除外に難儀したため辞書の調整を行った

❖ ポジネガ判定の調整

❖ ひたすら感情表のチューニングを行い対処

Page 37: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

苦労したこと❖ 感情表のチューニング

❖ シーズンの主要期間(開幕、GW、オールスター前後、最終盤)都合一月分程度のツイートを10,000件/日取得し、品詞分解で登場回数上位5,000件程度の単語のスコアをひたすら目視チェック&修正。

❖ その上でツイート単位のスコアリングを行い、スコア上位/下位のツイートをチェック

❖ 不自然なスコアがついているツイートの単語毎のスコアをチェックし、不自然なものがあれば修正

❖ チーム名、一般的な(試合展開とは関係ない)野球用語に類するもののスコアは一律0にしています。ミット、バット、鷹、アナウンサー、等々

❖ このチューニングが一番時間かかりました。1日潰した・・・

Page 38: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

積み残しの課題

前回からあまり変わっていません❖ ツイートの抽出

❖ スパムアカウントやbotの除去

❖ RTを集計対象にするか否か (応援歌やスポーツ媒体系のツイートの影響が大分変わる)

❖ 実況系とそれ以外のツイートでスコアリングを区別すべきか

Page 39: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

積み残しの課題❖ 日本語処理

❖ さらなる辞書の充実 (野球語の辞書は自分で作る必要がありそう)

❖ ひらがなの語句を感情表とぶつけているが、誤判定を誘発しがち。

❖ 全角半角対応及び、それに伴う副作用

❖ 概ね、IPA辞書/mecab-ipadic-neologd に登録されている単語は日本語は全角、英数は半角の模様

❖ ツイート上の全角英数、半角カナ等はそのままだと辞書と照合できないため、unicode正規化(英数/記号は半角、それ以外は全角、その他、一部丸数字の丸を除去等)を通して解決

❖ 副作用

❖ 全角半角が混在している顔文字(AA)の類は、辞書側でも混在した状態で登録されている

❖ つまり、顔文字についてはunicode正規化を通すとヒット率が下がる

❖ 一見ノイズとして無視してよさそうに見えるが、顔文字こそがもっとも強い感情表現。よって、ポジネガ判断というテーマである以上は無視できない問題。今回は時間切れのため無視

Page 40: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

積み残しの課題

❖ ポジネガ判定の調整

❖ 感情表は品詞の最小単位のため、「打つ」はあっても「打たれる」は無い。(分解すると 「打た / れる」になるが、「打た」は「打つ」の未然形 / 「れる」は接尾辞と判断される)

❖ 「打つ」を0.3、「れる」を-0.55としており合算するとマイナスなるよう調整しているが、この2つが離れて登場していても合算してしまうため雑な計算になっている

❖ 実況系は少ない語彙でつぶやかれる傾向があるため、実況専用チューニングを施すと精度向上が見込めそう

Page 41: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

参考にさせて頂いた資料、サイトなど❖ 抽出したツイート : タイムラインの皆様

❖ 貯金推移データ : 「プロ野球ヌルデータ置き場」様より

❖ http://lcom.sakura.ne.jp/NulData/❖ 感情表

❖ 自然言語処理研究室

❖ http://www.lr.pi.titech.ac.jp/~takamura/pndic_ja.html

❖ Mecabがサ変と誤判定する問題

❖ MaCabのユーザー辞書にmecab-ipadic-NEologdを手動で追加する

❖ http://qiita.com/K-1/items/5cb3601341f6fa4fdd95

Page 42: タイムラインでポジろう! 2015年シーズン結果報告編 - #bpstudy 100

ご静聴ありがとうございました!!