【AI自由研究】M1-2022ネタを（ひらがな変換したり）感情分析したりしてみた

# はじめに
　約2年前の取り組みで恐縮ですが…Python、AI（自然言語処理）で遊んでみました。
　今回は、**M1グランプリ2022（以下M1-2022）のネタをひらがな変換したり、感情分析したり**してみました。コピペで真似できるレベルで書いているので、趣味の範囲で自由にご活用くださいませ◎

:warning:**こちらは社内に2023年5月頃に公開したメモを少し簡潔にしたものです**。見たことある方、すみません…
:warning:結果を眺めながらの分析やグラフはかなりテキトーです。
:beginner:コードに関して…コピペしコメントアウト部分「★」を好きなテストデータに変えるだけで、それっぽい結果が出ると思います。

## こんなことを書いています
- Python・既存ライブラリを使って、Youtubeの自動字幕の内容を抽出できます
- Python・既存ライブラリを使って、文章をひらがなに変換しています（※精度微妙）
- Python・既存モデルを使って、感情分析をやっている様子を見られます（※超初心者）
    - **一つの文を**章に**分けて分析**することで、新たな気づきを得ました！

## オマケ話…なんでM1-2022の漫才をテストデータにしたの？
- この遊びを始めたのが2022年12月末で、ちょうどM1の放送後だったこともあるのですが…。
- 以下、個人の見解等が入りますが…～2021年の数年間のM1優勝ネタ・上位ネタというのが一部ファンから『人を傷つけない漫才』と言われていまして。一方、2022年に優勝したウエストランドのM1決勝でのネタは「あるなしクイズを使って、いろんな界隈の悪口を勢い良く並べていく」…『悪口漫才』と例える人もいる内容のネタでした。その『悪口漫才』、『人を傷つけない漫才』と同様に面白く楽しめて…そこでふと思った **「今年のウエストランドの『悪口漫才』、実際どれくらいネガティブなこと言ってるんだろう？ネガティブ盛り盛りだと思うんだけど、それでも笑えるってことになるのかな？」という個人的な疑問を可視化できるのでは** 、と思った次第です。
    - ※実際の漫才は、話す声量やスピード、漫才師の表情や動き、会場の雰囲気も左右して成り立つと思っているので、あくまで一面しか探れないのは承知の上で…。
- はじめの方にヨネダ2000のネタを使用しているのはただの個人的な趣味です。良い意味で、一番意味が分からなかったので。気に入っています。
- あと、この題材を選んだのは **Youtubeで公開されている上に自動で字幕が付いている** ことも理由の一つです。旬なネタの文章をを簡単に取得できそうだなと。

#  :tv:Youtubeの自動字幕を抽出してみた

参考にしたURL：

https://maasaablog.com/development/backend/python/4867/

　既存ライブラリ使用しました！いくつか見つけたのですが、今使用できるライブラリだとコレ↓は結構簡単に使用できて良いんじゃないかなと思います。
```python:youtube_txt.py
# 既存ライブラリのインストール
pip install youtube-transcript-api
from youtube_transcript_api import YouTubeTranscriptApi

test_yt_id = "m9WzUSyOZYE" # ★ここにYoutubeの該当動画のIDを入力
transcript_list = YouTubeTranscriptApi.list_transcripts(test_yt_id)
test_text = "" # この変数の中に自動字幕を貯め込む
for transcript in transcript_list:
    for tr in transcript.fetch():
        # print(tr) # {'text': '字幕のテキスト情報', 'start': 字幕の開始時間, 'duration': 字幕が表示されている時間}
        # print(tr['text'], end = ",")
        test_text = test_text + tr['text'] + ","

print(test_text) # 結果を出力（任意で使用してください）
```
　結果は下記の通り。自動字幕を抽出できました。
```text:字幕結果.txt
[音楽],結成2年,初出場,東京都出身,神奈川県出身,愛,今大会最年少13年ぶりの,女性コンビファイナリスト,2人は言う,米田2000,[音楽],ようこそきしょう天蓋嫁だランド,[音楽],エントリーナンバー17,for,米田2世,[音楽],田谷,線ですお願いしまーす,[音楽],イギリスで,餅つこうぜお,餅つく,イギリスでお餅をついたら人儲けでき,るっていう計算が出たのねそうだから,イギリスでぺったんこ」って言いながらお,餅ついてもらってもいいペッタン,わかったありがとうねあとは私たちを,信じてね私たち,絶対に,成功させようね,絶対に,成功させようねー何人かいる感じね,絶対に,成功させようねー,絶対に,成功させようねあ行けたお,餅をつくときな,掛け声は,あります,[笑い],私たちが,イギリスのお正月です,それをエンジンで言えばよかった,ロンドンスカイロンドンバス,ロンドンチルドレンロンドンパフェ,ジャパニーズも,ジャパニーズも嫌い,ジャパニーズも好き,になってないけど大丈夫,スタート,[音楽],[笑い],[拍手],[拍手],[拍手],[笑い],[音楽],[拍手],[音楽],[拍手],[笑い],[拍手],[音楽],[拍手],[拍手],[音楽],
```

## やってみて思ったこと
- そもそもの自動字幕の精度が良くない／(^o^)＼ でも手で直すのも面倒だし、ひとまずコレをテストデータとして使用します！
- ↑今回は使わないですが…調べてみると、動画…拡張子mp4等の音声から字幕を作る～みたいなAPIはいろいろある様子。そういえば生配信動画とかで使用されてるのを見ますよね。
    - 精度が良かったら、趣味で使用する分のテストデータとしてより良さそう…文字情報を楽にゲットできるし…。

# :pencil2:ひらがな変換してみた

参考にしたURL：

https://maasaablog.com/development/backend/python/4867/

