53
平成 27 年度修士論文 Twitter の実況ツイートを利用した タイムライン上のネタバレ情報検知 情報理工学研究科 情報・通信工学専攻 コンピュータサイエンス コース 1431050 齊藤 令 指導教員 寺田 実 准教授 副指導教員 角田 博保 准教授 提出日 2016 3 14

Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

平成27年度修士論文

Twitterの実況ツイートを利用した

タイムライン上のネタバレ情報検知

情報理工学研究科 情報・通信工学専攻 コンピュータサイエンス

コース

1431050 齊藤 令

指導教員 寺田 実 准教授

副指導教員 角田 博保 准教授

提出日 2016年 3月14日

Page 2: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

1

概要

研究目的

Twitterでは, ユーザの増加により情報が氾濫し, ネタバレ情報が目に入りやすい環境になってい

る. 今放送している番組についてツイートする実況ツイートというものがあり, これにはネタバレ

なツイートと非ネタバレなツイートが混在している. 実況ツイートを利用してネタバレ推定の分類

器を作成し, ネタバレなツイートの推定ができないか考えた. 本研究は, Twitterを対象として, ス

ポーツやゲームの試合結果などのような積極的に発信されるネタバレ情報について着目する. この

スポーツやゲームの試合に関する実況ツイートを利用してネタバレ判別分類器を作成し, ネタバレ

情報を含んだツイートの推定を試み, 提案手法の有効性を検証することが本研究の目的である.

方法

提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し, 教師用データとして

扱うためにネタバレか非ネタバレか区別するためのラベリングを行う. ツイートをURL除去, リプ

ライ, 同じ文字を連続した記述の正規化等を行い, 形態素解析しベクトル化しやすいように整形す

る. BoW(Bag of Words)モデルにより単語ベクトルを生成し, LSI(Latent Semantic Indexing)に

より単語ベクトルの次元削減を行う. 得られた単語ベクトルに, URLの有無, ユーザの興奮度, ツ

イートの勢いの情報を加え, サポートベクトルマシンによる機械学習を行い, ネタバレツイートを

推定するための分類器を作成した.

結論

提案手法を用いて作成した分類器から得られた分類結果を取得し, Accuracy, AUC(Area Under

the Curve), Precision, Recall, F値の評価値を算出し,分類器の性能評価を行った. 結果としてURL

の有無, ユーザの興奮度, ツイートの勢いはネタバレ分類において有効であり, 実況ツイートを利用

してネタバレ分類器が作成可能であることを示した. また, この 3つの要素を追加することで単語

ベクトルを低次元にしたときでも分類できることがわかった. しかし, スコアやチーム名, 選手名

等の表記揺れに対応できなかったり, ネタバレと非ネタバレの誤認識などがあるので改善点がある.

Page 3: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

2

目 次

第 1章 序論 7

1.1 背景 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.2 問題点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.3 着眼点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.4 研究目的 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.5 本論文の構成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

第 2章 関連研究 10

2.1 ネタバレ防止ブラウザの実現 [1] . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.1.1 ネタバレ検出方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.1.2 フィルタリングの視覚化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.1.3 本研究との比較 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.2 Twitter上のネタバレ情報の検出 [2] . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.2.1 本研究との比較 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.3 Twitterのスポーツ実況ツイートからの要約 . . . . . . . . . . . . . . . . . . . . . 12

2.3.1 良い実況者に着目した試合の要約 [3] . . . . . . . . . . . . . . . . . . . . . 12

2.3.2 チームに応じた試合の要約 [4] . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.3.3 本研究との比較 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.4 Twitter上のネタバレ情報の調査と分析 . . . . . . . . . . . . . . . . . . . . . . . . 13

2.4.1 ストーリーコンテンツに対するネタバレ [5] . . . . . . . . . . . . . . . . . . 13

2.4.2 本研究との関連 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.4.3 直接的・間接的ネタバレの分析 [6] . . . . . . . . . . . . . . . . . . . . . . . 14

2.5 マイクロブログにおけるユーザの感情を表す単語の抽出 . . . . . . . . . . . . . . . 15

第 3章 提案手法 16

3.1 概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.2 実況ツイートの収集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.3 ネタバレと非ネタバレのラベリング . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.4 形態素解析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.5 単語ベクトルの次元の削減 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.6 追加要素 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.6.1 URLの有無 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.6.2 ユーザの興奮度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.6.3 ツイートの勢い . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.7 分類器の評価方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.7.1 ホールドアウト検証 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

Page 4: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

3

3.7.2 K分割交差検証 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.8 分類器の評価指標 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.8.1 Accuracy(正答率) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.8.2 Precision(適合率) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.8.3 Recall(再現率) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.8.4 F1-score(F値) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.8.5 AUC(Area Under the Curve) . . . . . . . . . . . . . . . . . . . . . . . . . 23

第 4章 予備実験 24

4.1 データセット . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

4.2 結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

4.2.1 ホールドアウト検証の実験結果 . . . . . . . . . . . . . . . . . . . . . . . . 24

4.2.2 交差検証の実験結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

4.3 結論 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

第 5章 実装 27

5.1 開発環境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

5.2 分類器の作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

5.2.1 データセット . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

5.2.2 ツイートのベクトル化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

5.2.3 機械学習 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

第 6章 評価実験 31

6.1 次元削減を行わない機械学習 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

6.2 出現頻度での単語ベクトルの除去 . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

6.3 LSIによる次元の削減 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

6.4 追加要素 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

6.4.1 URLの有無 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

6.4.2 ユーザの興奮度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

6.4.3 ツイートの勢い . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

6.4.4 全ての追加要素 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

第 7章 考察 41

7.1 LSIによる単語ベクトルの削減 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

7.2 追加要素 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

7.2.1 URLの有無 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

7.2.2 ユーザの興奮度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

7.2.3 ツイートの勢い . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

7.3 分類器の誤判定の解析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

7.3.1 ネタバレを非ネタバレと誤答した場合 . . . . . . . . . . . . . . . . . . . . 42

7.3.2 非ネタバレをネタバレと誤答した場合 . . . . . . . . . . . . . . . . . . . . 43

7.3.3 関連研究 [2]との比較 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

Page 5: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

4

第 8章 結論 45

8.1 まとめ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

8.2 今後の課題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

8.2.1 表記揺れの対応 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

8.2.2 ネタバレ度のスコアリング . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

8.2.3 他のパラメータの付加 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

8.2.4 他のスポーツでの検証 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

8.2.5 教師なし学習での検証 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

謝辞 47

参考文献 49

付録 49

Page 6: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

5

図 目 次

1.1 ハッシュタグを用いた実況ツイートの例 . . . . . . . . . . . . . . . . . . . . . . . 8

2.1 イベントストリームにおけるツイート例 . . . . . . . . . . . . . . . . . . . . . . . 12

2.2 20番組において放送される世帯平均数 . . . . . . . . . . . . . . . . . . . . . . . . 14

3.1 高度な検索の画面 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.2 時間毎のツイート数と出来事 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.3 システムの概略図 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.4 ホールドアウト検証の概略図 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.5 交差検証のデータ分割に関する概略図 . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.6 ROC曲線と AUC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

4.1 野球とテニスの分類結果と ROC曲線 . . . . . . . . . . . . . . . . . . . . . . . . . 25

4.2 テニスと駅伝の分類結果と ROC曲線 . . . . . . . . . . . . . . . . . . . . . . . . . 25

4.3 野球と駅伝の分類結果と ROC曲線 . . . . . . . . . . . . . . . . . . . . . . . . . . 25

5.1 ツイートの前処理例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

6.1 交差検証結果 (単語ベクトルのみ) . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

