Pythonを使った「高得点が取れる漫才」の作り方👏
こちらのnoteでM-1で高得点が取れる勝ちパターンを分析してみました。
で、分析にはエモーショナルアークという分析手法を用いて、「漫才の盛り上がり度」をグラフ化してみました。
その作り方です。
※エモーショナルアークについては↓ご参照
作るのはとても簡単
0、まずPythonで分析できる環境を作る
1、漫才のかけ合いのテキストをPythonに読み込む
2、かけ合い一つ一つに感情分析(ポジネガ分析)をする
3、グラフにする
0、まずPythonで分析できる環境を作る
☀️「Jupyter Notebook」の準備
環境はなんでも問題ありませんが、おすすめは「Jupyter Notebook」。
以下の流れで用意してください。
※本noteは「Jupyter notebook」での使用を前提にしてます。
・「Anaconda」をインストールして、
・「Jupyter notebook」を立ち上げます。
とても簡単ですが、迷ったときはコチラ
☀️感情分析用のモジュールをインストール
以下の流れで「ターミナル(黒いやつ)」を立ち上げて、
githubにあがっている、コチラの日本人の方が作ったものをインストールして使います。
pip install asari
1、漫才のかけ合いのテキストをPythonに読み込む
☀️分析したい漫才の文字起こしのテキストファイルを用意します
例えば、コチラをドラッグして、テキストファイルにコピペ。
こんな感じです。
↓
無駄な改行などは消しておくと良いです。
☀️テキストファイルを取り込みます
f = open('16_銀シャリ.txt')
gin = f.readlines()
f.close()
☀️後で加工しやすいように、テキストをデータフレームにします
#pandasのインポート
import pandas as pd
#空のデータフレームを作って、
gin_df = pd.DataFrame(columns=["text"])
#textの列に入れる
gin_df.text = gin
☀️"\n"とか"鰻「"とかの不要な文字列を消します
#消したいワードをリストにして用意
delete_words = ["\n","橋「","鰻「","」"]
#各行ごとに、消したいワードを消す
for delete_word in delete_words:
gin_df.text = gin_df.text.map(lambda x : x.replace(delete_word,""))
下ごしらえはこれでOK
2、かけ合い一つ一つに感情分析(ポジネガ分析)をする
☀️感情分析のライブラリをインポートして、
#インポート
#https://github.com/Hironsan/asari)
import asari
from asari.api import Sonar
☀️コマンドを定義しておきます
#インスタンスを作る
sonar = Sonar()
#テキストにポジティブな感情がどのくらいあるか
def get_positive_power(text):
info = sonar.ping(text= text)
posi_vector = info["classes"][1]["confidence"]
return posi_vector
##テキストにネガティブな感情がどのくらいあるか
def get_negative_power(text):
info = sonar.ping(text= text)
nega_vector = info["classes"][0]["confidence"]
return nega_vector
#ポジティブかネガティブかどっちか
def which_sentiment(text):
info = sonar.ping(text= text)
sentiment = info["top_class"]
return sentiment
これでテキストのポジネガ判定や感情スコアを出すことが出来ます
※引用した全ての画像の著作権は荒木飛呂彦氏に帰属します。
※著作権法32条(引用)に則って掲示させていただいております。
例えば、
さすがディオ!おれたちにできない事を平然とやってのけるッ
そこにシビれる! あこがれるゥ!
→positive
#テキストにポジティブな感情がどのくらいあるか
get_positive_power("さすがディオ!おれたちにできない事を平然とやってのけるッ そこにシビれる! あこがれるゥ!")
#テキストにネガティブな感情がどのくらいあるか
get_negative_power("さすがディオ!おれたちにできない事を平然とやってのけるッ そこにシビれる! あこがれるゥ!")
#ポジティブかネガティブかどっちか
which_sentiment("さすがディオ!おれたちにできない事を平然とやってのけるッ そこにシビれる! あこがれるゥ!")
一方で、
君がッ 泣くまで 殴るのをやめないッ!
→negative
#テキストにポジティブな感情がどのくらいあるか
get_positive_power("君がッ 泣くまで 殴るのをやめないッ!")
#テキストにネガティブな感情がどのくらいあるか
get_negative_power("君がッ 泣くまで 殴るのをやめないッ!")
#ポジティブかネガティブかどっちか
which_sentiment("君がッ 泣くまで 殴るのをやめないッ!")
貴重なお時間で読んでいただいてありがとうございます。 感謝の気持ちで、いっPython💕