```python:hiragana_txt.py
# 既存ライブラリのインストール
pip install pykakasi
from pykakasi import kakasi

# オブジェクトをインスタンス化
kakasi = kakasi()
# モードの設定：J(Kanji) to H(Hiragana)
kakasi.setMode('J', 'H') 

# 変換して出力
conv = kakasi.getConverter()
conv.do(test_text) # ★ここにテストデータを入れる（ここでは字幕抽出時の変数をそのまま使用）
```
　結果は下記の通り。ひとまずは、ひらがな変換できてる！と思ったが…
```text:ひらがな結果_抜粋.txt
[おんがく],けっせい2ねん,はつしゅつじょう,とうきょうとしゅっしん,かながわけんしゅっしん,あい,こんたいかいさいねんしょう13ねんぶりの,じょせいコンビファイナリスト,2にんはいう,よねだ2000,[おんがく],ようこそきしょうてんがいよめだランド,[おんがく],エントリーナンバー17,for,よねだ2よ,[おんがく],たや,せんですおねがいしまーす,[おんがく],イギリスで,もちつこうぜお,もちつく,イギリスでおもちをついたらにんもうけでき,るっていうけいさんがでたのねそうだから,イギリスでぺったんこ」っていいながらお,もちついてもらってもいいペッタン,わかったありがとうねあとはわたしたちを,しんじてねわたしたち,ぜったいに,せいこうさせようね,ぜったいに,せいこうさせようねーなんにんかいるかんじね,ぜったいに,せいこうさせようねー,ぜったいに,せいこうさせようねあいけたお,もちをつくときな,かけごえは,あります,[わらい],わたしたちが,イギリスのおしょうがつです,それをエンジンでいえばよかった,ロンドンスカイロンドンバス,ロンドンチルドレンロンドンパフェ,ジャパニーズも,ジャパニーズもきらい,ジャパニーズもすき,になってないけどだいじょうぶ,スタート,[おんがく],[わらい],[はくしゅ],[はくしゅ],[はくしゅ],[わらい],[おんがく],[はくしゅ],[おんがく],[はくしゅ],[わらい],[はくしゅ],[おんがく],[はくしゅ],[はくしゅ],[おんがく]
```

## やってみて思ったこと
- 2人→「2にん」？「ふたり」が正しいよ！
- ↑といった感じで、意外と結果が怪しい。精度向上を目指して、他のライブラリを検討したり、または自作する余地はありそう。

# :heart_eyes:感情分析してみた①

参考にしたURL：

https://resanaplaza.com/2022/06/12/%E3%80%90%E5%AE%9F%E8%B7%B5%E3%80%91python%E3%81%A8bert%E3%81%A7%E6%84%9F%E6%83%85%E5%88%86%E6%9E%90%E3%81%97%E3%82%88%E3%81%86%E3%82%88%EF%BC%81/