6.2 交差検証結果 (+URL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

6.3 交差検証結果 (+興奮度) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

6.4 交差検証結果 (+ツイートの勢い) . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

6.5 交差検証結果 (+all) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

Page 7: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

6

表 目 次

2.1 関連研究 [2]の結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.1 ネタバレと非ネタバレの分類例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.2 事実と予測の関係 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

4.1 ホールドアウト検証の予備実験結果 1 . . . . . . . . . . . . . . . . . . . . . . . . . 24

4.2 ホールドアウト検証の予備実験結果 2 . . . . . . . . . . . . . . . . . . . . . . . . . 26

4.3 交差検証の予備実験結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

5.1 連続した記述の正規化例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

6.1 出現頻度に関する検証結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

6.2 ホールドアウト検証結果 1(単語ベクトルのみ) . . . . . . . . . . . . . . . . . . . . 33

6.3 ホールドアウト検証結果 2(単語ベクトルのみ) . . . . . . . . . . . . . . . . . . . . 33

6.4 交差検証結果 (単語ベクトルのみ) . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

6.5 ホールドアウト検証結果 (+URL) . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

6.6 ホールドアウト検証結果 2(+URL) . . . . . . . . . . . . . . . . . . . . . . . . . . 35

6.7 交差検証結果 (+URL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

6.8 ホールドアウト検証結果 1(+興奮度) . . . . . . . . . . . . . . . . . . . . . . . . . 36

6.9 ホールドアウト検証結果 2(+興奮度) . . . . . . . . . . . . . . . . . . . . . . . . . 36

6.10 交差検証結果 (+興奮度) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

6.11 ホールドアウト検証結果 1(+勢い) . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

6.12 ホールドアウト検証結果 2(+勢い) . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

6.13 交差検証結果 (+勢い) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

6.14 ホールドアウト検証結果 1(+all) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

6.15 ホールドアウト検証結果 2(+all) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

6.16 交差検証結果 (+all) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

7.1 スコア速報に関する誤答例と正答例 . . . . . . . . . . . . . . . . . . . . . . . . . . 42

7.2 端的なツイートの誤答例とユーザの興奮度が高いツイートの正答例 . . . . . . . . 43

7.3 非ネタバレをネタバレと誤答した例 . . . . . . . . . . . . . . . . . . . . . . . . . . 43

8.1 実際に分類された例 (True Positive) . . . . . . . . . . . . . . . . . . . . . . . . . . 49

8.2 実際に分類された例 (True Negative) . . . . . . . . . . . . . . . . . . . . . . . . . 50

8.3 実際に分類された例 (False Positive) . . . . . . . . . . . . . . . . . . . . . . . . . . 51

8.4 実際に分類された例 (False Negative) . . . . . . . . . . . . . . . . . . . . . . . . . 52

Page 8: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

7

第1章 序論

1.1 背景

SNSは他ユーザとの交流や今話題の情報を入手するために日夜利用されている. 利用者は非常に

多く, 現代人にとって SNSは欠かせないものとなっている. その中でも Twitter1は, ユーザが親し

い他ユーザをフォローすることで他ユーザとコミュニケーションを図ったり, 自分の興味のある情

報を積極的に発信するユーザをフォローすることで興味のある情報を入手しやすくする等といった

使い方が一般的である. また, Twitterは即時性・速報性が高く, 今流行りの話題や情報を直ちに入

手することができる.

しかし, 興味のある情報だからといって必ずしも今必要な情報とは限らない. 例えば, 楽しみに

していたコンテンツの結果を知ってしまう「ネタバレ」が挙げられる. ネタバレ情報は結果やそれ

に至る過程を知ってしまうとそのコンテンツの面白さを減衰させてしまうことがあり, これからそ

のコンテンツを楽しもうとしているユーザにとって大きなストレスとなり, コンテンツの魅力を台

無しにしてしまう恐れがある.

Twitterを利用するユーザの増加により情報が氾濫し, ネタバレ情報が目に入りやすい環境になっ

ている. Twitterでは, タイムラインに現れたネタバレを偶然遭遇してしまうことが多い.

1.2 問題点

ネタバレ情報に遭遇してしまったときのデメリットはコンテンツの面白さを減衰させることと,

ネタバレによって与えるユーザのストレスにあること本章第 1節で述べた.

ネタバレの被害に遭う要因として, 放送時間の違いというのが挙げられる. 例えば, ドラマやア

ニメ等では地域間で放送時間が違い, スポーツでは生放送と録画放送で放送時間が違う. どちらの

例でも後続の放送で楽しむユーザにとって, 先方の放送の情報は脅威となる.

上記からネタバレを防ぐことは非常に意義があると考えられる. ユーザがネタバレ情報を見ない

ようにするためには, Twitterのタイムラインをなるべく見ないようにする, またはなるべく情報

収集しないといった対策がある. しかし, Twitterはコミュニケーションツールとして日常的に使

用するので, この対策は困難である.

ユーザが今放送している番組についてツイートする「実況」というものがある. Twitterでは, 番

組に関連するハッシュタグをツイートに付加して「実況」を行うのが一般的である. このような番

組に関連するハッシュタグを付加してリアルタイムに投稿されたツイート (図 1.1)を「実況ツイー

ト」と呼ぶ. 実況ツイートは, 放送中に起こったこと, 放送を視聴してユーザ自身が思ったこと考

えたこと等がほとんどである. 中には放送中のキャプチャ画像やニュース記事等を付加したツイー

トも存在する. このようにネタバレになりうるツイートが存在するため, 後続の放送で楽しむユー

ザは番組に関連するハッシュタグをミュートにすることである程度ネタバレを防ぐことができる.

1https://twitter.com/

Page 9: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 1章 序論 8

しかし, 中にはハッシュタグを付けずに実況する人もいるため, 完全にネタバレを防ぐことはでき

ない.

図 1.1: ハッシュタグを用いた実況ツイートの例

1.3 着眼点

本研究では, 実況ツイートに着目した. 前述の通り実況ツイートにはネタバレなツイートと非ネ

タバレなツイートが混在している. 実況ツイートを利用して, 分類器を作成すれば, 放送外のコンテ

ンツに関係したツイートやハッシュタグが付加されてない実況ツイートのフィルタリングにも応用

できるのではないかと考えた. さらに, そこに第 3章で述べる URLの有無やツイートの勢い, ユー

ザの興奮度といったパラメータを付加して分類器を作成すれば, 分類器を良化させることができる

のではないかと考えた.

Page 10: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 1章 序論 9

1.4 研究目的

スポーツやゲームの試合等のネタバレを実況ツイートから除去することを目的とする.

スポーツの試合結果や将棋,囲碁などのゲームの対戦結果は, 多くの人にとってその速報性が重要

であるので, 公式サイトやニュースサイトでも積極的に発信し, ユーザもその経過や結果から様々

な感想や考察等を積極的に発信する. 勝敗やスコア等で結果がはっきりしているため, ネタバレと

非ネタバレの区別がはっきりしている.

テレビ番組や小説, 映画などといったコンテンツでは, ネタバレ情報が公式サイトやニュースサ

イトなどで積極的に公開されることはなく, ユーザのレビューやブログ等で発信される程度である.

また, 人によって解釈が異なることもあり, どのようなツイートがネタバレになるのか一概には言

えない.

本研究の目的は, Twitterを対象として, スポーツやゲームの試合結果などのような積極的に発

信されるネタバレ情報について着目し, 実況ツイートを利用してネタバレ判別分類器を作成し, 実

況ツイートの中にあるネタバレ情報を含んだツイート (以下「ネタバレツイート」と呼ぶ)の推定

を試み, 提案手法の有効性を検証する.

1.5 本論文の構成

本論文の構成を簡潔に説明する. 第 1章では, 序論として本研究の背景, 問題点, 着目点, 研究目

的について述べた. 第 2章では, 関連研究について述べる. 第 3章では, 本研究の提案手法について

述べる. 第 4章では, 単語ベクトルを 2次元に削減した場合でも 2クラス分類ができるか確かめる

予備実験について述べる. 第 5章では, 本研究でシステムの実装方法について述べる. 第 6章では,

実験の結果について述べる. 第 7章では, 実験から得られた結果について考察する. 第 8章では, 結

論と今後の課題について述べる.

Page 11: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

10

第2章 関連研究

ネタバレを遮断することを目的をした研究は過去にも幾つか行われており, Twitterの実況ツイー

トを利用した研究も幾つか行われている.

2.1 ネタバレ防止ブラウザの実現 [1]

2.1.1 ネタバレ検出方法

中村の研究 [1]は, ブラウザベースでフィルタリングを行いネタバレ情報を遮断する研究である.

ネタバレ情報の抽出は, オブジェクト名リストと正規表現辞書を利用している. オブジェクト名リ

ストには, 主に固有名詞が入っておりチーム名及び選手名 (正式名称やニックネームなど)から構成

されている. 正規表現辞書には, スポーツ等の試合に関する汎用性の高い単語や英数字, オブジェ

クト名リストのオブジェクトをマッチさせる正規表現が格納されている. このことからネタバレ情

報の検出はルールベースによるもので比較的シンプルなものとなっている.

2.1.2 フィルタリングの視覚化

この研究ではフィルタリングの視覚化に取り組み, ユーザへフィードバック方法について検討し

ている. 以下の 4つのフィードバック方法を提案している.

非表示手法

ネタバレと判断された部分を非表示にする手法である. ネタバレ部分のみがページから抜け

落ちるためユーザは閲覧中に気になることはない. しかし, 何がネタバレと判断されたかユー

ザは判断することができない.

黒塗り手法

ネタバレと判断された部分の背景とテキストを黒塗りにする手法である. この手法ではどこ

がフィルタリングされているかユーザが把握できるが, 黒塗りされた部分が気になってしま

う可能性がある.

曖昧記述変換手法

ネタバレ情報が明確に記述されている部分をぼかしたような記述にする手法である. 例えば,

「日本代表が勝利した」を変換すると,「日本代表が勝利したかもしれないし敗北したかも」,

「日本代表が勝利?敗北?」のようになる.

木の葉を隠すなら森の中手法 (木の葉手法)

ネタバレと予想された部分を結果が反転したもの, 類似したもの等をページ内に挿入する手

法である. どれが本当の情報なのかわからなくなるかわりに, ページ内がゴミだらけになって

しまいユーザにストレスを与えさせる可能性がある.

Page 12: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 2章 関連研究 11

2.1.3 本研究との比較

この研究とは, スポーツを対象にネタバレをフィルタリングする点で共通している. 本研究では,

ルールベースではなく機械学習により分類器を作成し, ネタバレツイートの推定を行う. 機械学習

により作成した分類器の性能評価が本研究の目的である.

2.2 Twitter上のネタバレ情報の検出 [2]

Sungho Jeonらの研究 [2]は, Twitter上でネタバレ情報を検出するにあたって重要な以下の 4つ

の要素を提唱し, これらの要素を元に SVMで機械学習したモデルを使い, 既存の機械学習モデル

と比べた研究と比較した研究である. この研究ではデータセットとして, リアリティ番組 12回分の

ツイート合計 176426件を使用している. このツイートを手動でネタバレと非ネタバレのラベリン

グを行い, ネタバレと判断されたツイートは 5618件であった.

頻出人名

頻出人名はそのコンテンツに出ている人物である可能性が高い. この人物に関するツイート

全てがネタバレ情報を持っているとは限らないが, ネタバレ情報を持っている可能性があり

危険である.

頻出動詞

頻出動詞は今現在起こってることについて書かれている可能性が高い. 特に頻出人名と頻出

動詞の組み合わせは登場人物が今行っていることについて書かれている可能性が非常に高く

ネタバレの可能性が高い.

URLつきツイート

URLつきツイートはニュースサイトや画像などのURLがついたツイートのことである. ニュー

スサイトのURLがついたツイートはそのURLがコンテンツの結果を表すサイトである可能

性が高い. 画像や動画の URLでもそのコンテンツの過程・結果を表すものである可能性が

ある. 中には関係のない URLつきツイートもあるが, ネタバレであるかは中身を見るまで未

知数である. システムがリンク先まで判別するのは困難なので, ここでは最初から除去して

いる.

ツイートの時制

ツイートの時制はどの時制でツイートされているかである. 例えば, 英語では現在形, 過去形,

未来形等といった時制が存在する. 現在時制では今起きていることについて, 過去時制では

コンテンツの結果について述べられることが予想される. 未来時制では仮定法で使われるこ

とが多く, ユーザの予想や願望といった情報が多くなる. なので, 未来時制ではネタバレ情報

は含まない.

結果は以下の表 2.1の通りである. 結果を見ると, 動詞を追加したときとURLの有無を追加した

ときの F値が大幅に良化している. これらはネタバレ検知において有効であることが言える.

2.2.1 本研究との比較

SVMと実況ツイートを用いて学習を行う点で共通している. 本研究では, スポーツやゲームに関

する実況ツイートを対象にし, 対象言語は日本語である. 上記の 4つの要素を元に SVMで機械学

Page 13: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 2章 関連研究 12

表 2.1: 関連研究 [2]の結果

Step Entered feature Recall Precision F-score

1 頻出名詞 0.3084 0.8291 0.4496

2 +動詞 0.5653 0.8611 0.6826

3 +URL 0.7699 0.7957 0.7825

4 +時制 0.7697 0.7987 0.7839

習した結果, F値が良化したため, これらの要素はネタバレ検知で重要であると考えられる. しか

し, この研究では英語のツイートのみを扱っているため, 日本語では別の要素が重要になる可能性

がある.

2.3 Twitterのスポーツ実況ツイートからの要約

2.3.1 良い実況者に着目した試合の要約 [3]

久保らの研究 [3]は, 試合の内容が鮮明にわかるツイートをするユーザに着目し, そのユーザの

ツイートを用いて試合の要約を行う研究である. 図 2.1はイベントストリームにおけるツイート例

である. ユーザ Bは 2つのサブイベントで試合で起きたことが鮮明にわかるツイートをしており,

ユーザ Bが良い実況者ということになる. 逆にユーザAは単なる感想を述べているだけなので, 悪

い実況者ということになる.

図 2.1: イベントストリームにおけるツイート例

試合 (イベント)中に起きたサブイベントを取得するためにバースト検出を用いている. ツイー

トが集中した時間帯に何らかのサブイベントが起きたとし, このときのツイートを解析する. この

研究では, 動作の主体である名前と専門用語の組み合わせで多くのサブイベントが説明できるとし

ている. 例えば, 野球であれば「(選手名)ホームラン!」「(選手名)タイムリー!」等, サッカーで

あれば「(選手名)にレッドカード」「(選手名)のシュート!」等である. つまり, 動作の主体である

名前と専門用語の組み合わせの共起回数が多ければ, サブイベントをより詳しく説明しているとし,

ツイートにスコアをつける. またこのようなツイートを迅速に行うユーザに対して高いユーザのス

Page 14: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 2章 関連研究 13

コアをつける. ツイートのスコアとユーザのスコアから良いツイートを選び, 要約を自動で生成し

ている. また, 動作の主体となる名前と専門用語はあらかじめ辞書リストを用意して, ルールベー

スで解決している.

2.3.2 チームに応じた試合の要約 [4]

小林らの研究 [4]は, ユーザの属性 (応援しているチーム)に応じた試合の要約を行う研究である.

ハッシュタグが付加されたツイートを利用し, ユーザの属性を決定する. チーム Aに関するハッ

シュタグが付いたツイートは, チームAを関連している (応援している)ツイートと考えられる. こ

のチームAに関するハッシュタグのついたツイートを形態素解析し, 得られた自立語にチームAの

属性を付与することで単語に属性を付与している. 試合時間内の実況ツイートを解析し, 単語の属

性を評価し, 属性評価辞書を作成する. この辞書を用いることでハッシュタグが付加されていない

ツイートでも属性を判別することが可能でユーザの属性を決定している. 区間ごとにツイート数の

平均と分散を利用し, ツイートがバーストした時間帯を属性別に見つけ出す. バーストした時間帯

のツイートから要約を生成している.

2.3.3 本研究との比較

どちらもツイートが急激に増えた時間帯を利用して要約を生成している. このことからツイート

が急激に増えたところで試合展開に変化があったと推定でき, ネタバレツイートが集中すると考え

られる. 本研究でも, ツイートがバーストしたことを分類器に学習させたいと考えている. ツイー

トの分速を計測し, パラメータに加えることで分類器の良化を図る.

2.4 Twitter上のネタバレ情報の調査と分析

2.4.1 ストーリーコンテンツに対するネタバレ [5]

田島らの研究 [5]では, まず, アニメやドラマといった TV番組は地域間の放送時間差があるた

めネタバレを防ぐ必要があると主張している. 図 2.2は 20個の TV番組についての地域世帯数の

平均と経過日数を表したグラフである. 横軸は最速放送からの経過日数, 縦軸が平均世帯数である.

図 2.2の通り最速放送を見ることができない世帯は非常に多い. スポーツでは, 昼や夕方の試合は

仕事等によって観れない人が多く, 録画放送等で視聴する人も多い. このことから Twitter上のネ

タバレを防ぐ重要性は高い.

この研究ではストーリーコンテンツにおけるネタバレを「正体」「生死」「勝敗」等といったカテ

ゴリ毎に分類し, SVMで機械学習し, カテゴリ別にネタバレを推定を行った. ネタバレ判定手法に

以下の 3つの方法を提案している.

ベースライン手法

ツイートを形態素解析して, 単語ベクトルを作成する手法である. 名詞, 動詞, 形容詞, 連体詞, 副

詞の 5つの品詞を利用して単語ベクトルを生成する. この際, 名詞以外の品詞は原型を使用して学

習させる.

Page 15: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 2章 関連研究 14

図 2.2: 20番組において放送される世帯平均数

正規化手法

視聴者が感動等を表す際に用いる「!!!!!」「wwwww」のような連続した記述をすべて「!」

「w」のような 1文字に置換し, 学習させる手法である.

人物名の一般化手法

ストーリーコンテンツにおける主人公やヒロイン等の登場人物名は, コンテンツによって大きく

異なる. 人物名を一般化させることで新しいストーリーコンテンツのネタバレを推定できると唱え,

登場人物を一般的な語に置き換えて学習させる. ここでは, ストーリーの進行において影響力が高

い人物を「主要人物」, 影響力がない人物を「モブ」と置き換えている.

2.4.2 本研究との関連

この研究では, アニメやドラマの「勝敗」に関するネタバレ検出に「!!!!!」「wwwww」のよ

うな連続した文字を 1文字に置換すると良い結果が得られた. 実況ツイートはこのような記述を

使ったツイートが頻繁に現れるので, 正規化する手法は表記揺れを防ぐという意味で有効だと思わ

れる. 本研究ではスポーツ等の試合を扱う. スポーツはスコアや勝敗の結果がひと目でわかりやす

いため, 勝敗に関するネタバレが大多数になると思われる. 本研究でも, 連続した記述を単一文字

に変換し, 表記揺れをできるだけ防ぐことで分類器の良化に繋がると考えられる.

2.4.3 直接的・間接的ネタバレの分析 [6]

白鳥らの研究 [6]では, 直接的ネタバレと間接的なネタバレの 2種類に人力で分けて, 双方の特徴

や傾向を分析している. 直接的ネタバレと間接的ネタバレは以下のように定義される.

Page 16: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 2章 関連研究 15

直接的ネタバレ

試合の結果や経過, スコアが直接伝わってしまうものである. 例えば,「日本代表勝利!」「日

本, 本田のゴールで先制!」「日本 2-1アメリカ」等のようなものである.

間接的ネタバレ

直接単語や記述からは結果は伝わらないが, 文脈や時間的な要素等から試合の結果や経過, ス

コアが読み取れてしまうものである. 例えば, 試合終了後に「やったぜ。」「うれしい」といっ

た喜びを表すような言葉があると試合に勝利したことがわかる. また, 「残念」「悔しい」と

いった悲しみを表すような言葉があると試合に敗北したことがわかる. また, 直接的ネタバ

レと間接的ネタバレの数は直接的ネタバレのほうが多いようである.

このように直接的ネタバレと間接的ネタバレは特徴が大きく異なる. 双方のネタバレツイートを

形態素解析を行い, 品詞別に傾向を見ると. 名詞では, 試合に出場した選手名, 国名, 得失点に関す

るものが双方共に多い. 形容詞では,「良い」「悪い」等の評価に関するものが直接的ネタバレに多

く, 「悔しい」「ほしい」等の自分の感情や展望に関するものが間接的ネタバレに多いということ

がわかった.

この研究では, ネタバレを人力で分類して特徴を調べている. 本研究では, サポートベクトルマ

シンを用いて分類器を作成しネタバレを分類する. 分類器が分類したツイートを解析し, その特徴

を探る.

2.5 マイクロブログにおけるユーザの感情を表す単語の抽出

Samuel Brodyらの研究 [7]は, マイクロブログにおいて単語内に同じ文字が連続しているものを

利用して投稿者の強い感情を表す単語を抽出する研究である. 実況ツイートでは, 「ホーーームラ

ン!!!」「きたああああああああ」「お兄様すげえええええ」等といった書き込みはよく見るので,

連続した文字を検知し, 元の言葉に直す必要がある.

本研究では, 連続した記述を単一文字に置換し, できるだけ元の言葉に近づけている. またこの

ような連続した記述の量をスコアリングし, 機械学習の際にパラメータとして加えている.

Page 17: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

16

第3章 提案手法

3.1 概要

ネタバレツイートを分類するためのサポートベクトルマシン (SVM)による分類器を作成し, 分

類器を用いてネタバレツイートの推定を行う.

実況ツイートを検索し収集する. 実況ツイートをネタバレと非ネタバレに人力でラベリングを行

う. 次に, 実況ツイートを形態素に分解し, Bag of Wordsモデルで単語ベクトルを作る. 得られた

単語ベクトルは高次元ベクトルであるため, 後述の次元削減を行い, 簡略化する. そこに, 後述の追

加要素をパラメータとして加える. このようにベクトル化された実況ツイートを SVMで機械学習

を行う. 得られた分類器はホールドアウト検証とK分割交差検証 (K-fold cross-validation)を用い

て評価を行う.

3.2 実況ツイートの収集

実況ツイートは, twitterのハッシュタグ検索を用いて自分で収集する. twitterの高度な検索1を

用いることで過去のツイートについても検索することが可能である. 高度な検索は図 3.1のよう

なものになっている. ここでは, 単語 (ORや NOT検索, 特定フレーズ, ハッシュタグ, 特定言語),

ユーザ名 (特定アカウントのツイートまたはリプライ), 地域, 日付 (特定の日付の前後, 特定の区間)

を指定して検索することができる. また, ハッシュタグクラウド2やツイポーート/twport3等といっ

た外部Webサービスを用いることで簡単にツイートを収集することもできる.

3.3 ネタバレと非ネタバレのラベリング

実況ツイートをネタバレか非ネタバレかの 2クラスに筆者自身がラベリングを行う. ネタバレと

非ネタバレの判断基準については人によってネタバレか非ネタバレかの境界は違うため, ラベルを

つける人次第である. 例えば, 筆者の野球に関する実況ツイートのネタバレ判断基準は, 得失点に

関すること (ホームラン, タイムリー, タイムリーエラー等), 勝敗, スコア速報, この試合に関係の

あるニュース記事はネタバレ扱いとした. チャンスを潰す, ヒットが出る, 凡退シーン, 誰が何をし

たのかわからないツイート, 応援ツイート, 選手交代, この試合に関係のないニュース記事やツイー

トは非ネタバレとした. 筆者が分類した例を表 3.1に示す. 「1」がネタバレ, 「0」が非ネタバレ

を表している.

1https://twitter.com/search-advanced2http://hashtagcloud.net/3http://twport.com/

Page 18: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 3章 提案手法 17

図 3.1: 高度な検索の画面

3.4 形態素解析

形態素解析は, MeCab4を使用して行う. 英語では単語と単語の間にスペースが入っているのが

普通なのでこの処理は必要ない. 日本語では単語と単語の間にスペースがないので, 形態素解析を

行い, 単語を分割する必要がある.

3.5 単語ベクトルの次元の削減

Bag of Wordsモデルで単語ベクトルを作ると非常に高次元のベクトル5が生成されてしまう. こ

のままでは学習時間や計算領域が多くなり, 高性能なマシンでしか分類器を作成できない恐れがあ

る. そこで, Latent Semantic Indexing(LSI)6 7 により単語ベクトルの次元の削減を行う. 本研究

では 1~128次元の範囲に落として実験を行う.

4http://mecab.googlecode.com/svn/trunk/mecab/doc/index.html5本研究で使用したデータセット 5.2.1 節では約 2100 次元の BoW ベクトルになる.6Latent Semantic Analysis(LSA) とも呼ばれている.7http://lsa.colorado.edu/

Page 19: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 3章 提案手法 18

表 3.1: ネタバレと非ネタバレの分類例

元ツイート 事実ラベル

2表終了。全セ0‐0全パ #joqr #npb #allstar 1

會澤先制 HR! #allstar 1

広島・会沢、球宴初出場の初打席で先制ソロ!守っては黒田を好リード/球宴

http://t.co/XaxQyPPC59 #npb

1

田中 2点タイムリーで追加点きたあああああああああああああああああああああ

あああ!!! #allstar

1

秋山のホームランきたああああああああああああ #seibulions #npb #AllStarGame 1

筒香タイムリーキタ━ (゜∀゜)━! #allstar 1

セリーグ連勝 #npballstar #allstar #npb #tvasahi 1

MVPは先制本塁打の會澤。 #carp #npb #npballstar #マツダオールスターゲー

1

新井、梶谷、森が敢闘賞 #joqr #allstar #npb 1

西武・森、清原以来の10代球宴アーチ!「チャンスがあればと思っていた」/球

宴 http://t.co/3APjtraL57 #npb

1

新井さんがんばれ #npballstar #allstar #hanshin #tigers 0

炭谷ゲッツー #joqr #npb #allstar 0

3表、全セP交替。黒田→マエケン #joqr #npb #allstar 0

オリックス・T-岡田、腰痛で抹消も早期復帰の見込み http://t.co/i9ThnmfnEM

#npb http://t.co/SkKUZA0hdL

0

きたああああああああああああああああああああああ #AllStarGame #AllStar

#NPB #npballstar

0

入るのこれwwwwwwwwwwwwwwwwww #npb 0

糸井内野安打 #allstar #npb 0

タイムリー #allSTAR 0

嶋落球! #allstar 0

角中ナイスキャッチ、ってロッテ勢が守備で魅せてくれるなぁ。 #npb

#NpbALLSTAR

0

LSIで次元を削減したとき, ツイートの情報が失われ 2クラス分類ができない可能性がある. な

ので, LSIで 2次元に落とした場合で 2クラス分類ができるか検出する必要がある. ジャンルがはっ

きりと分かれた 2クラスの分類ができるか検証した予備実験を第 4章で行った.

3.6 追加要素

上記のベクトルに以下の要素を追加する.

Page 20: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 3章 提案手法 19

3.6.1 URLの有無

2.2節の [2]にもあるように,ニュースサイトのアカウントが発信する速報やユーザが読んだニュー

ス記事のツイートには記事の URLが付随するため, ネタバレである可能性が高い. また, Twitter

では, ツイートの付随した画像や動画も URLの外部リンクで表される. 番組のキャプチャ画像を

ツイートに付加して実況するユーザも少数だが存在する. このように URLはネタバレ要素を含ん

でいるため, 分類器のパラメータとして付加する.

3.6.2 ユーザの興奮度

2.5節の [7]では, マイクロブログにおいて単語内に同じ文字が連続したものがあると述べている.

実況ツイートでも, 単語内に同じ文字が連続したものがよく見られる. このような文字を検知し, 連

続した文字をカウントしたものをユーザの「興奮度」として扱う. 例えば, 「タイムリーーー!!!」

の連続した文字を単一に置換すると「タイムリー!」となる. このとき削除された文字数をカウン

トすると 4となる. これをユーザの興奮度とする.

3.6.3 ツイートの勢い

ある一定時間毎のツイート投稿頻度を計測したものである. 計算式は以下の通りである. 本研究

では, 10分毎に分速を計測した.

ツイートの勢い =一定時間内のツイート数

一定時間 (分)

データセットの実況ツイートを時間毎のツイート数のグラフにした結果が図 3.2である.

この図からツイートの勢いが上がったとき, 全体のツイート数が急激に増え, それと同時にネタ

バレツイートの数も急激に増え, ネタバレツイートの割合も上がる. なので, ツイートの勢いを計

測してパラメータとして加えると分類器を良くすることができるのではないかと考えた.

また, 図 3.2から非ネタバレのツイートに比べて, ネタバレツイートの割合が非常に低いことが

わかる. Yuxin Pengらの研究 [8]では, 不均衡データを SVMで学習させるとうまく 2クラス分類

できないので, データ数をサンプリングし各クラス同じ量になるようにする必要があると述べてい

る. 本研究では, オーバーサンプリングを行い少ないデータを増やし, データの量を調節すること

にした.

第 3章で説明する提案手法の概略図を図 3.3に示す.

3.7 分類器の評価方法

得られた分類器は前述した通りホールドアウト検証と K分割交差検証で評価する.

3.7.1 ホールドアウト検証

データセットを教師用データと検証用データとに無作為に分割する. 分割されたデータを用いて

学習と検証を 1回行い, 評価値を算出し, 分類器の評価を行う検証方法である. 図 3.4がホールドア

ウト検証の概略図である.

本研究では教師用データ:検証用データ= 7:3の割合になるように分割し, 評価した.

Page 21: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 3章 提案手法 20

図 3.2: 時間毎のツイート数と出来事

3.7.2 K分割交差検証

K分割交差検証とは, データセットを K個に分割し, K-1個を教師用データとして扱い, 残り 1

つを検証用データとして扱いモデルの正当性を検証するものである. データセットを K個に分割

し, 教師用データと検証用データをK-1:1で機械学習するため, K通りの組ができる. すべての組

について機械学習し, 各評価指標の平均を取り, 評価する. 図 3.5が交差検証のデータ分割の概略図

である.

本研究では, データセットを 10個の組に分割し, 評価した.

3.8 分類器の評価指標

本研究では評価指標として, Accuracy(正答率), Precision(適合率), Recall(再現率), F1-score(F

値), Area Under the Curve(AUC)を使用した.

表 3.2: 事実と予測の関係

事実 真 事実 偽

予測 真 True Positive(TP) False Positive(FP)

予測 偽 False Negative(FN) True Negative(TN)

Page 22: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 3章 提案手法 21

図 3.3: システムの概略図

図 3.4: ホールドアウト検証の概略図

Page 23: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 3章 提案手法 22

図 3.5: 交差検証のデータ分割に関する概略図

3.8.1 Accuracy(正答率)

Accuracyは, 答えと予測全体がどの程度一致しているかを判断する評価指標である. 計算式は以

下の通りである.

Accuracy =TP + TN

TP + TN + FP + FN

3.8.2 Precision(適合率)

Precisionは, 正と予測した中で, 実際に答えが正だったものがどの程度あるかを判断する評価指

標である. Web検索で例えると, 検索結果のうち, どの程度その通りのWebページがあったかとい

う割合が Precisionである. 後述の Recallと相関関係にあり, F値の計算に使用される. 計算式は

以下の通りである.

Precision =TP

TP + FP

3.8.3 Recall(再現率)

Recallは, 答えが正のもののうち, 予測が正だったものがどの程度あるかを判断する評価指標で

ある. Web検索で例えると, 実際のWebページのうち, 検索結果が実際のWebページをどの程度

表示することができたかという割合が Recallである. 前述の Precisionとは相関関係にあり, 後述

の F値の計算に使用される. 計算式は以下の通りである.

Page 24: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 3章 提案手法 23

Recall =TP

TP + FN

3.8.4 F1-score(F値)

F値は, 予測精度を表す評価指標であり, Precisionと Recallの調和平均から算出される. 計算式

は以下の通りである.

F1− score =2Recall ∗ Precision

Recall + Precision

=2 TPTP+FN ∗ TP

TP+FPTP

TP+FN + TPTP+FP

=2TP

2TP + FP + FN

3.8.5 AUC(Area Under the Curve)

Area Under the Curveは, 分類器の評価指標であり, ROC(Receiver Operating Characteristic)

曲線の曲線より下の面積から算出される. ROC曲線とは, 縦軸に True Positive Rate, 横軸に False

Positeve Rateとして, それらの割合をプロットし, 線で連結した曲線のことである. AUCの値が

大きいほど良いという評価になる. 図 3.6が ROC曲線と AUCの例である. 青い曲線が ROC曲線

で赤い斜線の領域が AUCである.

2つの図を比較すると, AUCが左図 3.6のほうが高い. なので, 右図 3.6より左図 3.6のほうが良

いということがわかる. ROC曲線が左上から上を通るとAUCが大きくなり良い評価となる. 逆に

右下を通るような形になると AUCが小さくなり悪い評価となる.

図 3.6: ROC曲線と AUC

Page 25: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

24

第4章 予備実験

ここでは LSIにより単語ベクトルを 2次元に落としたとき, 異なる話題の 2クラス分類ができる

か実験を行う.

4.1 データセット

データセットとして, 野球の話題 (2014/11/14の日米野球), テニスの話題 (2015/7/3のウィンブ

ルドンテニス), 駅伝の話題 (2016/1/2の箱根駅伝)のツイートをそれぞれ約 3000件を使用した. 野

球とテニス, テニスと駅伝, 野球と駅伝の 3通りの組に関して, 提案手法にそって 2クラス分類器を

作成した. 教師用データと検証用データを 7:3に分けたときのホールドアウト検証と 10分割交差

検証を行い, 各評価値を元に 2クラス分類が成功したか評価した.

4.2 結果

4.2.1 ホールドアウト検証の実験結果

野球とテニス, テニスと駅伝, 野球と駅伝の 3通りの組に関してホールドアウト検証を行った結

果を以下の表 4.1, 4.2に示す. さらに, それぞれの組の分類結果とROC曲線を図 4.1, 図 4.2, 図 4.3

に示した.

表 4.1: ホールドアウト検証の予備実験結果 1

野球とテニス Precision Recall F1-score

class baseball 0.95 1.00 0.97

class wimbledon 1.00 0.95 0.97

average 0.97 0.97 0.97

テニスと駅伝 Precision Recall F1-score

class wimbledon 0.98 1.00 0.99

class hakone 1.00 0.98 0.99

average 0.99 0.99 0.99

野球と駅伝 Precision Recall F1-score

class baseball 0.98 1.00 0.99

class hakone 1.00 0.98 0.99

average 0.99 0.99 0.99

Page 26: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 4章 予備実験 25

図 4.1: 野球とテニスの分類結果と ROC曲線

図 4.2: テニスと駅伝の分類結果と ROC曲線

図 4.3: 野球と駅伝の分類結果と ROC曲線

Page 27: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 4章 予備実験 26

表 4.2: ホールドアウト検証の予備実験結果 2

野球とテニス テニスと駅伝 野球と駅伝

Accuracy 0.971 0.989 0.989

AUC 0.996 0.999 0.999

4.2.2 交差検証の実験結果

ホールドアウト検証のときと同じく, 3つの組について 10分割交差検証を行った結果を以下の表

4.3に示す.

表 4.3: 交差検証の予備実験結果

野球とテニス テニスと駅伝 野球と駅伝

Accuracy 0.973(+/- 0.012) 0.990(+/- 0.008) 0.990(+/- 0.009)

AUC 0.996(+/- 0.003) 0.999(+/- 0.001) 0.998(+/- 0.002)

Precision 0.974(+/- 0.011) 0.990(+/- 0.008) 0.990(+/- 0.008)

Recall 0.973(+/- 0.012) 0.990(+/- 0.008) 0.990(+/- 0.009)

F1-score 0.973(+/- 0.012) 0.990(+/- 0.008) 0.990(+/- 0.009)

4.3 結論

以上の結果から, LSIにより単語ベクトルを 2次元に落としたとき, 異なる話題の 2クラス分類

できることがわかった. 同じ話題のネタバレと非ネタバレの 2クラス分類ができるかは後述の実験

により検証する.

Page 28: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

27

第5章 実装

5.1 開発環境

本研究は, ネタバレツイート分類器作成するにあたって, 以下の環境で実装した.

• 言語は Python2.7を使用.

• 形態素解析にはMeCabを使用.

• ツイートのベクトル化 (BoWモデル, LSI)は Pythonライブラリ gensim1を使用.

• 機械学習には Pythonの機械学習ライブラリ scikit-learn2を使用.

5.2 分類器の作成

5.2.1 データセット

2015年 7月に開催されたプロ野球オールスターゲーム第 2戦のTwitter上の実況ツイートをハッ

シュタグ検索により, およそ 5500件を自分で収集し, データセットとして扱った. これらを自分の

手でネタバレと非ネタバレとにラベル付けを行った. ラベル付けの判断基準は, 得失点に関するこ

と, 勝敗, スコア速報, この試合に関係のあるニュース記事はネタバレ扱いとした. チャンスを潰す,

ヒットが出る, 凡退シーン, 誰が何をしたのかわからないツイート, 応援ツイート, 選手交代, 関係の

ないニュース記事やツイート等は非ネタバレとした. その結果, ネタバレと非ネタバレの比率はお

よそ 1:10であった. 不均衡データでは F値での評価が困難である (3.6.3節). 非ネタバレ側のデー

タを全て教師データまたは検証用データとして扱いたいため, データセットのネタバレ側のデータ

数にこれらと同じデータを用意し, ネタバレ側のデータ数を 10倍に増やして実験を行った.

5.2.2 ツイートのベクトル化

本研究では, SVMで分類器の作成を行うため, 各ツイートをベクトルに変換する必要がある. ツ

イートのテキストをベクトル化するため, 後述の前処理を行った. テキストの前処理については以

下の通りである. 主に不要な文字列の削除と表記揺れを改善するための処理を行っている.

不要文字の除去

URLやリプライ, 非公式リツイート, ハッシュタグの「#」は除去する. URLはツイートに

付随する URLである. 「http://」「https://」から始まる文字列を正規表現で検索し, 除去

する.

1https://radimrehurek.com/gensim/2http://scikit-learn.org/stable/

Page 29: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 5章 実装 28

リプライとは, 他ユーザへの返信を表すもので, @から始まる英数字のことである. @から始

まる英数字で書かれた文字列を正規表現で検索し, 除去する.

非公式リツイートとは, 他のツイートを引用して自分のコメントを載せる目的で使われるも

ので, 「(自分のコメント) RT @… (本文)」といった形で使われる. 「RT」の 2文字は不要

なので, 除去する.

ハッシュタグを用いるには, 頭に「#」をつけてツイートを行う. ハッシュタグの先頭につい

た「#」の 1文字は不要なので除去する.

品詞の原形を使用

名詞以外の品詞は全て原型に修正する. MeCabを用いて名詞以外の品詞の基本形を取得して

いる.

英文字の統一

英文字は全て半角小文字に統一する. 英文字の表記揺れを改善するための処理である.

日本語やその他文字の統一

数字, カタカナ, 感嘆符, 疑問符は全て全角大文字に統一する. 英文字の時と同じく表記揺れ

を改善するための処理である.

連続した記述の正規化

単語内に同じ文字が連続した記述を単一文字に置換する. これは [5]で提案されている手法で

ある. 実況ツイートでは, 単語内, 単語の最後の文字の母音, 感嘆符, 「w」を連続して記述

することが非常に多い. これらを単一の表現にするため連続した記述について正規化を行う.

図 5.1に正規化例を示す.

表 5.1: 連続した記述の正規化例

元文章 変換後

!!!!! !

お兄様すげえええええ お兄様すげえ

ゴーーーーーール!!!!!!11111 ゴール!1

先制ホームランwwwww 先制ホームランw

上記の処理で実際のツイートを変換し, 単語を半角スペースで区切った例を表 5.1に示す.

次に, 上記の前処理により変換されたツイートをベクトルに変換する. 以下のような処理を行う.

単語の出現頻度

単語の出現頻度が高すぎる単語と低すぎる単語は除去する. 出現頻度が高すぎる単語はほと

んどのツイートに現れる単語であり, ツイート間の特徴の違いを表現できず, ネタバレと非ネ

タバレに分類する上で双方の特徴が出にくいと考えた. ここでの出現頻度が高すぎる単語と

いうのは, 主に検索に用いたハッシュタグのことである. ハッシュタグは収集したツイートす

べてに付加されており, メインのハッシュタグは除去するべきである.

単語の出現頻度が低すぎる単語も出現頻度が高すぎる単語と同じくツイート間の特徴の違い

を表せないので, ネタバレと非ネタバレに分類する上で双方の特徴が出にくいと考えた. 出

現頻度が高すぎる単語と同じく除去した.

Page 30: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 5章 実装 29

図 5.1: ツイートの前処理例

単語の出現頻度の下限と上限については, 6.2節の評価実験で得られた結果から最適なものを

選択し使用する.

この処理で残った単語を特徴語として扱う. 後述の Bag of Wordsベクトル (BoWベクトル)

では, 残った特徴語の種類の個数の次元ベクトルが生成される.

Bag of Wordsによるベクトル化

Bag of Wordsによるベクトル化は Pythonライブラリの gensimを用いて実装した. 特徴語

の頻度をカウントして, N次元のベクトルが生成される.

BoWベクトルの簡単な例を紹介する. 次の 3つの文をベクトル化する.

• ここはホームラン頼むホームラン

• 特大ファール. これは三振前の…

• やっぱり三振…

これらの文で使われた単語を抜き出して特徴語リストを生成すると以下の様になる.

• ここ, は, ホームラン, 頼む, 特大, ファール, これ, 三振, 前, の,やっぱり

この単語群を元に 3つの文章を単語の出現回数で表現すると次のようになる.

• 1, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0

• 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0

• 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1

これが BoWベクトルである. 例の単語群は 11個なので, 11次元の BoWベクトルが得ら

れる.

次元の削減

得られた BoWベクトルは非常に高次元のベクトルである. 3.5節にそって LSIによる次元の

削減を行い, 1~128次元ベクトルに簡略化を行う.

Page 31: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 5章 実装 30

追加要素

3.6節で述べた通り URLの有無, ユーザの興奮度, ツイートの勢いのパラメータを追加する.

LSIにより得られたベクトルに 3つの追加要素を加える.

5.2.3 機械学習

上記によりベクトル化されたツイートと, 表 3.1のようにあらかじめ筆者自身でネタバレと非ネ

タバレにラベリングしたラベルを用いる. 教師用データと検証用データに分け, 教師用データを使

用し, 学習を行い分類器を作成する. 作成された分類器に検証用データ (ベクトル)を与え, 予測結

果 (ラベル)を得る. 予測結果と人力でラベリングしたラベルから, 各評価値を算出し, 評価を行う.

Page 32: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

31

第6章 評価実験

6.1 次元削減を行わない機械学習

ツイートテキストの前処理を形態素解析のみ, 出現頻度が高すぎる単語と低すぎる単語の除去な

し, 単語ベクトルの LSIによる次元削減なしで機械学習を行った.

しかし, 筆者の環境では, 単語ベクトルが巨大すぎたためうまく動作できず, 単語ベクトルの次

元削減を行わずに機械学習した結果が得られなかった. このときの特徴語の数は約 2100個だった.

よって, 単語ベクトルは 2100次元のベクトルであるため, 次元削減なしではより高性能なマシンが

必要なのではないかと思われる. このことから単語ベクトルが高次元だと動かせないので, 次元を

落として単語ベクトルの簡略化を図る必要がある.

6.2 出現頻度での単語ベクトルの除去

出現頻度が高すぎる単語と低すぎる単語は除去する. ここでは, 全体の何% に出現する単語を除

去すれば良いか検証する.

データセットのツイートに対し, 5.2.2節の通りにツイートをベクトル化する. ここでは, LSIで

単語ベクトルを 2次元に落とすことにし, 3.6節で述べた追加要素を追加しない. 単語出現頻度が低

いものは 0~5%の範囲で 0.5%刻み, 単語出現頻度が高いものは 75~100%の範囲で 5%刻みで変化

させて除去を行う. 検証方法は 5分割交差検証で Accuracyと F値を使用して評価した.

結果は Accuracyが 0.570~0.575, F値が 0.543~0.550の範囲に収まった. F値の標準偏差が小

さい順にソートし, 上位 10件と下位 5件を示した表 6.1を示す.

表 6.1を見ると, Accuracyと F値はそれほど大きな変化はない. 各評価値の標準偏差の小さいも

のを採用することにする. 下限 1.0% 上限 80%の組は, Accuracyの標準偏差が全体で 1番目に低い

値で, F値の標準偏差が全体で 3番目に低い値であったため, この組を採用する. 今後の実験では単

語出現頻度が 1.0%以下, 80%以上の単語を除去することにする.

Page 33: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 6章 評価実験 32

表 6.1: 出現頻度に関する検証結果

下限 (%) 上限 (%) Accuracy Accuracy 標準偏差 F値 F値 標準偏差

1.5 95 0.572 0.011 0.545 0.006

3.0 100 0.571 0.007 0.544 0.007

1.0 80 0.571 0.005 0.545 0.008

5.0 95 0.570 0.010 0.544 0.008

2.5 85 0.573 0.013 0.548 0.008

0.5 75 0.572 0.005 0.547 0.010

3.5 90 0.571 0.007 0.545 0.010

3.5 80 0.571 0.010 0.545 0.010

0.5 100 0.573 0.011 0.548 0.010

3.5 85 0.572 0.012 0.546 0.010

3.0 85 0.571 0.032 0.544 0.033

2.5 90 0.573 0.029 0.548 0.034

0.0 95 0.575 0.036 0.550 0.034

4.0 80 0.571 0.037 0.545 0.036

2.0 95 0.572 0.038 0.546 0.041

6.3 LSIによる次元の削減

LSIにより単語ベクトルを 1~128次元に削減し, それぞれ機械学習を行った. ここでは, 追加要

素は追加せず単語ベクトルのみを使って実験を行った. 追加要素は後述の実験で追加する. ホール

ドアウト検証と交差検証で検証し, 各評価値を評価した. ホールドアウト検証の結果は表 6.2と 6.3,

交差検証の結果は表 6.4と図 6.1に示した.

結果から, Accuracyでは単語ベクトルが 32次元以上だと良い結果が得られた. 交差検証では 32

次元以上だとほぼ同じ値が得られているので, 32次元頭打ちになっている. また標準偏差は 32次

元が一番小さいので Accuracyで見ると 32次元が一番良いという結果が得られた.

AUCで見ると, 単語ベクトルの次元が増えるほど良くなる傾向になる結果が得られた. 標準偏差

は Accuracyのときと同様に 32次元が一番小さい.

F値で見ると, 32次元のとき一番大きい値が得られたが, それ以降は下降している. 標準偏差も

32次元が一番小さく, F値では 32次元が一番良い結果が得られた.

総合的に見ると, 単語ベクトルを 32次元に落としたときが一番良い結果が得られた.

Page 34: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 6章 評価実験 33

表 6.2: ホールドアウト検証結果 1(単語ベクトルのみ)

1次元 precision recall f1-score 16次元 precision recall f1-score

非ネタバレ 0.53 0.82 0.64 非ネタバレ 0.54 0.85 0.66

ネタバレ 0.65 0.31 0.42 ネタバレ 0.71 0.33 0.45

avg/total 0.59 0.56 0.53 avg/total 0.62 0.58 0.55

2次元 precision recall f1-score 32次元 precision recall f1-score

非ネタバレ 0.55 0.82 0.66 非ネタバレ 0.60 0.83 0.69

ネタバレ 0.66 0.34 0.45 ネタバレ 0.73 0.46 0.56

avg/total 0.61 0.58 0.56 avg/total 0.66 0.64 0.63

4次元 precision recall f1-score 64次元 precision recall f1-score

非ネタバレ 0.57 0.81 0.6 非ネタバレ 0.58 0.93 0.72

ネタバレ 0.66 0.37 0.48 ネタバレ 0.83 0.35 0.50

avg/total 0.61 0.59 0.57 avg/total 0.71 0.64 0.60

8次元 precision recall f1-score 128次元 precision recall f1-score

非ネタバレ 0.56 0.83 0.67 非ネタバレ 0.58 0.93 0.71

ネタバレ 0.67 0.35 0.46 ネタバレ 0.81 0.32 0.46

avg/total 0.62 0.59 0.57 avg/total 0.69 0.62 0.58

表 6.3: ホールドアウト検証結果 2(単語ベクトルのみ)

1次元 2次元 4次元 8次元

Accuracy 0.559 0.584 0.592 0.591

AUC 0.569 0.586 0.593 0.611

16次元 32次元 64次元 128次元

Accuracy 0.577 0.641 0.637 0.622

AUC 0.644 0.685 0.710 0.723

表 6.4: 交差検証結果 (単語ベクトルのみ)

次元 Accuracy AUC Precision Recall f1score

1 0.571 (+/- 0.023) 0.593 (+/- 0.035) 0.596 (+/- 0.029) 0.572 (+/- 0.023) 0.543 (+/- 0.024)

2 0.572 (+/- 0.030) 0.573 (+/- 0.039) 0.595 (+/- 0.031) 0.574 (+/- 0.027) 0.547 (+/- 0.036)

4 0.589 (+/- 0.034) 0.581 (+/- 0.048) 0.609 (+/- 0.038) 0.591 (+/- 0.032) 0.571 (+/- 0.036)

8 0.600 (+/- 0.038) 0.610 (+/- 0.052) 0.622 (+/- 0.040) 0.601 (+/- 0.036) 0.583 (+/- 0.042)

16 0.595 (+/- 0.039) 0.649 (+/- 0.043) 0.627 (+/- 0.050) 0.597 (+/- 0.039) 0.570 (+/- 0.043)

32 0.639 (+/- 0.021) 0.688 (+/- 0.029) 0.661 (+/- 0.027) 0.640 (+/- 0.026) 0.626 (+/- 0.025)

64 0.633 (+/- 0.029) 0.706 (+/- 0.044) 0.701 (+/- 0.037) 0.635 (+/- 0.026) 0.601 (+/- 0.031)

128 0.631 (+/- 0.027) 0.726 (+/- 0.031) 0.698 (+/- 0.013) 0.633 (+/- 0.018) 0.598 (+/- 0.031)

Page 35: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 6章 評価実験 34

6.4 追加要素

6.4.1 URLの有無

1~128次元に落とした単語ベクトルに URLの有無の情報を追加して実験を行った. ホールドア

ウト検証と交差検証で検証し, 各評価値を評価した. ホールドアウト検証の結果は表 6.5と表 6.6,

交差検証の結果は表 6.7と図 6.2に示した.

結果を見ると, 6.3節のときより全体的に数値が良化した. また, 傾向は 6.3節のときとほぼ変化

はなく, 32次元のときが一番良いという結果が得られた.

6.4.2 ユーザの興奮度

1~128次元に落とした単語ベクトルにユーザの興奮度の情報を追加して実験を行った. ホール

ドアウト検証と交差検証で検証し, 各評価値を評価した. ホールドアウト検証の結果は表 6.8と表

6.9, 交差検証の結果は表 6.10と図 6.3に示した.

結果を見ると, 6.3節と比べて 1~16次元の数値が良化した. 交差検証で, Accuracyと F値では

8次元, AUCでは 32次元が一番大きい数値を出し, 6.3節と 6.4.1節とは違う傾向が得られた.

興奮度には低次元ベクトルの評価値を大きく良化させる効果があることがわかる.

6.4.3 ツイートの勢い

1~128次元に落とした単語ベクトルにツイートの勢いの情報を追加して実験を行った. ホール

ドアウト検証と交差検証で検証し, 各評価値を評価した. ホールドアウト検証の結果は表 6.11と表

6.12, 交差検証の結果は表 6.13と図 6.4に示した.

結果から, 評価値が 6.3節のときより全体的に良化した. また, 6.4.2節と同じく 1~16次元の評

価値を大きく引き上げている. 交差検証から, Accuracy, AUC, F値で 32次元が一番大きい値を出

しているので, 6.3節と 6.4.1節と同じく 32次元が一番良いという結果になった.

6.4.4 全ての追加要素

1~128次元に落とした単語ベクトルに全ての追加要素を追加して実験を行った. ホールドアウ

ト検証と交差検証で検証し, 各評価値を評価した. ホールドアウト検証の結果は表 6.14と表 6.15,

交差検証の結果は表 6.16と図 6.5に示した.

結果から, 全体的に評価値が 6.3節のときより良化した. 特に低次元での評価値が大きく良化し

た. これまでの結果とは違い低次元で一番大きい数値を出し, それ以降は下降する傾向にあること

がわかった. 2つの検証結果両方で, 4次元が一番良い値が得られた.

Page 36: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 6章 評価実験 35

表 6.5: ホールドアウト検証結果 (+URL)

1次元 precision recall f1-score 16次元 precision recall f1-score

非ネタバレ 0.57 0.80 0.67 非ネタバレ 0.56 0.79 0.66

ネタバレ 0.68 0.41 0.51 ネタバレ 0.68 0.41 0.51

avg/total 0.62 0.60 0.59 avg/total 0.62 0.60 0.58

2次元 precision recall f1-score 32次元 precision recall f1-score

非ネタバレ 0.56 0.84 0.67 非ネタバレ 0.61 0.81 0.70

ネタバレ 0.69 0.36 0.47 ネタバレ 0.72 0.48 0.58

avg/total 0.63 0.60 0.57 avg/total 0.66 0.65 0.64

4次元 precision recall f1-score 64次元 precision recall f1-score

非ネタバレ 0.58 0.78 0.67 非ネタバレ 0.60 0.90 0.72

ネタバレ 0.68 0.45 0.54 ネタバレ 0.79 0.39 0.53

avg/total 0.63 0.62 0.61 avg/total 0.70 0.65 0.62

8次元 precision recall f1-score 128次元 precision recall f1-score

非ネタバレ 0.58 0.81 0.67 非ネタバレ 0.61 0.87 0.72

ネタバレ 0.68 0.41 0.51 ネタバレ 0.74 0.41 0.53

avg/total 0.63 0.61 0.59 avg/total 0.68 0.65 0.63

表 6.6: ホールドアウト検証結果 2(+URL)

1次元 2次元 4次元 8次元

Accuracy 0.602 0.597 0.616 0.608

AUC 0.627 0.583 0.624 0.634

16次元 32次元 64次元 128次元

Accuracy 0.597 0.646 0.646 0.647

AUC 0.644 0.698 0.719 0.728

表 6.7: 交差検証結果 (+URL)

次元 Accuracy AUC Precision Recall f1score

1 0.605 (+/- 0.035) 0.628 (+/- 0.043) 0.626 (+/- 0.034) 0.606 (+/- 0.029) 0.588 (+/- 0.033)

2 0.602 (+/- 0.020) 0.590 (+/- 0.016) 0.630 (+/- 0.015) 0.603 (+/- 0.013) 0.581 (+/- 0.017)

4 0.618 (+/- 0.023) 0.633 (+/- 0.023) 0.638 (+/- 0.022) 0.619 (+/- 0.019) 0.604 (+/- 0.022)

8 0.621 (+/- 0.030) 0.640 (+/- 0.030) 0.638 (+/- 0.032) 0.622 (+/- 0.028) 0.610 (+/- 0.030)

16 0.620 (+/- 0.037) 0.663 (+/- 0.038) 0.644 (+/- 0.037) 0.621 (+/- 0.027) 0.605 (+/- 0.031)

32 0.652 (+/- 0.025) 0.697 (+/- 0.025) 0.668 (+/- 0.031) 0.653 (+/- 0.026) 0.645 (+/- 0.025)

64 0.649 (+/- 0.028) 0.715 (+/- 0.034) 0.695 (+/- 0.033) 0.651 (+/- 0.027) 0.628 (+/- 0.030)

128 0.646 (+/- 0.025) 0.733 (+/- 0.026) 0.694 (+/- 0.023) 0.648 (+/- 0.015) 0.624 (+/- 0.022)

Page 37: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 6章 評価実験 36

表 6.8: ホールドアウト検証結果 1(+興奮度)

1次元 precision recall f1-score 16次元 precision recall f1-score

非ネタバレ 0.65 0.78 0.71 非ネタバレ 0.65 0.78 0.71

ネタバレ 0.73 0.58 0.65 ネタバレ 0.73 0.58 0.65

avg/total 0.69 0.68 0.68 avg/total 0.69 0.68 0.68

2次元 precision recall f1-score 32次元 precision recall f1-score

非ネタバレ 0.64 0.71 0.67 非ネタバレ 0.62 0.75 0.68

ネタバレ 0.68 0.61 0.64 ネタバレ 0.69 0.54 0.61

avg/total 0.66 0.65 0.65 avg/total 0.65 0.65 0.64

4次元 precision recall f1-score 64次元 precision recall f1-score

非ネタバレ 0.67 0.74 0.70 非ネタバレ 0.59 0.92 0.71

ネタバレ 0.71 0.63 0.67 ネタバレ 0.83 0.38 0.52

avg/total 0.69 0.69 0.69 avg/total 0.71 0.64 0.62

8次元 precision recall f1-score 128次元 precision recall f1-score

非ネタバレ 0.66 0.75 0.70 非ネタバレ 0.62 0.86 0.72

ネタバレ 0.72 0.61 0.66 ネタバレ 0.77 0.46 0.57

avg/total 0.69 0.68 0.68 avg/total 0.69 0.66 0.65

表 6.9: ホールドアウト検証結果 2(+興奮度)

1次元 2次元 4次元 8次元

Accuracy 0.682 0.655 0.686 0.683

AUC 0.732 0.693 0.710 0.701

16次元 32次元 64次元 128次元

Accuracy 0.682 0.647 0.643 0.663

AUC 0.732 0.723 0.727 0.726

表 6.10: 交差検証結果 (+興奮度)

次元 Accuracy AUC Precision Recall f1score

1 0.676 (+/- 0.029) 0.728 (+/- 0.023) 0.684 (+/- 0.029) 0.677 (+/- 0.030) 0.673 (+/- 0.031)

2 0.665 (+/- 0.034) 0.701 (+/- 0.029) 0.666 (+/- 0.035) 0.665 (+/- 0.034) 0.664 (+/- 0.034)

4 0.684 (+/- 0.030) 0.711 (+/- 0.043) 0.687 (+/- 0.030) 0.684 (+/- 0.030) 0.683 (+/- 0.030)

8 0.687 (+/- 0.027) 0.714 (+/- 0.038) 0.689 (+/- 0.029) 0.687 (+/- 0.028) 0.686 (+/- 0.027)

16 0.676 (+/- 0.029) 0.728 (+/- 0.023) 0.684 (+/- 0.029) 0.677 (+/- 0.030) 0.673 (+/- 0.031)

32 0.664 (+/- 0.026) 0.740 (+/- 0.032) 0.680 (+/- 0.032) 0.665 (+/- 0.027) 0.656 (+/- 0.025)

64 0.660 (+/- 0.019) 0.726 (+/- 0.011) 0.688 (+/- 0.023) 0.662 (+/- 0.018) 0.648 (+/- 0.021)

128 0.644 (+/- 0.033) 0.723 (+/- 0.028) 0.684 (+/- 0.030) 0.646 (+/- 0.027) 0.625 (+/- 0.036)

Page 38: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 6章 評価実験 37

表 6.11: ホールドアウト検証結果 1(+勢い)

1次元 precision recall f1-score 16次元 precision recall f1-score

非ネタバレ 0.70 0.53 0.60 非ネタバレ 0.70 0.53 0.60

ネタバレ 0.61 0.76 0.68 ネタバレ 0.61 0.76 0.68

avg/total 0.66 0.65 0.64 avg/total 0.66 0.65 0.64

2次元 precision recall f1-score 32次元 precision recall f1-score

非ネタバレ 0.65 0.65 0.65 非ネタバレ 0.71 0.59 0.64

ネタバレ 0.66 0.66 0.66 ネタバレ 0.65 0.76 0.70

avg/total 0.66 0.66 0.66 avg/total 0.68 0.68 0.67

4次元 precision recall f1-score 64次元 precision recall f1-score

非ネタバレ 0.65 0.65 0.65 非ネタバレ 0.69 0.67 0.68

ネタバレ 0.67 0.67 0.67 ネタバレ 0.68 0.70 0.69

avg/total 0.66 0.66 0.66 avg/total 0.69 0.69 0.69

8次元 precision recall f1-score 128次元 precision recall f1-score

非ネタバレ 0.68 0.63 0.65 非ネタバレ 0.65 0.60 0.62

ネタバレ 0.67 0.72 0.69 ネタバレ 0.63 0.68 0.65

avg/total 0.67 0.67 0.67 avg/total 0.64 0.64 0.64

表 6.12: ホールドアウト検証結果 2(+勢い)

1次元 2次元 4次元 8次元

Accuracy 0.647 0.656 0.660 0.675

AUC 0.696 0.713 0.715 0.728

16次元 32次元 64次元 128次元

Accuracy 0.665 0.677 0.686 0.637

AUC 0.741 0.745 0.762 0.720

表 6.13: 交差検証結果 (+勢い)

次元 Accuracy AUC Precision Recall f1score

1 0.642 (+/- 0.028) 0.692 (+/- 0.023) 0.648 (+/- 0.026) 0.642 (+/- 0.026) 0.638 (+/- 0.028)

2 0.651 (+/- 0.033) 0.702 (+/- 0.036) 0.651 (+/- 0.034) 0.651 (+/- 0.034) 0.651 (+/- 0.034)

4 0.668 (+/- 0.034) 0.723 (+/- 0.046) 0.668 (+/- 0.034) 0.668 (+/- 0.033) 0.668 (+/- 0.034)

8 0.675 (+/- 0.030) 0.731 (+/- 0.031) 0.676 (+/- 0.030) 0.675 (+/- 0.029) 0.674 (+/- 0.029)

16 0.669 (+/- 0.022) 0.731 (+/- 0.023) 0.673 (+/- 0.022) 0.668 (+/- 0.021) 0.666 (+/- 0.021)

32 0.679 (+/- 0.033) 0.751 (+/- 0.037) 0.684 (+/- 0.032) 0.678 (+/- 0.032) 0.676 (+/- 0.034)

64 0.673 (+/- 0.032) 0.751 (+/- 0.038) 0.674 (+/- 0.032) 0.674 (+/- 0.032) 0.673 (+/- 0.032)

128 0.653 (+/- 0.024) 0.727 (+/- 0.021) 0.653 (+/- 0.024) 0.653 (+/- 0.024) 0.652 (+/- 0.024)

Page 39: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 6章 評価実験 38

表 6.14: ホールドアウト検証結果 1(+all)

1次元 precision recall f1-score 16次元 precision recall f1-score

非ネタバレ 0.76 0.63 0.69 非ネタバレ 0.75 0.66 0.70

ネタバレ 0.68 0.80 0.74 ネタバレ 0.69 0.78 0.74

avg/total 0.72 0.72 0.71 avg/total 0.72 0.72 0.72

2次元 precision recall f1-score 32次元 precision recall f1-score

非ネタバレ 0.75 0.70 0.73 非ネタバレ 0.72 0.67 0.69

ネタバレ 0.72 0.77 0.74 ネタバレ 0.69 0.74 0.72

avg/total 0.74 0.74 0.74 avg/total 0.71 0.71 0.71

4次元 precision recall f1-score 64次元 precision recall f1-score

非ネタバレ 0.76 0.71 0.73 非ネタバレ 0.67 0.70 0.68

ネタバレ 0.73 0.78 0.75 ネタバレ 0.69 0.66 0.67

avg/total 0.74 0.74 0.74 avg/total 0.68 0.68 0.68

8次元 precision recall f1-score 128次元 precision recall f1-score

非ネタバレ 0.74 0.68 0.71 非ネタバレ 0.66 0.67 0.67

ネタバレ 0.72 0.77 0.74 ネタバレ 0.66 0.66 0.66

avg/total 0.73 0.73 0.73 avg/total 0.66 0.66 0.66

表 6.15: ホールドアウト検証結果 2(+all)

1次元 2次元 4次元 8次元

Accuracy 0.715 0.735 0.744 0.728

AUC 0.792 0.803 0.816 0.801

16次元 32次元 64次元 128次元

Accuracy 0.719 0.706 0.678 0.662

AUC 0.789 0.792 0.768 0.744

表 6.16: 交差検証結果 (+all)

次元 Accuracy AUC Precision Recall f1score

1 0.723 (+/- 0.030) 0.793 (+/- 0.028) 0.728 (+/- 0.030) 0.723 (+/- 0.030) 0.722 (+/- 0.030)

2 0.738 (+/- 0.028) 0.809 (+/- 0.028) 0.739 (+/- 0.028) 0.738 (+/- 0.029) 0.738 (+/- 0.029)

4 0.742 (+/- 0.025) 0.813 (+/- 0.030) 0.743 (+/- 0.027) 0.742 (+/- 0.026) 0.742 (+/- 0.025)

8 0.736 (+/- 0.035) 0.809 (+/- 0.027) 0.738 (+/- 0.034) 0.736 (+/- 0.036) 0.735 (+/- 0.036)

16 0.718 (+/- 0.040) 0.797 (+/- 0.032) 0.724 (+/- 0.038) 0.718 (+/- 0.039) 0.716 (+/- 0.040)

32 0.705 (+/- 0.030) 0.789 (+/- 0.033) 0.706 (+/- 0.029) 0.705 (+/- 0.029) 0.704 (+/- 0.030)

64 0.692 (+/- 0.025) 0.775 (+/- 0.016) 0.692 (+/- 0.025) 0.692 (+/- 0.026) 0.692 (+/- 0.025)

128 0.673 (+/- 0.023) 0.747 (+/- 0.025) 0.673 (+/- 0.024) 0.674 (+/- 0.023) 0.673 (+/- 0.024)

Page 40: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 6章 評価実験 39

図 6.1: 交差検証結果 (単語ベクトルのみ)

図 6.2: 交差検証結果 (+URL)

Page 41: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 6章 評価実験 40

図 6.3: 交差検証結果 (+興奮度)

図 6.4: 交差検証結果 (+ツイートの勢い)

図 6.5: 交差検証結果 (+all)

Page 42: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

41

第7章 考察

7.1 LSIによる単語ベクトルの削減

BoWモデルでツイートをベクトル化したものを, そのまま機械学習するには高性能なマシンを

用いる必要がある. そこで本研究では LSIにより単語ベクトルをある次元まで落として単語ベクト

ルを作成した.

1~128次元で実験したところ, 次元を落とせば評価値が下がることがわかった. ネタバレと非ネ

タバレを分類する上で必要な情報が次元を落とすごとに失われているということがわかる. テキス

トのみでは次元が大きいほど良い結果が得ることができる.

7.2 追加要素

7.2.1 URLの有無

URLの有無の情報を付加して学習すると 1~128次元全てで各評価値が良化した. 2.2節にもあ

る通り URLのついたツイートはネタバレの可能性が高い. 2.2節と結果から日本語でも英語でも

URL付きツイートはネタバレである可能性が高く, 危険であることがわかる.

ニュース記事は試合で何か起きてから記事が作られ, ユーザがその記事を読むときには試合で起

きたイベントよりかなり時間が経過しているので, ツイートの勢いの情報ではニュース記事に関す

るツイートは検知しづらい. また, ニュース記事サイトのアカウントが投稿するツイートでは「w

wwww」や「!!!!!」と言った同じ文字が連続した記述は使われない. また, ユーザがニュース記

事に関するツイートをするときは字数制限から同じ文字が連続した記述が使われることは少ない.

このため, ユーザの興奮度ではニュース記事に関するツイートは検知しづらい. ニュース記事に関

するツイートを検知するためには URLの有無で検知するのが最適であると考えられる.

7.2.2 ユーザの興奮度

ユーザの興奮度の情報を付加して学習すると, 全体的に評価値が良化し, 特に低次元での評価値

が大きく良化した. ユーザの興奮度はネタバレと非ネタバレの分類に有効であることがわかる.

同じ文字が連続した記述が使われるツイートは使われてる単語や品詞の種類が非常に少ない. 例え

ば,「(選手名)ホームランwwwwww」や「(選手名)サヨナラタイムリーきたああああああ!!!!!」

というようなツイートである. ツイートテキストの情報量が元々非常に少ないため, 低次元に落と

した単語ベクトルでもうまく分類できたのではないかと考えられる.

Page 43: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 7章 考察 42

7.2.3 ツイートの勢い

ツイートの勢いの情報を付加して学習すると, ユーザの興奮度のときと同じく, 全体的に評価値

が良化し, 特に低次元での評価値が大きく良化した. ツイートの勢いはネタバレと非ネタバレの分

類に有効であることがわかる.

ツイートの勢いが高くなると試合の展開に何か変化があり, 今起きている状況を伝えようとする

ツイートが増えるため, ネタバレツイートが増える. このようなツイートを検知するためにツイー

トの勢いは必要である.

ユーザの興奮度と組み合わせることで低次元ベクトルでも高い評価値を得ることができた. 試合

の展開に何か変化があったときはツイートに使われる単語の数が少なく, ユーザの興奮度が高いツ

イートが多いためだったと思われる. なぜ, このようなツイートが多くなるのかというと, 今起き

ていることをユーザがより素早く他ユーザへ伝えようとするためではないかと考えられる. そのた

め, 「(選手名)(名詞){例:新井ホームラン}」「(選手名)(名詞)(動詞){例:新井ホームランきた}」

のような単語数が少ないツイートに入力が簡単な「wwwww」や「!!!!!」と言った同じ文字が

連続した記述が付加した, ある種の定型文のようなツイートが多くなる. なので, ツイートの勢い

とユーザの興奮度を組み合わせると低次元ベクトルでうまく分類できたのではないかと考えた. 今

後はさらにツイートの勢いやユーザの興奮度, 単語との共起関係を詳しく調べる必要がある.

7.3 分類器の誤判定の解析

7.3.1 ネタバレを非ネタバレと誤答した場合

作成した分類器がネタバレを非ネタバレと誤答した例としてスコア速報が挙げられる. 表 7.1が

分類器がスコア速報に関する誤答例と正答例である. 以降の表 7.1, 7.2, 7.3では, ネタバレが「1」,

非ネタバレが「0」で表している. 野球のスコア速報は「セ 0-0パ」, 「セ 0 (1表) 0パ」等, いろ

いろな表現がある. チーム名も「パ」, 「全パ」, 「パリーグ」等といろいろな表現ができる. なの

で, 表記揺れが激しいため, 正しく検知できなかったとのではないかと推察される. ネタバレと推

定できたスコア速報に関する例もあるので, 改善するには何らかの手法で表現を統一する必要があ

ると思われる.

表 7.1: スコア速報に関する誤答例と正答例

元ツイート 事実ラベル 予測ラベル

黒田、三つのアウトすべてを空振り三振で奪う立ち上がり。1表終

了。全セ‐0全パ #joqr #npb #allstar

1 0

18:45現在の途中経過は、セ 0(1表)0パ、です。 #allstar #npb 1 0

#tvasahi #allstar 筒香見逃し三振 1回裏終了 セ0-0パ 1 0

1裏終了。全セ0‐0全パ #joqr #npb #allstar 1 1

1裏 吉川もランナー出すが無失点 #allstar #npb 1 1

「新井タイムリー!」のように端的に試合展開を説明したツイートも非ネタバレと誤答したこ

とがあった. 表 7.2に端的なツイートの誤答例とユーザの興奮度が高いツイートの正答例を示す.

ユーザの興奮度をネタバレ分類のためのパラメータとして加えたため,「追加点きたああああああ」

Page 44: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 7章 考察 43

や「新井タイムリー!!!!!11111」のようなツイートをネタバレと判断することができたが, 逆

に端的表されたツイートをネタバレとして判別できなかったものと思われる.

表 7.2: 端的なツイートの誤答例とユーザの興奮度が高いツイートの正答例

元ツイート 事実ラベル 予測ラベル

筒香タイムリーツーベース #allstar 1 0

筒香もタイムリー! #npb #baystars 1 0

新井さんタイムリー!! #allstar 1 0

筒香タイムリーで 5点目きたあああああああああああああああああ

ああああああああああああああああああ!!!!! #baystars #allstar

1 1

新井さんにタイムリーきたーーーーー #carp #npb 1 1

新井さんタイムリーwwwwwwwwwwwwwwwwwwwww

#AllStar #NPB #npballstar #AllStarGame

1 1

7.3.2 非ネタバレをネタバレと誤答した場合

作成した分類器が非ネタバレをネタバレと誤答した例として, 選手の応援, 選手への賞賛または

罵倒, 今後の試合展開の予想または願望等が挙げられる. また, 選手のファインプレー, ヒット, 凡

退, 盗塁等の得失点に関わらない出来事はネタバレとして私は扱わなかったが, 分類器はネタバレと

して判断した. このような誤答例の一部を表 7.3に示した. 非ネタバレをネタバレと誤答したもの

の中には, ネタバレ扱いにしても良いツイートがいくつか存在する. 人によってネタバレと非ネタ

バレの境界は曖昧なため, このような誤答はあっても良い. ツイートにネタバレ度を表すスコアを

つけることができれば, 人によって曖昧なネタバレの境界を移動させることができ, このような誤

答をネタバレと判断したり, 非ネタバレと判断したりすることができるのではないかと考えられる.

表 7.3: 非ネタバレをネタバレと誤答した例

元ツイート 事実ラベル 予測ラベル 備考

吉川ええやん #npb 0 1 選手の評価

マエケンも流石や #allstar #npb 0 1 選手の評価

クルーズかっこえええええ #allstar 0 1 選手の評価

新井さんセンター返し!#allstar #npb 0 1 得失点に関わらない出来事

新井ホームラン打ってくれ #allstar 0 1 試合展開の願望

角 中 ナ イ ス プ レ ー! #npb

#AllStarGame

0 1 選手の評価

嶋アカンやんけ #allstar 0 1 選手の評価

鈴木盗塁成功! #npb #AllStarGame 0 1 得失点に絡まない出来事

今宮にはこの守備がある #allstar

#npb

0 1 選手の評価

MVPのインタビューを中継しないテ

レ朝 これは苦情必須だな! #npb

0 1 得失点に関わらない出来事

Page 45: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 7章 考察 44

7.3.3 関連研究 [2]との比較

表 2.1の全ての要素を追加したときの F値と表 6.16の 4次元の F値を比較すると, 0.04ほど本

研究で作成した分類器が下回った. 対象言語と対象にした話題が違うが, 重要な追加要素を与えれ

ば F値を 0.7台まで引き上げることができ, 分類器の性能向上が可能だということがわかった. 下

回った原因として, 形態素解析がうまく機能していないことが挙げられる. 日本語では, 形態素解

析をするという手順があり, 形態素解析器の辞書に登録されていない単語はうまく機能しないこと

がある. そのため, 新語が出るたびに辞書を更新しなければならない. 英語では, 単語と単語の間

にスペースを入れ区切ることが通例なので, 形態素解析をする必要がない. それに加え, 新語が出

ても初めから単語と単語が分けられているため, 新語への対応も用意にできる. 日本語では, 英語

と違い「時制」という概念もないので, ネタバレ判別の要素が減ってしまっている点も挙げられる.

今後は日本語に適した追加要素を模索する必要がある.

Page 46: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

45

第8章 結論

8.1 まとめ

本研究では, 実況ツイートを使用したネタバレ情報検知を行うための手法を提案した.

提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し, 教師用データとして

扱うためにネタバレか非ネタバレか区別するためのラベリングを行う. ツイートを URL除去, リ

プライ, 同じ文字を連続した記述の正規化等を行い, 形態素解析しベクトル化しやすいように整形

する. BoWモデルにより単語ベクトルを生成し, LSIにより単語ベクトルの次元削減を行う. 得ら

れた単語ベクトルに, URLの有無, ユーザの興奮度, ツイートの勢いの情報を加え, サポートベクト

ルマシンによる機械学習を行い, ネタバレツイートを推定するための分類器を作成した.

提案手法を用いて作成した分類器から得られた分類結果を取得し, Accuracy, AUC, Precision,

Recall, F値の評価値を算出し, 分類器の性能評価を行った. 結果として URLの有無, ユーザの興

奮度, ツイートの勢いはネタバレ分類において有効であり, 実況ツイートを利用してネタバレ分類

器が作成可能であることを示した. また, この 3つの要素を追加することで単語ベクトルを低次元

にしたときでも分類できることがわかった. しかし, スコアやチーム名, 選手名等の表記揺れに対

応できなかったり, ネタバレと非ネタバレの誤認識などがあるので改善点がある.

8.2 今後の課題

8.2.1 表記揺れの対応

7.3.1節のように表記揺れにより正しく分類できない例があった. ツイートの前処理の段階で何

らかの手法により表記を統一する必要がある. 具体的には, 「セ 0-0パ」, 「セ 0 (1表) 0パ」等の

スコアに関する記述を検知し「セ 0 パ 0」のようにテキストの前処理の段階で統一させると良いと

思われる.

8.2.2 ネタバレ度のスコアリング

7.3.2節のように人によってはネタバレになるツイートとそうでないツイートが存在することが

わかった. このようにネタバレの境界は人によって曖昧なので, 何らかの手法でツイートごとにネ

タバレ度のスコアリングを行うことできれば, 曖昧なネタバレ境界の閾値を移動することができ,

改善に繋がるではないかと考えられる.

8.2.3 他のパラメータの付加

本研究では, テキストから URLの有無とユーザの興奮度, 投稿時間からツイートの勢いを算出

し, パラメータとして加えた. 他にも有効なパラメータが存在するか模索する必要がある. 例えば,

Page 47: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 8章 結論 46

リツイート数や Like数. 位置情報等が挙げられる.

8.2.4 他のスポーツでの検証

本研究では, 野球に関するツイートを用いて実験を行った. 他のスポーツでは違った結果になる

可能性があるため, 他のスポーツの実況ツイートを使用して検証する必要がある.

8.2.5 教師なし学習での検証

本研究では, 教師あり学習の一つである SVMを使用した. 本来なら, 自分の手でネタバレ, 非ネ

タバレのラベリングをせずにネタバレを分類できたほうがユーザへの手間もかからず良いだろう.

つまり, 正解データなしで機械学習を行ったほうがユーザにとって良いと考えられる. 単語同士や

品詞の共起関係を調べ, URLの有無, ツイートの勢い, ユーザの興奮度等のデータの規則性からツ

イートをクラスタリングし, ネタバレ情報を持ったツイート群を見つけることができるか検証する

必要がある.

Page 48: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

47

謝辞

本研究は, 電気通信大学大学院 情報理工学研究科 情報・通信工学専攻 コンピュータサイエンス

コース 寺田研究室において, 寺田 実准教授のご指導のもと行われました.

寺田 実准教授には, 研究の方針の検討, アイディアの提供など, 数多くの助言を賜りました. 心

より御礼申し上げます.

また, 寺田研究室の同僚である博士課程前期 2年の海老澤 雄太さん, 長利 槙吾さん, 博士課程前

期 1年の阿部 真之さん, 鈴木 佑樹さん, 平田 吉久さん, 本田 裕人さん, 学部 4年の安部 文紀さん,

布川 大地さん, 山本 愛美さん, 渡辺 友康さん, 渡邊 裕貴さんには多くのアイディアやアドバイス

を頂き, また研究室生活や大学生活等様々な面でお世話になりました. 心から御礼申し上げます.

Page 49: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

48

参考文献

[1] 中村聡史. ネタバレ防止ブラウザの実現. WISS2010, 41-46, 2010.

[2] Sungho Jeon, Sungchul Kim, and Hwanjo Yu. Don’t Be Spoiled by Your Friends: SpoilerDetection in TV Program Tweets. Seventh International AAAI Conference on Weblogs andSocial Media, 2013.

[3] 久保光証, 笹野遼平, 高村大也, 奥村学. “良い実況者” に着目した Twitter からのスポーツ速報生成. 言語処理学会 第 19回年次大会 発表論文集, 138-141, 2013.

[4] 小林尊志, 野田雅文, 出口大輔, 高橋友和, 井手一郎, 村瀬洋. Twitter の実況書き込みを利用したスポーツ映像の要約. 電子情報通信学会技術研究報告. MVE, マルチメディア・仮想環境基礎 110(457), 165-169, 2011.

[5] 田島一樹, 中村聡史. ストーリーコンテンツに対するネタバレの基礎調査とその判定手法の検討. 第 96回グループウェアとネットワークサービス研究会 (GN), 2015.

[6] 白鳥裕士, 中村聡史. SNS 上でのサッカーの試合に対する直接的・間接的ネタバレの分析. 第96回グループウェアとネットワークサービス研究会 (GN), 2015.

[7] Samuel Brody, Nicholas Diakopoulos. Cooooooooooooooollllllllllllll!!!!!!!!!!!!!!: using wordlengthening to detect sentiment in microblogs. Proceedings of the 2011 Conference on Em-pirical Methods in Natural Language Processing, 562-570, 2011.

[8] Yuxin Peng, Jia Yao. AdaOUBoost: adaptive over-sampling and under-sampling to boostthe concept learning in large scale imbalanced data sets. Proceedings of the internationalconference on Multimedia information retrieval. ACM, 2010.

Page 50: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 8章 結論 49

付録

ここでは, 本研究で作成した分類器が実際に分類したツイートの一部 (True Positive, True Neg-

ative, False Positive, False Negative, 各 25件)を掲載する.

表 8.1: 実際に分類された例 (True Positive)

元ツイート 事実 予測

ホームランダービー 第 2戦 優勝は山田哲人 #allstar #npb 1 1

1裏 吉川もランナー出すが無失点 #allstar #npb 1 1

會澤先制本塁打wwwwwwwww #NPB #npballstar 1 1

會澤翼 (広島)のソロで、セ・リーグが先制。 #NPB #npballstar 1 1

全セ 梶谷タイムリー<セ2-0パ> #npb #allstar #npballstar 1 1

筒香のセンターオーバータイムリーで1点追加 #joqr #npb #allstar 1 1

新井www 2塁打で2打点 #allstar 1 1

新井さん、右中間を破るタイムリーで全セさらに1点追加 #joqr #npb #allstar 1 1

梶谷センター前タイムリーヒット セリーグ7-1パリーグ 5回裏攻撃中 #npb

#npballstar

1 1

森君のホームランは10代選手として史上2人目 #joqr #npb #allstar 1 1

清原以来の 10代でのオールスターでホームランwwwwwwwwwwwwww

w #TVasahi #球宴 #オールスター #allstar #allstargame #npballstar #npb

1 1

森友哉くんホームラン!! すごい!!#allstar 1 1

全セ 平田ホームラン<セ8-3パ> #npb #allstar #npballstar 1 1

平田ホームランwwwwwwwwwwwwwwwwwwww #allstar #npb 1 1

セ 8-3パ試合終了マツダオールスターゲーム 2015はセリーグ連勝 #allstar #npb 1 1

【プロ野球】西武・森、大先輩に並ぶ10代弾!代打でフルスイング「光栄です」

  http://t.co/lEkbpN2q1a #seibulions #npb

1 1

オスンファン投手あっさり 3凡で試合終了!!2015年オールスターはセ・リーグ連

勝。宮島さんが鳴り響く。 #allstar #TVasahi

1 1

MVPは先制本塁打の會澤。 #carp #npb #npballstar #マツダオールスターゲー

1 1

MVP會澤か!勝利打点だからまあ妥当 #allstar 1 1

新井、梶谷、森が敢闘賞 #joqr #allstar #npb 1 1

全パ吉川2回0封、第2の故郷広島で恩返し http://t.co/gSmmymtayC #npb

http://t.co/mvPAbQLOxH

1 1

西武・秋山、初球宴で本塁打「思い切っていった」/球宴 http://t.co/kYoN77L8Rk

#npb

1 1

全セ前田健太、38球オール直球勝負で2回無失点 http://t.co/SacfnAmHfT #プ

ロ野球 #NPB

1 1

黒田、放送席で激走の新井イジり「シーズン中より速い」/球宴

http://t.co/Ilaqcd2xYt #npb

1 1

全セ新井、豪快フルスイングで尻もち転倒 http://t.co/7BbiIdpH7a #プロ野球

#NPB

1 1

Page 51: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 8章 結論 50

表 8.2: 実際に分類された例 (True Negative)

元ツイート 事実 予測

スタンド見るとカープファンばっかりやん...なんか嫌やなぁ... #allstar #npb 0 0

グラウンドレベル中居 #baystars #allstar 0 0

観客席のどこを見ても真っ赤で草生える 完全に広島戦じゃねーか! #TVasahi

#球宴 #オールスター #allstar #allstargame #npballstar #npb

0 0

キタ━━ (ヽ≧∀≦) —ズ—バ—ッ—と—三—振—毎—度—あ—り—っ—!—(≧

∀≦)ノ━━!!!!! #allstar

0 0

【MLB】マー君、後半戦開幕戦で2被弾も7回5安打7奪三振2四球3失点で

6勝目の権利得る MAX151キロ http://t.co/1goJNDmddA #npb #野球

0 0

松井稼頭央スタメン 第1打席ライトフライ #npb #AllStarGame 0 0

中島卓也さん出したら試合時間に影響するぞ。アメトーークが遅くなるぞ。

#npballstar #allstar #npb

0 0

銀仁朗選手をセカンドゴロゲッツーに取りチェンジ!!黒田投手さすが #allstar

#BSasahi

0 0

新井さんはほんとエンターテイナーだな・・・打たなくてもこんなに盛り上がって

るわ #TVasahi #球宴 #オールスター #allstar #allstargame #npballstar #npb

0 0

黒田は 2イニングで降板か・・・マエケンへの継投きたな #TVasahi #球宴 #オー

ルスター #allstar #allstargame #npballstar #npb

0 0

いったあああああああああああああああああああああああああああああああああ

ああああああああああああああああああああああああああああああ #allstar

0 0

これが本物の打てて守れるキャッチャーやで #AllStarGame #AllStar #NPB

#npballstar

0 0

マエケン真っ向勝負 #allstar 0 0

パリーグ全員でマエケン殺害しようとしとる #npb 0 0

三塁ベンチを守る松田wwww #npb 0 0

セリーグは交流戦の借りをオールスターで返すつもりな ww #allstar 0 0

これは 2005 年本塁打王広島東洋カープ新井貴浩 #AllStar #NPB #npballstar

#AllStarGame

0 0

新井さん、AS通算打率.520wwwwwwwwwwwwwww #npb 0 0

西武打たれすぎやろwwwwwwwwwwwwwwwwwwwww #npb 0 0

DeNA・キヨシ監督、続投へ前向き「いい返事をしたい」http://t.co/2fU06yHtjn

#npb

0 0

打った瞬間 #npb #allstar 0 0

西武が燃えて西武で取り返すスタイル #allstar 0 0

松田宣浩のサード守備は魅せるねぇw #npb 0 0

角中すげえええええええ!!! ナイスダイビングキャッチ♪ #allstar 0 0

嶋その空振りはなんなんだw #TVasahi #球宴 #オールスター #allstar

#allstargame #npballstar #npb

0 0

Page 52: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 8章 結論 51

表 8.3: 実際に分類された例 (False Positive)

元ツイート 事実 予測

やきうのじかんだああああああああ #allstar 0 1

プレイボール #npb #allstar 0 1

あら秋山三振 #npb #AllStarGame 0 1

今日の黒田はゴロアウト全然取れてないなあ。ここでそろそろ #npb 0 1

見事なゲッツー #allstar #npb 0 1

ピッチャー返しに手を出す→満塁でゲッツー 黒田らしいプレーできてるのかw

#npb

0 1

新井、打席で思いきり振った結果転倒するwww #joqr #npb #allstar 0 1

3表、全セP交替。黒田→マエケン #joqr #npb #allstar 0 1

広島のエースマエケンやしな #allstar 0 1

全パ P:吉川→ディクソン #allstar #npb 0 1

【悲報】原監督、交流戦を忘れる #allstar 0 1

PL対決 #allstar 0 1

今日のオールスター、特別賞はクルーズでお k #allstar #npb 0 1

これはオールスター通算5割新井さん #allstar 0 1

【悲報】スライリー、バク転を試みるも上手くいかなかった模様 #joqr #npb

#allstar

0 1

今宮スイングスピードは速いけどノーパワーだったか #TVasahi #球宴 #オール

スター #allstar #allstargame #npballstar #npb

0 1

角中よく捕ったな #AllStar #NPB #npballstar #AllStarGame 0 1

嶋三振。。 #allstar 0 1

こうやって聞くとロッテの応援歌ほんと個性的だな #allstar 0 1

嶋やらかしwww #allstar #joqr 0 1

今宮うめえなあ・・・ #TVasahi #球宴 #オールスター #allstar #allstargame

#npballstar #npb

0 1

9表 セリーグのマウンドは呉昇桓 #allstar #npb 0 1

満塁で角中に回せ! #allstar 0 1

アメトーーク 20分遅れ #npballstar #allstar #npb #tvasahi 0 1

MVPインタビュー写してやれよ www #allstar 0 1

Page 53: Twitterの実況ツイートを利用した タイムライン上のネタバレ情報 …sp.cei.uec.ac.jp/thesis/saitoh_master2016.pdf · 提案手法は, ハッシュタグのついた実況ツイートをツイート検索で収集し,

第 8章 結論 52

表 8.4: 実際に分類された例 (False Negative)

元ツイート 事実 予測

山田哲人、ホームラン競争優勝おめ!!#ALLSTAR 1 0

山田初出場で初優勝とはよくやるな #npballstar #AllStarGame #AllStar #NPB 1 0

ヤクルト・山田が本塁打競争制す「試合よりも緊張した」http://t.co/AS3UcxvAk0

#Baseball #NPB

1 0

會澤 HRwwww #npb 1 0

會澤の先制ソロムランきたーーーーーーーー! #carp #npb 1 0

十亀もわくわくさんも5失点か #allstar 1 0

十亀、大炎上 #allstar 1 0

サイレント HR秋山 #allstar 1 0

うお 森、マジでホームラン打ったw #allstar 1 0

10代でのオールスター本塁打は清原と今日の森だけなのかすげえ #npb 1 0

森のホームランほんますごいわ #allstar 1 0

そしてここで平田のHR笑 #allstar 1 0

セリーグ 4点~ #npb 1 0

藤浪が鈴木走らせてなければ 2 ランという #AllStar #NPB #npballstar

#AllStarGame

1 0

そしてここで平田のHR笑 #allstar 1 0

平田ダメ押しホームラン #allstar 1 0

セントラル連勝! #allstar 1 0

パ・リーグ負けちゃった… #sbhawks #allstar 1 0

セ・リーグ連勝~ #allstar 1 0

セリーグ 8-3 パリーグ #allstar 1 0

MVPは會澤。おめやで #allstar 1 0

【悲報】MVP會澤、インタビュー映してもらえない (ノA ‘) #npb 1 0

森君ホームランじゃねーか #allstar 1 0

森ホームランからの清田でロッテチャンテ 1 #allstar 1 0

#広島・会沢、球宴初出場の初打席で先制ソロ!守っては黒田を好リード/球宴

http://t.co/XQTYPiasmn #NPB #baseball

1 0