忙しい人のための概要
オレ プログラム ウゴカス オマエ ゲンシジン ナルの記事に触発されて、言語処理を試してみました。
いにしえのネタである「忙しい人向けシリーズ」1が好きなので、COTOHA APIの要約APIを使って、有名どころの歌を忙しい人向けにしてみました。
※注意書き
以下コードの出力結果(黒背景部分)に要約された歌詞が出てきますが、著作権法第32条に従い言語処理の研究目的で使用しています。(要約APIの仕様上、適宜「。」で区切っています(後述))
また、著作権法48条に従って、曲のタイトルと作詞者名を記事下部に明記しています。
例: 忙しい人のための『粉雪』2
$ python3 youyaku.py < konayuki.txt
ララライ。粉雪。心まで白く染められたなら。
さすがに「来ねぇ」とかになったりはしないようですが、出現回数が多そうなところが出てて納得感(?)ありますね!
環境
Python 3.6.9
実装
COTOHA APIの要約APIを利用して3行に要約します。
コードはほとんどゲンシジンの記事を参考に書いていますが、BASE_URL書き換えたり、要約用にパラメータ変えたりしています。また、歌詞をそのまま与えると全然要約してくれなかったので、改行など歌詞の所々で適宜「。」を入れています。
コード
ここをクリックすると展開します。
import requests
import json
import sys
BASE_URL = "https://api.ce-cotoha.com/api/dev/"
CLIENT_ID = "COTOHA APIで取得したIDを入力"
CLIENT_SECRET = "COTOHA APIで取得したパスワードを入力"
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"]
def summary(document, access_token, sent_len):
    base_url = BASE_URL
    headers = {
        "Content-Type": "application/json",
        "charset": "UTF-8",
        "Authorization": "Bearer {}".format(access_token)
    }
    data = {
        "document": document,
        "sent_len": sent_len
    }
    r = requests.post(base_url + "nlp/beta/summary",
                      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)
    summary_document = summary(document, access_token, 3)
    result_list = list()
    for chunks in summary_document['result']:
      result_list.append(chunks)
    print(''.join(result_list))
結果
『音頭「水戸黄門」あゝ人生に涙あり』3
$ python3 youyaku.py < mitokomon.txt
泣くのがいやならさあ歩け。人生涙と笑顔あり。何かを求めて生きようよ。
『ドラえもんのうた』4
$ python3 youyaku.py < doraemon.txt
みんなみんなみんな かなえてくれる。アンアンアン。とってもだいすきドラえもん。
『それが大事』5
$ python3 youyaku.py < soregadaiji.txt
負けない事・投げ出さない事・逃げ出さない事・信じ抜く事。駄目になりそうな時。それが一番大事。
『ガッチャマンの歌』6
$ python3 youyaku.py < gachaman.txt
ガッチャマン。飛べ。行け。
『摩訶不思議アドベンチャー』7
$ python3 youyaku.py < makafushigi.txt
DRAGONBALL。try。fly。
『勇者王誕生!』8
$ python3 youyaku.py < yushaou.txt
ガガガッ。ガオガイガー!。ガガガガッ。
まとめ
様々な名曲を要約してみました。
良い歌は短くしても深い