　漫才1本をまるっと使って（※自動字幕、という粗いデータを使用）、感情分析をしてみることにしました。
```python:analysis0-0.py
# 既存ライブラリのインストール
pip install torch torchvision
pip install transformers[ja]
from transformers import pipeline, AutoModelForSequenceClassification, BertJapaneseTokenizer

# 感情分析の実行

# 学習済モデルの取得
model = AutoModelForSequenceClassification.from_pretrained('daigo/bert-base-japanese-sentiment') 
# 日本語の単語分解
tokenizer = BertJapaneseTokenizer.from_pretrained('cl-tohoku/bert-base-japanese-whole-word-masking')
# 感情分析モデルの生成
nlp = pipeline("sentiment-analysis",model=model,tokenizer=tokenizer)
```
　抽出した自動字幕から漫才部分のみコピペし、テストデータとして使用しました。
```python:analysis0-1.py
# ★テストデータ（自動字幕抽出テキスト※精度悪　から漫才部分だけコピペ）
test_txt = '田谷,線ですお願いしまーす,[音楽],イギリスで,餅つこうぜお,餅つく,イギリスでお餅をついたら人儲けでき,るっていう計算が出たのねそうだから,イギリスでぺったんこ」って言いながらお,餅ついてもらってもいいペッタン,わかったありがとうねあとは私たちを,信じてね私たち,絶対に,成功させようね,絶対に,成功させようねー何人かいる感じね,絶対に,成功させようねー,絶対に,成功させようねあ行けたお,餅をつくときな,掛け声は,あります,[笑い],私たちが,イギリスのお正月です,それをエンジンで言えばよかった,ロンドンスカイロンドンバス,ロンドンチルドレンロンドンパフェ,ジャパニーズも,ジャパニーズも嫌い,ジャパニーズも好き,になってないけど大丈夫,スタート,[音楽],[笑い],[拍手],[拍手],[拍手],[笑い],[音楽],[拍手],[音楽],[拍手],[笑い],[拍手],[音楽],[拍手],[拍手]'
# 感情分析の実施、出力
print(nlp(test_txt))
```
　ヨネダ2000がM1-2022で披露した「イギリスでリズムに乗りながら餅をついて一儲けする」漫才の結果は…聞いていた感じだと、ポジティブだと思うけれど…
```text:M1-2022_ヨネダ2000_1.txt
[{'label': 'ポジティブ', 'score': 0.937617301940918}]
```
　やっぱり！
　ではここで、他のM1決勝出場コンビの漫才も見てみようと思ったのですが…
```python:analysis0-1_ng.py
# テストデータ（自動字幕抽出テキスト※精度悪　から漫才部分だけコピペ）
test_txt_1 = '壁ポスターですよろしくお願いします,確かにお前の言う通り,糸電話って,数分後には,めっちゃゴミだね,言ってないよ,誰とその話してたのお願いしますよろしく,お願いしますありがとうございますね,トップバッター,いやー大声大会の季節が待ち遠しいですね,ちょっと季節知らんかもなあアンの大声,大会に季節地元の夏祭りで毎年やってたん,ですよほんで夏なんやはい,結構待ってんのね地元なかった地元なかっ,たけどあるやろ大きな声叫んでいってこれ,なんでシベルで一番でかいこういう人が,優勝のやつねそれに小学生の頃大人に,まじって参加して,優勝したことあるねお前がしかも小学生の,頃なんかその時の叫ぶことなのテーマが,大好きなものを叫ぶって決められててね,大好きなものを叫んでいくのね,順番がその時もトップバッテリーとか,トップバット出てきて,ポケットモンスターかわいいねーあいいね,大好きやったからポケモン大好きやもんな,小学生もちろん暫定1位になってねもう,そりゃそうやろうけどそっから誰にも越え,られへんかったってことで次の人でできて,お次の人,シーチキン,珍しいね,でまぁ僕が買って大好きなんよ,次の人で次の人,湯布院,温泉街ので,僕が買って,次の人出てきて次の人,ビーフンお前以外言葉選びミスりすぎてる,なんで大きな声出さなあかん大会で最後,うんで終わんの,次の人で大丈夫,ムーミン叫びにくいやろ,テーマに寄せすぎちゃうみんなで次が最後,の人です次最後,愛してるぞユリア叫びやすいけど痛いな,こいつはたまにおるな好きな人の名前叫ぶ,やつその人が最下位に,負けたんやその時僕が優勝してね,すごいけどだいぶラッキーやったねその次,の年も出て次の年もその年のテーマが,欲しいもの叫ぶって決められます次欲しい,ものを叫んでいくまた順番最初僕で出てき,た,自分の部屋,欲しいよなぁ,マジで言葉選べよあんま大きな声で言った,あかんやろそんなん,七輪欲しいか,えさっきから欲しい,ユリアの全てまた出てるやんこいつその人,が最下位もう出てくんなよじゃあ実際これ,でボソッと好きな人言うだけでその時も,優勝してね盛り下がってるようなこの大会,トップバッターがピークでさでその次の年,はトップバッターじゃなくてねお前も何,回転ね,テーマしりとりってなってしりとり最初の,人が叫んだ言葉からしりとりでつないで,いかないといけないというルールになって,最後がうんで終わらんように大会顔が,テコ入れしてきてるやん,可愛いだけのトップバッターが優勝して,盛り下げるから運営動いてるやん最初の人,で俺も盛り上がったんちゃうじゃん,[音楽],空からじゃなくて,偶からでもいいですかで,[拍手],次,僕の番お前また優勝するやん,クズいや飲まれたね,飲まれちゃったねみんながすぼんでるから,ゆりあ結婚してくれこいつどこで,プロポーズしてんのこの人その人が優勝し,て,良かったねあじゃあまだ良かったんじゃ,ちょっと盛り上がったかなあ,舞台上にゆりあさんが上がってきてねえ,プロポーズの返事するためってことこちら,こそあの人出た方が良かったんちゃう,めちゃくちゃでかかったよでも素敵やね,プロポーズOKで抱き合って,お前のクズよユリアの言うに繋げるための,やつやったのそんないきなり出してたお前,全員でつなげてた,そのための軍服やったんや,で最後2人キスして,次の大会やねんけどそこ口すぼめろやもう,ええわどうもありがとうございます'
# 感情分析の実施、出力
print(nlp(test_txt_1))
```
　うわーっ文字数エラー！
```python:analysis0-1_ng_err.py
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-16-b616eb16a612> in <module>
----> 1 print(nlp(test_txt_1))

10 frames
/usr/local/lib/python3.8/dist-packages/transformers/models/bert/modeling_bert.py in forward(self, input_ids, token_type_ids, position_ids, inputs_embeds, past_key_values_length)
    235         if self.position_embedding_type == "absolute":
    236             position_embeddings = self.position_embeddings(position_ids)
--> 237             embeddings += position_embeddings
    238         embeddings = self.LayerNorm(embeddings)
    239         embeddings = self.dropout(embeddings)

RuntimeError: The size of tensor a (955) must match the size of tensor b (512) at non-singleton dimension 1
```

## やってみて思ったこと
- 使用したモデルに文字数制限（512文字）があったなんて…実際に何かに使用したいなら、こういう点も考慮せなアカンのですねえ…
    - どういう意図で使うかによって、出力される「結果の内容（充実度）」「結果の精度」「速度」「メモリ使用量」などなどを検討し一番意図に近いものを使用、とかになるのかな？

# :heart_eyes:感情分析してみた②
（たしか）参考にしたURL：

https://jupyterbook.hnishi.com/language-models/easy_try_sentiment_analysis.html

　ということで、別の既存モデルを探して使用してみました。

