はじめに
先日COTOHA APIを触ってみたので、その流れでやったのがこちらになります。
COTOHA APIについてや、導入などについては先日投稿した記事を見てみてください。
やったこと
COTOHA APIを使用して、メロスのネガティブな部分を粛清します。
1.青空文庫のgitをcloneして走れメロスを見つける
$ git clone git@github.com:aozorabunko/aozorabunko.git
- 走れメロスの本文をテキストファイルにコピー
2.走れメロスの文章を整形
- 句読点ごとに文章を分割
- 「」など不要な記号を除去
3.一文毎に感情分析を行い、ネガティブ判定されたものを除去
コードは長いので折りたたんであります
import requests
import json
import sys
import time
BASE_URL = "https://api.ce-cotoha.com/api/dev/nlp/"
CLIENT_ID = "" # 発行されたIDを入力
CLIENT_SECRET = "" # 発行されたsecretを入力
# アクセストークンを取得
def auth(client_id, client_secret):
token_url = "https://api.ce-cotoha.com/v1/oauth/accesstokens"
headers = {
"Content-Type": "application/json",
"charset": "UTF-8"
}
data = {
"grantType": "client_credentials",
"clientId": client_id,
"clientSecret": client_secret
}
r = requests.post(token_url,
headers=headers,
data=json.dumps(data))
return r.json()["access_token"]
# 感情分析apiを呼び出し
def sentiment(sentence, access_token):
base_url = BASE_URL
headers = {
"Content-Type": "application/json",
"charset": "UTF-8",
"Authorization": "Bearer {}".format(access_token)
}
data = {
"sentence": sentence
}
r = requests.post(base_url + "v1/sentiment",
headers=headers,
data=json.dumps(data))
return r.json()
if __name__ == "__main__":
document = "メロスは激怒した。"
args = sys.argv
if len(args) >= 2:
document = str(args[1])
access_token = auth(CLIENT_ID, CLIENT_SECRET)
# 解析可能な文に整形(句読点で切り分け、記号除去など)
sentences = splitwords(document)
f = open('opt.txt', 'w')
for sentence in sentences:
if not sentence:
continue
res = sentiment(sentence, access_token)
print(res)
if res['result']['sentiment'] == 'Negative':
continue
f.write(sentence + "\n")
f.close()
print("deleted negative melos")
結果
開始から数文を抜粋します。
メロスは激怒した
必ず、かの邪智暴虐の王を除かなければならぬと決意した
メロスには政治がわからぬ
メロスは、村の牧人である
笛を吹き、羊と遊んで暮して来た
必ず、かの邪智暴虐の王を除かなければならぬと決意した
メロスは、村の牧人である
笛を吹き、羊と遊んで暮して来た
メロスが激怒しなくなっており、政治がわかるようになりました。
$ python melos.py melos.txt
{'result': {'sentiment': 'Negative', 'score': 0.7040895800341446, 'emotional_phrase': [{'form': '激怒した', 'emotion': 'N'}]}, 'status': 0, 'message': 'OK'}
{'result': {'sentiment': 'Neutral', 'score': 0.34207414196325664, 'emotional_phrase': []}, 'status': 0, 'message': 'OK'}
{'result': {'sentiment': 'Negative', 'score': 0.33534926492915057, 'emotional_phrase': [{'form': 'わからぬ', 'emotion': 'N'}]}, 'status': 0, 'message': 'OK'}
{'result': {'sentiment': 'Neutral', 'score': 0.4202261100237903, 'emotional_phrase': []}, 'status': 0, 'message': 'OK'}
{'result': {'sentiment': 'Neutral', 'score': 0.38977432300637777, 'emotional_phrase': []}, 'status': 0, 'message': 'OK'}
...
実行結果を見ると「激怒した」と「わからぬ」がNegativeの判定になっています。
全文の結果を比較すると元が464行に対して、粛清後は357行になったので107行消え去ったことになります。
粛清後のメロス全文
必ず、かの邪智暴虐の王を除かなければならぬと決意した
メロスは、村の牧人である
笛を吹き、羊と遊んで暮して来た
きょう未明メロスは村を出発し、野を越え山越え、十里はなれた此のシラクスの市にやって来た
メロスには父も、母も無い
女房も無い
十六の、内気な妹と二人暮しだ
この妹は、村の或る律気な一牧人を、近々、花婿として迎える事になっていた
結婚式も間近かなのである
メロスは、それゆえ、花嫁の衣裳やら祝宴の御馳走やらを買いに、はるばる市にやって来たのだ
先ず、その品々を買い集め、それから都の大路をぶらぶら歩いた
メロスには竹馬の友があった
セリヌンティウスである
今は此のシラクスの市で、石工をしている
その友を、これから訪ねてみるつもりなのだ
久しく逢わなかったのだから、訪ねて行くのが楽しみである
歩いているうちにメロスは、まちの様子を怪しく思った
ひっそりしている
路で逢った若い衆をつかまえて、何かあったのか、二年まえに此の市に来たときは、夜でも皆が歌をうたって、まちは賑やかであった筈だが、と質問した
若い衆は、首を振って答えなかった
しばらく歩いて老爺に逢い、こんどはもっと、語勢を強くして質問した
老爺は答えなかった
メロスは両手で老爺のからだをゆすぶって質問を重ねた
王様は、人を殺します
なぜ殺すのだ
悪心を抱いている、というのですが、誰もそんな、悪心を持っては居りませぬ
たくさんの人を殺したのか
はい、はじめは王様の妹婿さまを
それから、御自身のお世嗣を
それから、妹さまを
それから、妹さまの御子さまを
それから、皇后さまを
それから、賢臣のアレキス様を
おどろいた
国王は乱心か
いいえ、乱心ではございませぬ
人を、信ずる事が出来ぬ、というのです
このごろは、臣下の心をも、お疑いになり、少しく派手な暮しをしている者には、人質ひとりずつ差し出すことを命じて居ります
きょうは、六人殺されました
メロスは、単純な男であった
買い物を、背負ったままで、のそのそ王城にはいって行った
たちまち彼は、巡邏の警吏に捕縛された
調べられて、メロスの懐中からは短剣が出て来たので、騒ぎが大きくなってしまった
メロスは、王の前に引き出された
この短刀で何をするつもりであったか
言え!暴君ディオニスは静かに、けれども威厳を以て問いつめた
その王の顔は蒼白で、眉間の皺は、刻み込まれたように深かった
市を暴君の手から救うのだ
おまえがか?王は、憫笑した
仕方の無いやつじゃ
言うな!とメロスは、いきり立って反駁した
疑うのが、正当の心構えなのだと、わしに教えてくれたのは、おまえたちだ
人間は、もともと私慾のかたまりさ
信じては、ならぬ
暴君は落着いて呟き、ほっと溜息をついた
わしだって、平和を望んでいるのだが
なんの為の平和だ
自分の地位を守る為か
罪の無い人を殺して、何が平和だ
だまれ、下賤の者
王は、さっと顔を挙げて報いた
口では、どんな清らかな事でも言える
わしには、人の腹綿の奥底が見え透いてならぬ
おまえだって、いまに、磔になってから、泣いて詫びたって聞かぬぞ
ああ、王は悧巧だ
私は、ちゃんと死ぬる覚悟で居るのに
たった一人の妹に、亭主を持たせてやりたいのです
三日のうちに、私は村で結婚式を挙げさせ、必ず、ここへ帰って来ます
ばかな
と暴君は、嗄れた声で低く笑った
とんでもない嘘を言うわい
逃がした小鳥が帰って来るというのか
そうです
帰って来るのです
私は約束を守ります
私を、三日間だけ許して下さい
妹が、私の帰りを待っているのだ
そんなに私を信じられないならば、よろしい、この市にセリヌンティウスという石工がいます
私の無二の友人だ
あれを、人質としてここに置いて行こう
私が逃げてしまって、三日目の日暮まで、ここに帰って来なかったら、あの友人を絞め殺して下さい
たのむ、そうして下さい
それを聞いて王は、残虐な気持で、そっと北叟笑んだ
どうせ帰って来ないにきまっている
そうして身代りの男を、三日目に殺してやるのも気味がいい
世の中の、正直者とかいう奴輩にうんと見せつけてやりたいものさ
願いを、聞いた
その身代りを呼ぶがよい
三日目には日没までに帰って来い
おくれたら、その身代りを、きっと殺すぞ
ちょっとおくれて来るがいい
おまえの罪は、永遠にゆるしてやろうぞ
なに、何をおっしゃる
はは
いのちが大事だったら、おくれて来い
おまえの心は、わかっているぞ
ものも言いたくなくなった
竹馬の友、セリヌンティウスは、深夜、王城に召された
暴君ディオニスの面前で、佳き友と佳き友は、二年ぶりで相逢うた
メロスは、友に一切の事情を語った
セリヌンティウスは無言で首肯き、メロスをひしと抱きしめた
友と友の間は、それでよかった
セリヌンティウスは、縄打たれた
メロスは、すぐに出発した
初夏、満天の星である
メロスはその夜、一睡もせず十里の路を急ぎに急いで、村へ到着したのは、翌る日の午前、陽は既に高く昇って、村人たちは野に出て仕事をはじめていた
メロスの十六の妹も、きょうは兄の代りに羊群の番をしていた
よろめいて歩いて来る兄の、疲労困憊の姿を見つけて驚いた
なんでも無い
メロスは無理に笑おうと努めた
市に用事を残して来た
またすぐ市に行かなければならぬ
あす、おまえの結婚式を挙げる
早いほうがよかろう
うれしいか
綺麗な衣裳も買って来た
さあ、これから行って、村の人たちに知らせて来い
結婚式は、あすだと
メロスは、また、よろよろと歩き出し、家へ帰って神々の祭壇を飾り、祝宴の席を調え、間もなく床に倒れ伏し、呼吸もせぬくらいの深い眠りに落ちてしまった
眼が覚めたのは夜だった
メロスは起きてすぐ、花婿の家を訪れた
そうして、少し事情があるから、結婚式を明日にしてくれ、と頼んだ
メロスは、待つことは出来ぬ、どうか明日にしてくれ給え、と更に押してたのんだ
婿の牧人も頑強であった
結婚式は、真昼に行われた
新郎新婦の、神々への宣誓が済んだころ、黒雲が空を覆い、ぽつりぽつり雨が降り出し、やがて車軸を流すような大雨となった
メロスも、満面に喜色を湛え、しばらくは、王とのあの約束をさえ忘れていた
祝宴は、夜に入っていよいよ乱れ華やかになり、人々は、外の豪雨を全く気にしなくなった
メロスは、一生このままここにいたい、と思った
この佳い人たちと生涯暮して行きたいと願ったが、いまは、自分のからだで、自分のものでは無い
ままならぬ事である
あすの日没までには、まだ十分の時が在る
ちょっと一眠りして、それからすぐに出発しよう、と考えた
その頃には、雨も小降りになっていよう
今宵呆然、歓喜に酔っているらしい花嫁に近寄り、
おめでとう
眼が覚めたら、すぐに市に出かける
大切な用事があるのだ
私がいなくても、もうおまえには優しい亭主があるのだから、決して寂しい事は無い
おまえも、それは、知っているね
亭主との間に、どんな秘密でも作ってはならぬ
おまえに言いたいのは、それだけだ
おまえの兄は、たぶん偉い男なのだから、おまえもその誇りを持っていろ
花嫁は、夢見心地で首肯いた
メロスは、それから花婿の肩をたたいて、
仕度の無いのはお互さまさ
私の家にも、宝といっては、妹と羊だけだ
他には、何も無い
全部あげよう
もう一つ、メロスの弟になったことを誇ってくれ
メロスは笑って村人たちにも会釈して、宴席から立ち去り、羊小屋にもぐり込んで、死んだように深く眠った
眼が覚めたのは翌る日の薄明の頃である
メロスは跳ね起き、南無三、寝過したか、いや、まだまだ大丈夫、これからすぐに出発すれば、約束の刻限までには十分間に合う
きょうは是非とも、あの王に、人の信実の存するところを見せてやろう
そうして笑って磔の台に上ってやる
メロスは、悠々と身仕度をはじめた
雨も、いくぶん小降りになっている様子である
身仕度は出来た
さて、メロスは、ぶるんと両腕を大きく振って、雨中、矢の如く走り出た
私は、今宵、殺される
殺される為に走るのだ
身代りの友を救う為に走るのだ
王の奸佞邪智を打ち破る為に走るのだ
走らなければならぬ
そうして、私は殺される
若い時から名誉を守れ
さらば、ふるさと
幾度か、立ちどまりそうになった
村を出て、野を横切り、森をくぐり抜け、隣村に着いた頃には、雨も止み、日は高く昇って、そろそろ暑くなって来た
妹たちは、きっと佳い夫婦になるだろう
私には、いま、なんの気がかりも無い筈だ
まっすぐに王城に行き着けば、それでよいのだ
そんなに急ぐ必要も無い
ゆっくり歩こう、と持ちまえの呑気さを取り返し、好きな小歌をいい声で歌い出した
ぶらぶら歩いて二里行き三里行き、そろそろ全里程の半ばに到達した頃、降って湧いた災難、メロスの足は、はたと、とまった
見よ、前方の川を
きのうの豪雨で山の水源地は氾濫し、濁流滔々と下流に集り、猛勢一挙に橋を破壊し、どうどうと響きをあげる激流が、木葉微塵に橋桁を跳ね飛ばしていた
流れはいよいよ、ふくれ上り、海のようになっている
ああ、鎮めたまえ、荒れ狂う流れを! 時は刻々に過ぎて行きます
太陽も既に真昼時です
あれが沈んでしまわぬうちに、王城に行き着くことが出来なかったら、あの佳い友達が、私のために死ぬのです
今はメロスも覚悟した
泳ぎ切るより他に無い
ああ、神々も照覧あれ! 濁流にも負けぬ愛と誠の偉大な力を、いまこそ発揮して見せる
押し流されつつも、見事、対岸の樹木の幹に、すがりつく事が出来たのである
ありがたい
メロスは馬のように大きな胴震いを一つして、すぐにまた先きを急いだ
陽は既に西に傾きかけている
待て
何をするのだ
私は陽の沈まぬうちに王城へ行かなければならぬ
放せ
どっこい放さぬ
持ちもの全部を置いて行け
私にはいのちの他には何も無い
その、たった一つの命も、これから王にくれてやるのだ
その、いのちが欲しいのだ
さては、王の命令で、ここで私を待ち伏せしていたのだな
山賊たちは、ものも言わず一斉に棍棒を振り挙げた
立ち上る事が出来ぬのだ
ああ、あ、濁流を泳ぎ切り、山賊を三人も撃ち倒し韋駄天、ここまで突破して来たメロスよ
真の勇者、メロスよ
愛する友は、おまえを信じたばかりに、やがて殺されなければならぬ
路傍の草原にごろりと寝ころがった
身体疲労すれば、精神も共にやられる
私は、これほど努力したのだ
約束を破る心は、みじんも無かった
神も照覧、私は精一ぱいに努めて来たのだ
動けなくなるまで走って来たのだ
ああ、できる事なら私の胸を截ち割って、真紅の心臓をお目に掛けたい
愛と信実の血液だけで動いているこの心臓を見せてやりたい
けれども私は、この大事な時に、精も根も尽きたのだ
私は、きっと笑われる
私の一家も笑われる
中途で倒れるのは、はじめから何もしないのと同じ事だ
これが、私の定った運命なのかも知れない
セリヌンティウスよ、ゆるしてくれ
君は、いつでも私を信じた
私も君を、欺かなかった
私たちは、本当に佳い友と友であったのだ
いまだって、君は私を無心に待っているだろう
ああ、待っているだろう
ありがとう、セリヌンティウス
よくも私を信じてくれた
友と友の間の信実は、この世で一ばん誇るべき宝なのだからな
セリヌンティウス、私は走ったのだ
信じてくれ! 私は急ぎに急いでここまで来たのだ
濁流を突破した
山賊の囲みからも、するりと抜けて一気に峠を駈け降りて来たのだ
私だから、出来たのだよ
ああ、この上、私に望み給うな
放って置いてくれ
どうでも、いいのだ
だらしが無い
笑ってくれ
王は私に、ちょっとおくれて来い、と耳打ちした
おくれたら、身代りを殺して、私を助けてくれると約束した
けれども、今になってみると、私は王の言うままになっている
私は、おくれて行くだろう
王は、ひとり合点して私を笑い、そうして事も無く私を放免するだろう
私は、永遠に裏切者だ
セリヌンティウスよ、私も死ぬぞ
君だけは私を信じてくれるにちがい無い
村には私の家が在る
羊も居る
正義だの、信実だの、愛だの、考えてみれば、くだらない
人を殺して自分が生きる
それが人間世界の定法ではなかったか
やんぬる哉
――四肢を投げ出して、うとうと、まどろんでしまった
ふと耳に、潺々、水の流れる音が聞えた
すぐ足もとで、水が流れているらしい
よろよろ起き上って、見ると、岩の裂目から滾々と、何か小さく囁きながら清水が湧き出ているのである
その泉に吸い込まれるようにメロスは身をかがめた
水を両手で掬って、一くち飲んだ
歩ける
行こう
肉体の疲労恢復と共に、わずかながら希望が生れた
義務遂行の希望である
わが身を殺して、名誉を守る希望である
日没までには、まだ間がある
私を、待っている人があるのだ
少しも疑わず、静かに期待してくれている人があるのだ
私は、信じられている
私の命なぞは、問題ではない
死んでお詫び、などと気のいい事は言って居られぬ
いまはただその一事だ
走れ! メロス
私は信頼されている
私は信頼されている
先刻の、あの悪魔の囁きは、あれは夢だ
忘れてしまえ
メロス、おまえの恥ではない
やはり、おまえは真の勇者だ
再び立って走れるようになったではないか
ありがたい! 私は、正義の士として死ぬ事が出来るぞ
待ってくれ、ゼウスよ
私は生れた時から正直な男であった
いまごろは、あの男も、磔にかかっているよ
ああ、その男、その男のために私は、いまこんなに走っているのだ
急げ、メロス
おくれてはならぬ
愛と誠の力を、いまこそ知らせてやるがよい
メロスは、いまは、ほとんど全裸体であった
呼吸も出来ず、二度、三度、口から血が噴き出た
見える
はるか向うに小さく、シラクスの市の塔楼が見える
塔楼は、夕陽を受けてきらきら光っている
ああ、メロス様
誰だ
メロスは走りながら尋ねた
フィロストラトスでございます
貴方のお友達セリヌンティウス様の弟子でございます
その若い石工も、メロスの後について走りながら叫んだ
もう、駄目でございます
走るのは、やめて下さい
もう、あの方をお助けになることは出来ません
いや、まだ陽は沈まぬ
ちょうど今、あの方が死刑になるところです
ああ、あなたは遅かった
ほんの少し、もうちょっとでも、早かったなら!
いや、まだ陽は沈まぬ
走るより他は無い
やめて下さい
走るのは、やめて下さい
いまはご自分のお命が大事です
あの方は、あなたを信じて居りました
刑場に引き出されても、平気でいました
それだから、走るのだ
信じられているから走るのだ
間に合う、間に合わぬは問題でないのだ
人の命も問題でないのだ
ついて来い! フィロストラトス
ああ、あなたは気が狂ったか
それでは、うんと走るがいい
ひょっとしたら、間に合わぬものでもない
走るがいい
言うにや及ぶ
まだ陽は沈まぬ
最後の死力を尽して、メロスは走った
メロスの頭は、からっぽだ
間に合った
待て
その人を殺してはならぬ
メロスが帰って来た
約束のとおり、いま、帰って来た
すでに磔の柱が高々と立てられ、縄を打たれたセリヌンティウスは、徐々に釣り上げられてゆく
メロスはそれを目撃して最後の勇、先刻、濁流を泳いだように群衆を掻きわけ、掻きわけ、
私だ、刑吏! 殺されるのは、私だ
メロスだ
彼を人質にした私は、ここにいる!と、かすれた声で精一ぱいに叫びながら、ついに磔台に昇り、釣り上げられてゆく友の両足に、齧りついた
群衆は、どよめいた
あっぱれ
ゆるせ、と口々にわめいた
セリヌンティウスの縄は、ほどかれたのである
セリヌンティウス
私を殴れ
ちから一ぱいに頬を殴れ
君が若し私を殴ってくれなかったら、私は君と抱擁する資格さえ無いのだ
殴れ
セリヌンティウスは、すべてを察した様子で首肯き、刑場一ぱいに鳴り響くほど音高くメロスの右頬を殴った
殴ってから優しく微笑み、
メロス、私を殴れ
同じくらい音高く私の頬を殴れ
メロスは腕に唸りをつけてセリヌンティウスの頬を殴った
ありがとう、友よ
群衆の中からも、歔欷の声が聞えた
おまえらの望みは叶ったぞ
おまえらは、わしの心に勝ったのだ
どうか、わしをも仲間に入れてくれまいか
どうか、わしの願いを聞き入れて、おまえらの仲間の一人にしてほしい
どっと群衆の間に、歓声が起った
万歳、王様万歳
ひとりの少女が、緋のマントをメロスに捧げた
佳き友は、気をきかせて教えてやった
メロス、君は、まっぱだかじゃないか
早くそのマントを着るがいい
参考にさせていただいた記事
オレ プログラム ウゴカス オマエ ゲンシジン ナル
COTOHAを利用して、走れメロスの感情の経過に追走してみた。
おわりに
久しぶりにメロス読みましたがすごく読みやすくて面白かったです。
PythonとCOTOHAを使用してなにかしたいと思いやってみましたが、ほぼAPIを呼ぶだけなのでさくっと作成できました。
粛清後のメロスも読んでみましたが、話の全容は掴めるくらいにまとまっているように感じました。(これはメロスの文体が味方してるかも)
感情分析以外にもCOTOHAには面白そうなAPIが用意されてるので、それも使って遊んでみたいです。