この記事はリンク情報システムの「2020新春アドベントカレンダー TechConnect!」のリレー記事です。
engineer.hanzomonのグループメンバーによってリレーされます。
(リンク情報システムのFacebookはこちら)
最終日らしいです。頑張ります。
こんなニッチな記事が最終日で大丈夫か。
ノエル・ギャラガー氏について
90年代のイギリスに現れた最高のロックバンド OASIS のギタリスト兼シンガー兼メインソングライターです。(弟のリアム・ギャラガーがメインボーカル)
ギャラガー兄弟は 口が悪い 名言が多いことが有名で、
2人とも他のアーティストを名指しで 酷評する 評価するインタビューが度々メディアに掲載されています。もちろんお互いに貶し合う意見を言うことも多々ありました。
(OASISは二人の兄弟喧嘩で2009年に解散)
※Wikipediaの記事 に色々書いてあるのでチェックしてみてください。
私はノエル・ギャラガーを尊敬しています。
彼の作曲した楽曲はイギリス、いや世界中のロックミュージックを代表する名曲ばかりだし、彼のインタビュー記事は他のどんな読み物よりもウィットに富んでユーモアがあります。
今回は彼の過去の発言をもとにAIによって新しい名言を作成してみようという試みです。
過去の発言を集める
New Musical Express (通称:NME) がまとめた50の名言を手作業で抜き出します。
→抜き出してみたら、49しかなかった。なんでやねん。
NEVERまとめ にも「【UK名物】ノエル・ギャラガーの発言集【ビッグマウス】」という記事があったのでNMEのものと被らないよう手作業で抜き出します。
ノエル・ギャラガー氏の発言は少々過激な発言も含まれているため、過激な単語は「XXX」に置き換えることにします。(でないと記事が掲載できない可能性があるため。)
上記の作業で名言64個が集まりました。今回はこれらをベースにAIノエル・ギャラガーを作成していきます。
※ノエル・ギャラガー氏の暴言名言はいろいろなサイトでまとめられています。ぜひ探して読んでみてください。
AIノエル・ギャラガーを作る
今回、文章の形態素解析には自然言語処理ライブラリ MeCab、文章の自動生成にはマルコフ連鎖ライブラリ markovifyを使用します。
マルコフ連鎖による文章生成を使用した例として@しゅうまい君というTwitterのBotが有名です。
参考記事
文章の分かち書き
分かち書きとは 英語の様に言葉の区切りに空白を入れる書きかたです。
以下のような感じで分かち書きを行ってみます。
また、markovifyで取り扱い不可能な文字(),[]などはこの時点で取り払います。
import MeCab
broken_strings = [ '(',')', '(',')', '[',']', '"','”' ,"'",'’','“' ]
for line in open("/content/drive/My Drive/NoelText/NoelText.txt", "r"):
for bstr in broken_strings:
line = line.replace(bstr,"")
parsed_text = MeCab.Tagger('-Owakati').parse(line)
learm_text += parsed_text
learm_text += '\n'
print(learm_text)
上記を実行すると以下のような結果が得られます。
あの 頃 が 人生 で 最高 の 時 だっ た 。 写真 撮影 も なし 、 インタヴュー も なし 。
:
:
マルコフ連鎖を使用した文章の自動生成
続いてmarkovifyを用いて文章の自動生成を行います。
text_model = markovify.Text(learm_text, state_size=2)
for i in range(3):
sentence = text_model.make_short_sentence(100, i, tries=100)
print(sentence.replace(' ', ''))
実行結果がこちら
あの頃が人生で最高のバンドだって言われてたんだからな。そいつは法律違反ってモンだ
あの頃が人生で会ったことはザ・ローリング・ストーンズと合わせて見てもらわないと。誰かわからないな。そいつは法律違反ってモンだ
あの頃が人生で会ったことは残念だ。毎朝起きる度に二日酔いだからな。そいつは法律違反ってモンだ
なんじゃこりゃ。”あの頃”の”人生”を懐かしみながら最終的に”法律違反ってモン”と決めつける謎の文章が出来上がりました。
これはInputファイルの最初から最後までを一文として読み込んでしまったから、このようなことになったみたいです。
改良します。
learm_textを改行毎に分割し、名言が64個入ったStringのリストとして扱います。
またモデル作成の際に使用している関数Text()をNewlineText()に置き換えます。
あとは各パラメータを調整して、再度文章の自動生成を行います。
learm_text = learm_text.splitlines()
text_model = markovify.NewlineText(learm_text, state_size=3)
for i in range(5):
sentence = text_model.make_short_sentence(120, 20, tries=100)
print(sentence.replace(' ', ''))
出力結果
改良の結果、以下のような名言が生成されました。
人間が木を演奏してるんだ。完全に的外れだろ
解消が必要な程ストレスが溜まったら、何をすればいいかわかるだろ
キッズなんてアルバム買うだけの金もないんだ。ギターはコード3つで曲が作れる。俺はいいことしようとしただけだぜ。
なあ、俺はあいつらのブサイクなガールフレンド以外には、何の意味もないと思うけどな。
俺は今でもアルバム『ビィ・ヒア・ナウ』を作り始めた時にあった。悲惨だったよ
それなりに、ノエル・ギャラガー氏が言いそうなことが作成されていますね!いい感じ!
まとめ
今回はAIノエル・ギャラガーに沢山の悪口名言を生み出してもらいました。
出力内容はinputに完全に依存しているので、誰かのインタビュー記事をスクレイピングすることでAI誰々がバンバン作れそうですね。
この記事でノエル・ギャラガーやOASISを知った方は、是非楽曲の方も聴いてみてください。
OASISを表す一曲 : Rock'N'Roll Star
Noel Gallagherの最新曲 : Wandering Star
→かと思ってたら投稿前日に新曲が投下されました。最高か。
Noel Gallagherの最新曲 : Blue Moon Rising
イギリスの国歌とも称された一曲 : Don't Look Back in Anger
リンク情報システム株式会社では一緒に働く仲間を随時募集しています!
また、お仕事のご依頼、ビジネスパートナー様も募集しております。お気軽にご連絡ください。