```python:analysis1-0.py
%%capture capt

# MeCabのインストール
!apt install mecab libmecab-dev mecab-ipadic-utf8
!pip install mecab-python3

# mecab-ipadic-NEologdのインストール
!apt install git make curl xz-utils file
!git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
!echo yes | mecab-ipadic-neologd/bin/install-mecab-ipadic-neologd -n -a

# Ref: https://qiita.com/Fulltea/items/90f6ebe6dcceaf64eaef
# Ref: https://qiita.com/SUZUKI_Masaya/items/685000d569452585210c

!ln -s /etc/mecabrc /usr/local/etc/mecabrc
# Ref: https://qiita.com/Naritoshi/items/8f55d7d5cce9ce414395

# 感情分析のためのライブラリ
!pip install -q asari oseti pymlask
# asari==0.0.4 requires Janome==0.3.7
# see https://github.com/Hironsan/asari/issues/9#issuecomment-695706645
!pip install Janome==0.3.7

from asari.api import Sonar
sonar = Sonar()
```
　下準備をして、実施してみましょう。
```python:analysis1-1.py
# ★テストデータ（自動字幕抽出テキスト※精度悪　から漫才部分だけコピペ）
test_txt_10 = 'ウエストランドですよろしくお願いします,ありがとうございます,頑張っていきましょういきなりなんです,けどねあのあるなしクイズってあるでしょ,あありましたねお茶にはあるけどコーヒー,にはない,赤ちゃんにはあるけど子供にはないお城に,あるけど,オチにはない正解はある方には全部色が,入ってるじゃあ赤白ありましたねこういう,のねあれのオリジナル作ったんですよ,クイズ得意なんでちょっと出してみて,くださいじゃあまず1個目がねアクション,映画にはあるけど恋愛映画にはない,アクション映画にはあるけど,恋愛映画にはないはいわかりましたから,別に1個目で分かったんだから1個目でも,わかったからじゃあどうぞ,正解はパターンなんでですかアクション,映画いろんなパターンあるけど恋愛映画,全部一緒だから正解はパターンだろう,違いますあの恋愛映画にもパターンあるよ,恋愛映画全部一緒だよ,冴えない女の子がひょんなことから王子様,系の男子と知り合いいい感じになるもん,イケイケの女子の恋敵現れそっちに取られ,そうになるか結局自分が選ばれたやった,これ負けるだろうが,全部一緒だからあとは重い病気になるやつ,だけ,感動したな悲しいだけだよ,全部人だからだから正解はパターンだろと,か違うパターン,違ういやパターン,違うパターン,違う,展開いい,違う違う,違うよでも次行ってくれ次,YouTuberにはあるけどタレントに,はない,YouTuberにはあるけど,タレントにはないはいわかりましたじゃあ,やっぱり具材,結局うざいそんなことないさすがにうざい,違いますなんか出てきた時はいけつかない,連中だなみたいになって数年経ってこれは,これで認めなきゃなみたいな風潮はある,けどやっぱりうざい,さすがに見てられない,再生数に取り付けておかしくなってる,でしょ,そんなことないなんか若くして体験をやっ,てるからまともではないそれが明るみに出,始めている,警察に捕まり始めて,警察に捕まり始めている,警察に捕まり始めている,金の盾を持ってください,全員警察に捕まるよ,スポーツ観戦にはあるけどお笑い観覧には,ないはいこれは本当に分かりました,正解は分析なぜならスポーツは分析するの,も楽しいけどお笑いに分析が必要ないから,正解は分析,残念違いますそうかネタの分析とかして,くるとかいるかー,やめてくれーやめてくれー,現在進行形やめてくれー,言ってくんだから島なんかネタの中,アドバイスこっち行ってください全部,間違えたのに買い物拳と違いの開幕戦闘,[拍手],違い違います全部開幕戦闘違うそうだろう,そのくせで芸人裏側ばっかり好みやがって,芸人誰でも知ってるようなテクニックを誰,かがラジオとかでプロと言ったら過剰に,驚くんだからああすごいそんなに考えたん,だ,ろう,[拍手],路上ミュージシャンにはあるけど迷惑全部,ね,町の迷惑もなさすがに迷惑人の曲を,我が物顔で歌うやつ,許可を置いてないから連れて行かれてるあ,警察に捕まる初めてだ,警察に捕まり始めているのか,違うのもうもう,正解はもっとどうでもいいんだよもっと,待ってくるわあの,もっと船を持っている間なんだ若いのに,なぜか高級なお寿司ばっかりインスタに,載せてる謎の女子か,ゲームだけの知識でサッカー語ってる大学,生かなんかサウナに言ってるのにやたら,セクシーな水着で入ってる謎のグラビア,アイドルがそういうのはそういうのもっと,ワードくれ,悪口言いたいだけでしょ,正解どうもありがとうございました'

print(sonar.ping(text=test_txt_10))
```
　結果が出ました！ウエストランドの「ディスりまくりの"あるなしクイズ"」…『悪口漫才』の結果は…
```text:M1-2022_ウエストランド_1.txt
{'text': 'ウエストランドですよろしくお願いします,ありがとうございます,頑張っていきましょういきなりなんです,けどねあのあるなしクイズってあるでしょ,あありましたねお茶にはあるけどコーヒー,にはない,赤ちゃんにはあるけど子供にはないお城に,あるけど,オチにはない正解はある方には全部色が,入ってるじゃあ赤白ありましたねこういう,のねあれのオリジナル作ったんですよ,クイズ得意なんでちょっと出してみて,くださいじゃあまず1個目がねアクション,映画にはあるけど恋愛映画にはない,アクション映画にはあるけど,恋愛映画にはないはいわかりましたから,別に1個目で分かったんだから1個目でも,わかったからじゃあどうぞ,正解はパターンなんでですかアクション,映画いろんなパターンあるけど恋愛映画,全部一緒だから正解はパターンだろう,違いますあの恋愛映画にもパターンあるよ,恋愛映画全部一緒だよ,冴えない女の子がひょんなことから王子様,系の男子と知り合いいい感じになるもん,イケイケの女子の恋敵現れそっちに取られ,そうになるか結局自分が選ばれたやった,これ負けるだろうが,全部一緒だからあとは重い病気になるやつ,だけ,感動したな悲しいだけだよ,全部人だからだから正解はパターンだろと,か違うパターン,違ういやパターン,違うパターン,違う,展開いい,違う違う,違うよでも次行ってくれ次,YouTuberにはあるけどタレントに,はない,YouTuberにはあるけど,タレントにはないはいわかりましたじゃあ,やっぱり具材,結局うざいそんなことないさすがにうざい,違いますなんか出てきた時はいけつかない,連中だなみたいになって数年経ってこれは,これで認めなきゃなみたいな風潮はある,けどやっぱりうざい,さすがに見てられない,再生数に取り付けておかしくなってる,でしょ,そんなことないなんか若くして体験をやっ,てるからまともではないそれが明るみに出,始めている,警察に捕まり始めて,警察に捕まり始めている,警察に捕まり始めている,金の盾を持ってください,全員警察に捕まるよ,スポーツ観戦にはあるけどお笑い観覧には,ないはいこれは本当に分かりました,正解は分析なぜならスポーツは分析するの,も楽しいけどお笑いに分析が必要ないから,正解は分析,残念違いますそうかネタの分析とかして,くるとかいるかー,やめてくれーやめてくれー,現在進行形やめてくれー,言ってくんだから島なんかネタの中,アドバイスこっち行ってください全部,間違えたのに買い物拳と違いの開幕戦闘,[拍手],違い違います全部開幕戦闘違うそうだろう,そのくせで芸人裏側ばっかり好みやがって,芸人誰でも知ってるようなテクニックを誰,かがラジオとかでプロと言ったら過剰に,驚くんだからああすごいそんなに考えたん,だ,ろう,[拍手],路上ミュージシャンにはあるけど迷惑全部,ね,町の迷惑もなさすがに迷惑人の曲を,我が物顔で歌うやつ,許可を置いてないから連れて行かれてるあ,警察に捕まる初めてだ,警察に捕まり始めているのか,違うのもうもう,正解はもっとどうでもいいんだよもっと,待ってくるわあの,もっと船を持っている間なんだ若いのに,なぜか高級なお寿司ばっかりインスタに,載せてる謎の女子か,ゲームだけの知識でサッカー語ってる大学,生かなんかサウナに言ってるのにやたら,セクシーな水着で入ってる謎のグラビア,アイドルがそういうのはそういうのもっと,ワードくれ,悪口言いたいだけでしょ,正解どうもありがとうございました', 'top_class': 'positive', 'classes': [{'class_name': 'negative', 'confidence': 0.35110044479370117}, {'class_name': 'positive', 'confidence': 0.6488995552062988}]}
```
ポジティブだ！

