の続き。
生成されるフレーズのうち、大半は大して面白くもうまくもないフレーズだ。生成されたフレーズの中から、面白い/うまいフレーズを抽出する方法がないか考えてみる。まずは、生成されたフレーズの出来とその傾向について分析してみる。
悪い例
まずは、面白くない例をいくつか。
- 後ろ指をさされる大工
- 目に入れても痛くないペリカン
そもそも慣用句部分とキーワード(大工, ペリカン)の関係性が微妙でピンとこない例。
- 行間を読む読書家
- 目が回る回転寿司店
これらは、慣用句とキーワードとの関連は納得感があるが、あまりに「ひねりのない」ことしか言っていないので、面白くない。
- 終止符を打つバッター
- 心を打たれる投手
バッター・投手から連想される「打つ」という単語を含みつつ、ボール以外の「別のもの」を打っている。状況が想像されて、ちょっとうまいことを言っているような気もする。しかし、特に笑えない。
良い例
次に、ちょっと良さそうなフレーズを見ていく。
- 釘をさす大工
- くちばしを入れるペリカン
- 尾ひれをつける釣り師
慣用句とキーワードとの関連性が非常に高いが、慣用句が別の意味(「釘をさす」の場合は「念を押す」という意味)を表しているため、ちょっと面白く感じられる。
- さばを読む読書家
- さじを投げる投手
- 算盤を弾くピアニスト
- 手が後ろに回る回転寿司店
- 口車に乗せられるバスガイド
- 手に汗握る回転寿司店
いくつかのフレーズは2chスレにも登場しているもの。これらの慣用句も、基本的に文字通りではない別の意味を表す表現だが、若干ネガティブな意味合いを含んでいるため、シュールな世界観を生み出しているように思える。
慣用句と熟語の関連性と慣用句のネガティブさ
今回生成されたフレーズを見ている限りでは、慣用句とキーワードの関連性の高さと慣用句のネガティブさ、が自分好みのフレーズを生成する上での肝になりそうだ。慣用句のポジネガ判定はまた別にやるとして、生成されたフレーズ約100個における慣用句と熟語の関連性を可視化して見た。
Wikipediaの全文データを用いて学習したWord2Vecのモデルを利用して、慣用句部分とキーワードとのSimilarity(類似性)を評価した。下記の2軸で類似性を算出した。
- X軸: 慣用句部分に含まれる、「連想された動詞」以外の名詞・動詞と、キーワード部分とのSimilarity(複数の単語がある場合は、最もスコアの良かった組み合わせのものを利用)
例: 「さば」と「読書家」のSimilarity: 0.100 - Y軸: 「連想された動詞」と、キーワード部分とのSimilarity(複数の単語がある場合は、最もスコアの良かった組み合わせのものを利用)
例: 「読む」と「読書家」のSimilarity: 0.516
この二つの軸でプロットしただけでは、くっきりと「良いフレーズ」とそうでないものが分離されなかったが、少なくとも両軸のスコアが低い場合は「良いフレーズ」にはならない、というような傾向は現れているようだ。
それかよクラスター
「さばを読む読書家」「さじを投げる投手」「算盤を弾くピアニスト」は、Y軸スコアは高いがX軸スコアが低い位置で近接している。「読書家→読む」「投手→投げる」「ピアニスト→弾く」と、キーワードと動詞の関連性が非常に高い一方で、その動詞の対象が「本→さば」「ボール→さじ」「ピアノ→算盤」と、だいぶトンチンカンなものになっているのが面白いのかもしれない。この集団の近くにプロットされたフレーズとしては、「行間を読む読書家」「恩を売る回転寿司店」「心を打たれる投手」などが存在する。
別の意味クラスター
「釘を刺す大工」「くちばしを入れるペリカン」の二つも、非常に近い位置にプロットされた。動詞とキーワードの関連性が非常に低い一方で、慣用句に登場する名詞とキーワードの関連性が非常に高い。その上で、慣用句が文字通りの意味ではない別の意味を表しているため、「うまい」のかも。
「尾ひれをつける釣り師」「口車に乗せられるバスガイド」も、これに近いのだが、「釣り師→魚→尾ひれ」「バスガイド→バス→車→口車」と、連想にはワンクッションまたはツークッション挟む必要があるので、X軸のスコアが低いのだろう。
ちょっとアレなクラスター
「手に汗握る寿司店」「手が後ろに回る回転寿司店」は、完全に慣用句の内容が物悲しかったり、若干想像すると嫌な気分になるあたりが面白い。これは単語の類似性だけでは判断できないので、別軸で判定する必要がありそうだ。
今後
今度は、これらの仮説を踏まえて、生成されたフレーズの良い・悪いを判定し、選別してみよう。
「キャッチフレーズを自動生成するプログラムを考える – 生成されたフレーズの分析編」への1件のフィードバック