　他コンビの漫才も全部、自動字幕を抽出→感情分析し、さらに順位順に並べたところ…（※下記表の項目「簡単に比率に」は超簡単に四捨五入しています）
| コンビ名 | 要約 | 結果 | ネガティブ値 | ポジティブ値 | 簡単に比率に |
|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:|
| さや香 | 34歳になって老いを感じるから免許返納した | negative | 0.6057444811 | 0.3942555189 | 6:4 |
| ロングコートダディ | マラソンの世界大会はすごい！再現してみた | positive | 0.00691605825 | 0.9930839539 | 0:10 |
| ウエストランド | ディスりまくりの「あるなしクイズ」 | positive | 0.3511004448 | 0.6488995552 | 4:6 |
| 男性ブランコ | いろいろな「音符」運搬の仕方 | positive | 0.3362358809 | 0.6637641191 | 3:7 |
| 真空ジェシカ | シルバー人材センターに行ってみた | positive | 0.1672959775 | 0.832703948 | 2:8 |
| ヨネダ2000 | イギリスでリズムに乗りながら餅をついて一儲けする | positive | 0.01868730783 | 0.9813126326 | 0:10 |
| オズワルド | 明晰夢を好きなときに見れるようになった | negative | 0.8821269274 | 0.1178731173 | 9:1 |
| カベポスター | 大声大会…テーマ「大好きなもの」「欲しいもの」「しりとり」 | positive | 0.01417930145 | 0.9858206511 | 0:10 |
| キュウ | 世の中のモノの全然違う点を探していたら共通点を見つけてしまった件 | negative | 0.9983966947 | 0.001603340497 | 10:0 |
| ダイヤモンド | 「男女兼用車両」「有銭飲食」をはじめとした「変な言い方」 | negative | 0.550978601 | 0.449021399 | 6:4 |

- 1位・さや香は6割ネガティブ！⇒「ポジティブな内容→上位に食い込める」わけではなさそう
- 下位にネガティブ多め⇒「ネガティブワード多めな漫才はリスキー」かも？
- 1位・さや香は6割ネガティブ＋下位のネガティブは極端な場合も⇒ネガティブに寄りすぎるのはやはりリスキー？

## やってみて思ったこと
- 出てきた結果をどう扱うか？活かすか？が、むずかしくかんじました　じしんのけいけんちのひくさをかんじます
- 参考にしたURLでは、文章をさらに区切って分析させ、どの一文がよりポジティブorネガティブなのかを探っていました。ちゃんとした文章だったら、一文や章で区切って分けて実施しても面白そう。

# ここまでの感想
　ということで、ひたすら手を動かして結果を出してみました。出てきた結果からもっと考察してみたかったのですがなかなか下手で…どう扱うのが良いんでしょうねえ:thinking:
　 **感情分析の方法だけでなく、結果の扱い方も勉強していくとより充実するんだろうな** 、ということを痛感しました。知りたいことがたくさんあるなあ。

# 次にやってみること
　**M1グランプリ2022（以下M1-2022）のウエストランドのネタ、1つ目・2つ目をより詳しく感情分析してみました** 。

# :two_men_holding_hands:まずはテストデータをよりきれいに…※人力
　せっかくなので、この前Youtubeから抽出した自動字幕の内容を、耳で聞いて修正しました。たいへんだった…
　※結構頑張って書き起こしたので、ご興味ありましたら趣味の範囲でご自由にお使いください！

```python:testdate.py
test1_10 = 'どうもウエストランドです。よろしくお願いします。ああ、ありがとうございます。頑張っていきましょう。はい！いきなりなんですけどね、あの、「あるなしクイズ」ってあるでしょ？ああ、ありましたね。「お茶にはあるけど、コーヒーにはない」「赤ちゃんにはあるけど、子供にはない」「お城にあるけど、お家にはない」。正解は、「ある」方には全部「色」が入ってる。じゃあ「赤白」。ありましたね、こういうのね。そうそう。あれのオリジナル、作ったんですよ。やります？まぁ、クイズ得意なんで。ちょっと出してみてください。じゃあまず1個目がね、「アクション映画にはあるけど、恋愛映画にはない」。「アクション映画にはあるけど、恋愛映画にはない」？はい、わかりました。まあ、まあ、まあ。まだ1個目なんだから。1個目でも分かったから。別にいいでしょ？1個目で分かったんだから。1個目でも分かったからいいでしょ別に。じゃあ、じゃあどうぞ。正解は「パターン」！なんでですか？アクション映画はいろんなパターンがあるけど、恋愛映画は全部一緒だから、正解は「パターン」だろう。ああ、違います。あの、恋愛映画にもパターンあるよ。んー、無いよ。恋愛映画、全部一緒だよ。冴えない女の子が、ひょんなことから王子様系の男子と知り合い、良い感じになるも、イケイケの女子の恋敵が現れ、そっちに取られそうになるが、結局自分が選ばれた。「やったー！」こればっかりだろうが！全部一緒だから！あとは重い病気になるやつだけ！「感動したな～」悲しいだけだよ、あんなの！全部一緒だから！だから、正解は「パターン」だろ！いや、だから違う。パターン！違う。いいや、パターン！「いいや」ってことはない。違う。「パターン」！「違う」って言ってる。「展開」！言い方じゃない。違う。違うの？違うよ。ああ、じゃあ、次、行ってくれ。次！じゃあ、「YouTuberにはあるけど、タレントにはない」。「YouTuberにはあるけど、タレントにはない」？はい、わかりました！じゃあ、どうぞ。「やっぱりウザい」。「結局ウザい」！そんなことない。「さすがにウザい」！違います。なんか出てきた時は「いけつかない連中だな～」みたいになって、数年経って「これはこれで認めなきゃな～」みたいな風潮あるけど、やっぱりウザい！そんなことない。さすがに見てられない。そんなことない。再生数に取りつかれて、おかしくなってる。そんなことないよ。そうなの？そんなことない。なんか若くして大金を得ているから、まともではない。そんなことない。それが明るみに出始めている。警察に捕まり始めている…あっ、警察に捕まり始めている！「警察に捕まり始めている」！金の盾を持ってる奴は、いずれ全員警察に捕まる！そんなことないよ。「警察に捕まり始めている」！「違う」って言ってる。違うの？違うよ！違うの？じゃあ次言ってくれ、次。じゃあ、「スポーツ観戦にはあるけどお笑い観覧にはない」。はい、これは本当に分かりました。ああ、じゃあ、どうぞ。正解は「分析」！なぜなら、スポーツは分析するのも楽しいけど、お笑いに分析は必要ないから。正解は「分析」。ああ、残念。違います。そうか、ネタの分析とかしてくるウゼぇお笑いファンとかいるか。やめてくれー。やめてくれー！おーい！現在進行形、やめてくれー！言ってくんだから！終いなんかネタのなんか、アドバイスなんか、こっちしてくるんだから。全部間違えてんのに。皆目見当違いの…皆目見当違い！「皆目見当違い」！違います。全部、皆目見当違い！違います。そうだろ。そのくせで芸人の裏側ばっかり好みやがって！芸人誰でも知ってるようなテクニックを誰かがラジオとかでポロッと言ったら、過剰に驚くんだから。「あっああ～、すごい！そんなに考えてたんだ！あっああ～！ああ～！」だろ。「あっあっああ～！」か。「あっああ～！」だろ。「ああ～佐久間さ～ん！」だろ？「佐久間さん、すごい。こんなに考えてたんだ～！」が答えだろ。「皆目見当違い」！「違う」って言ってる。違うの？違うよ。じゃあ、次言ってくれ。次。「路上ミュージシャンにはあるけど」…はい「迷惑」！全部言ってない。町の迷惑もの。違います。さすがに迷惑。違う。人の曲を我が物顔で歌う痛いやつ！そんなことない。許可を得てないから、連れて行かれてる…あ、「警察に捕まり始めている」！違います。「警察に捕まり始めている」だろ！違う。「警察に捕まり始めている」。それだろうが！「違う」って言ってる。違うの？うん。もうもう、あの、正解は、正解なんて、もうどうでもいいんだよ！もっとワードくれよ、ワード！もっとくれよ、もっといろいろ！なんだ？若いのに、なぜか高級なお寿司ばっかりインスタに載せる謎の女子か？ゲームだけの知識でサッカー語ってる大学生か？なんかサウナに行ってるのに、やたらセクシーな水着で、入ってる、謎の、グラビアアイドルか？そういうのだよ、そういうの。もっとワードくれ！悪口言いたいだけでしょ。正解！どうもありがとうございました。'
test2_10 = 'どうもー。改めまして、ウエストランドです。よろしくお願いします。ありがとうございます。頑張っていきましょう。オリジナルのね、「あるなしクイズ」考えたんですよ。やります？ああ、たまたま大好きなんで。そうですか。ちょっと出してもらっていいですか、はい。まずね、「アイドルにはあるけど、役者にはない」。「アイドルにはあるけど、役者にはない」？はい、わかりました。ま、まだ一個目。一個目でも分かるから！じゃあ、どうぞ。正解は、「向上心」。なんでですか？アイドルは、何としても売れてやるという向上心がすごいから。「他人を蹴落としてでも自分だけは売れてやるんだ」という飽くなき向上心の塊だから。急に「心霊が見える」と言い出してみたり、急に「部屋が汚い」と言い出してみたり、NEXTブレイクぐらいの芸人に近づいて「お笑い分かってます」面してみたり。「なんとしても自分だけは売れる」という向上心がすごいから。正解は「向上心」だろ。違います。いいや、「向上心」。「いいや」ってことはない。「向上心」だろ。違います。だって、そうだろ？「なし」の方の役者なんて、そこらへんの芝居役者、お互いの芝居見に行くだけで何の向上心も無いんだから。一つも成長しねえじゃねえか、あいつら。「うん、演出が悪いな」とか「脚本が悪いな」とか言って、何にも成長しないんだから。「前売り5500円」たけーよ。高いから。毎回毎回、知らない奴がいっぱい乗ってる裏表紙。いらないんで、あれ。正解「向上心」だろ。違う。「向上心」。違います。違うの？違うよ。じゃあもう、次、行って。次。えー、「田舎にはあるけど、都会にはない」。「田舎にはあるけど、都会にはない」？はい、わかりました。じゃあ、どうぞ。えー、「引け目」。「いくら田舎で成功しても、どうせ都会では通用しないもんな」の引け目を常に感じているから。正解は「引け目」だろう。違いますし、そんなことないよ。いいや「引け目」だよ。違います。「引け目」だろ。違います。いいや、「引け目」だろ。じゃあ、アイドルにも引け目はあるの？アイドルは引け目感じてるに決まってるだろ。引け目の塊だろ。年齢から何から嘘ついてんだから。引け目だろ、「引け目」。違う。「虚無感」。「虚無感」？「田舎だもんな」の「虚無感」。「ここで活躍しても、田舎だもんな」の「虚無感」。そんなことない。違うの？違います。じゃあ、もう次言って、次。「歌にはあるけど、コントにはない」。はい、これ分かりました。じゃあ、どうぞ。正解は「メッセージ性」。なぜなら歌にはメッセージが必要だけど、お笑いにはメッセージ性とか必要ないから、正解は「メッセージ性」。ああ、残念、違います。そうか、ネタにメッセージを込めてくるウザいコント師とかいるかー。やめてくれー。単独ライブの最後の20分長尺コント、やめてくれー。いらねー。ほっこり終わり、やめてー。友情ほっこり終わり、やめてくれー、見てらんないから。なんか、文章のタイトルにするの、やめてくれ。単独ライブのタイトル不条理な文章をするの…「晴天なのに傘」やめてくれー。やめてくれ、お笑いライブで。なんかフライヤー…ポスターのこと、チラシを「フライヤー」と呼び、なんかそれも、なんか不条理するやつ。「瓦礫の前でパジャマ」やめてくれー。不条理な…フライヤー！「不条理なフライヤー」！答え？そう、「不条理なフライヤー」。そんなわけないでしょ。違うの？違うよ。そうなの？じゃあ次言ってくれ、次。「M1にはあるけど、R1にはない」。はい、「夢」。そんなことない。「夢」。希望、「希望」。「大会の価値」。「大会の規模」。いやいや、そうだろ？M1は決勝行くだけで人生変わるけど、R1は何も変わんないから。「夢」。そんなことない。「夢」。「希望」。どうしちゃったの？そうだろ？当てる気ないでしょ。当てる気あるよ、そんなの。自分の気持ち言ってません？自分の気持ちじゃない。クイズに正解したいだけだから。次、言ってくれ。次。じゃあ「大阪にはあるけど、東京にはない」。はい、「『自分たちのお笑いが正義だ』という凝り固まった考え」。それをなんか、すごいすげてくるあの感じ。なんか、自虐ネタばっかり言うクセに、こっちが言ったらブチ切れるあの感じ。なんか、ずっと、「え、エスカレーターそっちに並びまんの？」ずっと言う、あの感じだろうが、それだろうが！結局どれなの？ウザい！R1も全部ウザい！M1も？M1もウザい！「アナザーストーリー」がウザい！いらないんだよ。泣きながらお母さんに電話するな。「優勝したよう」じゃないんで。どうでもいい、あんなの！見てらんないから。ある方も無い方も、両方「ウザい」。「あるなしクイズ」にならないじゃないですか。じゃあ正解、何なんだよ。正解の頭文字全部並べると、「あいうえお」になってるっていうね。おぉ…クソつまんねえじゃねえかよ。もういいよ。どうも、ありがとうございます。'
```

# :chart_with_upwards_trend:ネタを1本、そのまま感情分析してみた

| 概要 | 結果 | ネガティブ値 | ポジティブ値 | 簡単に比率に |
|:--|:--:|:--:|:--:|:--:|
| 1つ目のネタ→3位で通過 | positive | 0.4517422616 | 0.5482577085 | 5:5 |
| 2つ目のネタ→優勝 | negative | 0.8359593153 | 0.1640406847 | 8:2 |

- 前回の記事にて、ウエストランドの1つ目のネタを、Youtubeの自動字幕そのままで感情分析させたのですが…その際の結果はポジティブ（ネガティブ値：0.3511004448、ポジティブ値：0.6488995552）でした。結果がめちゃくちゃ変わる、というわけでは無かったようで…いや10%くらい変わったのでこれはやって良かったのかも。
- 2つ目のネタはだいぶネガティブに寄りましたね！でもウケて優勝しているので…もっと分析したら何か分かったりするかも？

# :scissors:ネタを章に分けて感情分析してみた
　前回の記事で少しだけ触れたのですが、参考記事によっては「文章を（章や文という単位に）区切って分析させ、どの箇所がよりポジティブorネガティブなのかを探るのも良いかも」と書いてあったり。やってみます。

　区切り方は人力でやったので省略…結果は下記。
## ▼1つ目のネタ
| 章 | 章の要約 | 結果 | ネガティブ値 | ポジティブ値 | 簡単に比率に |
|:--:|:--|:--:|:--:|:--:|:--:|
| 0 | はじめに…「あるなしクイズ」って知ってる？ | positive | 0.003776478814 | 0.9962235689 | 0:10 |
| 1 | 「アクション映画にはあるけど、恋愛映画にはない」 | positive | 0.2589473128 | 0.7410526872 | 3:7 |
| 2 | 「YouTuberにはあるけど、タレントにはない」 | negative | 0.668233037 | 0.3317669332 | 7:3 |
| 3 | 「スポーツ観戦にはあるけどお笑い観覧にはない」 | positive | 0.4822582304 | 0.5177417994 | 5:5 |
| 4 | 「路上ミュージシャンにはあるけど」… | positive | 0.3834456801 | 0.6165543199 | 4:6 |
| 5 | 正解なんてどうでもいい！悪口言いたいだけ！…おわり | negative | 0.6772055626 | 0.3227944076 | 7:3 |

- 導入部分を0章としてみました。
- 0章はどれも超ポジティブ⇒0章は漫才師からお客様への「挨拶」や「（拍手への）お礼」がメインなので、ポジティブに寄りがちなのでは～と思います。

⇒ということで、0章は除いてグラフに落とし込んだところ…
![要マスキング_M1_1.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/739756/8b7f0b54-d759-b154-5f7e-64223827e8a8.jpeg)
　ポジティブに寄ったりネガティブに寄ったり、という波ができていることが見て分かります。内容的にはディスり漫才かもしれませんが、その **ディスりの中にもネガポジがあり、かつネガポジの割合が変化していっている…？** 

## ▼2つ目のネタ
| 章 | 章の要約 | 結果 | ネガティブ値 | ポジティブ値 | 簡単に比率に |
|:--:|:--|:--:|:--:|:--:|:--:|
| 0 | はじめに…オリジナルの「あるなしクイズ」、考えました | positive | 0.0001151561737 | 0.9998849034 | 0:10 |
| 1 | 「アイドルにはあって、役者には無い」 | negative | 0.5598204732 | 0.4401795864 | 6:4 |
| 2 | 「田舎にはあるけど、都会にはない」 | positive | 0.2663381696 | 0.7336618304 | 3:7 |
| 3 | 「歌にはあるけど、コントにはない」 | negative | 0.9929124713 | 0.007087546401 | 10:0 |
| 4 | 「M1にはあるけど、R1にはない」 | negative | 0.7001956701 | 0.2998043597 | 7:3 |
| 5 | 結局正解はなんなの？…おわり | positive | 0.2815497518 | 0.7184502482 | 3:7 |

- 導入部分を0章としてみました。
- 0章はどれも超ポジティブ⇒0章は漫才師からお客様への「挨拶」や「（拍手への）お礼」がメインなので、ポジティブに寄りがちなのでは～と思います。

⇒ということで、0章は除いてグラフに落とし込んだところ…
![要マスキング_M1_2.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/739756/8782ac01-00b3-257e-9fd0-2ec518df07d8.jpeg)
　 **1つ目のネタよりもネガポジの波が激しい！** 

　ここで、「1つ目のネタと2つ目のネタ、"あるなしクイズを通して自分の気に入らないモノ・コトをディスる"という大筋は変わらないので、この2つのネタを1つのネタとしてみたらどうなる？」と思い当たり…0章を除いて→1つ目・2つ目のネタを繋いだところ…↓

## 1つ目・2つ目をつなげて、一つの漫才として見てみると…
　はじめからグラフにしました↓
![要マスキング_M1_3.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/739756/1fdfddca-f844-d123-3efb-d3ba5131ef2e.jpeg)
5章が1つ目のネタの最終章、6章が1つ目のネタの1章目です。
おおお、後半も波がある上に、その波が激しい！
- 1つ目と2つ目のネタが、わりと自然につながりました。
- 最初と最後のポジティブ値が近いのも興味深いです。
- 前半（1つ目のネタ）は肩慣らし、後半（2つ目のネタ）で本領発揮…と見えなくもない？
    - 前半でお客様にディスりネタに慣れてもらいつつ、慣れてきたところ（後半）でより波の激しい内容にすることで笑いをより多く取る、的な…

# おわりに
　「感情分析モデルからの出力結果をどう分析するのが良いか」が結構難しかったです。が、初心者なりに気づけたことがあって面白かったな～とも思っています。ウエストランドの今回の漫才、それぞれポジティブ・ネガティブに行ったり来たりしていますが、その波が2つ目の漫才の方がより激しい！というのはかなり気づきなのではと思います。
　個人的に音楽鑑賞が好きなので、好きな歌の歌詞とかでも感情分析してみたいな～と改めて思ったり。

## 気づき
- 既に存在するモデルでサクッと感情分析が可能。
- インプットの制限やアウトプットされるものはそれぞれ異なる。
    - どのモデルを使用するかは「どんな文章を分析したいか」「結果として欲しいパラメータ」で検討しても良いかも
- 感情分析においても、インプットの文章に工夫をすることでより詳細な分析が可能になったりする。
    - 文を章で分ける、とか（これで新たに見えることがあったので面白かったです）

## もっとチャレンジしても良いかも
- モデルによっては「文章の中で一番ポジティブ（orネガティブ）な単語」を出力してくれるので、そのモデルを使用して結果を眺めるのも面白そう。
- インプットの文章に関して…「章に分ける」より細かく、例えば「話し手が変わるタイミング」で区切って投げてみたりすることでどのような結果が見られるのだろう？
    - 話し手（ツッコミ役orボケ役）でネガポジの偏りがあったりするかもしれませんね。チャレンジしてみても良かったかも