chokudaiのブログ

chokudai(高橋直大)のブログです

Twitterを利用した男女間マッチングシステム「社会主義的彼女ったー」

はじめに

今このブログを読んでいる貴方。貴方には、現在恋人はいますか? いるわけありませんよね?
一般的に、彼女や彼氏といった、恋人がいる状態は、恋人がいない状態と比べて、幸せである、という認識を持っている人が多いのではないかと思います。ですが、実際恋人がいる人は、非常に少ないでしょう。これはどうしてか?答えは簡単です。男性と女性を上手くマッチングさせる方法が、確立されていないからです。
こうした、きちんとした制度が確立されていない状態でマッチングを行った結果が、今の惨状です。イケメン、高学歴等の、生まれ持った武器を持った人ばかりに女性が集まり、一般の男性の元には人っ子一人として集まらない。万一彼女が居たとしても、何かしら不満を抱えていることが殆どでしょう。女性サイドだとしても、これは同様かと思います。不平等。非効率。この現状を言い表すのに、最も適した単語でしょう。
ああ、何と嘆かわしいことか!21世紀に入ってもまだ、このような、圧倒的な不平等を抱え、尚且つ非効率な男女間のマッチングが行われていることに、私は絶望せざるを得ない!
そこで、この最強最速アルゴリズマーであるこの私が、旧来の醜悪な男女事情を一掃し、従来の恋愛市場をぶち壊すような、素晴らしいサービスをご用意いたしました。このサービスに登録することで、今まで「リア充氏ね!」と叫んでいた方々も、きっと素敵な出会いが訪れることでしょう。
さぁ、貴方も、コンピュータに統制された世界の、一人の住人になってみませんか?

このサービスにおけるメリット

  • 手近な人以外でも彼女になり得る!

この世界には、現在69億人程度の人間がいます。女性だけで見れば、35億人程度でしょう。ここで質問です。貴方が知り合っていて、ある程度のことが分かっている女性は、何人程いますか?1桁か2桁、非常に多かったとしても、せいぜい3桁ではないでしょうか?このような、極めて限定的な環境で、理想の異性、運命の相手が見つかると思いますか?私はそうは思いません。
そこで、コンピュータの圧倒的な処理能力を利用します。コンピュータが自動的にマッチングを行うことによって、女性を殆ど知らなくても、登録している女性を全て知っているかのように、彼女を作ることができます。これは大きなメリットになるでしょう。

  • 独り身の人間が大幅に減少する

貴方は、誰と一緒に居ても、その人を不幸にする人間ですか? 世の中の60億人のどんな人と一緒に居ても、必ず相手の人間を不幸にするような人間ですか? 答えがNoであれば、このサービスで、貴方には必ず相手が見つかります。
このサービスは、機械的に、交際を通じて得られる幸福度の和を最大化する処理を行っているため、一人でも幸福になれる相手が残っていれば、当然その人を恋人にすることができます。当然1対1でのマッチングとなりますので、男女どちらかに余る人が出てきてしまうのは仕方のないことではありますが、それ以外の方は、まず間違いなく、素敵な出会いを経験出来るでしょう。コンピュータにおける絶対的な統制がなければ、こうしたことは実現不可能でしょう。

  • 不平等な恋愛市場の是正

このサービスで目指すのは、登録者全員の幸福の和の最大化です。つまり、ある一部の人が優遇されたり、逆に誰かが不遇な目にあったりすることは絶対にありません。コンピュータによる絶対的な統制でなければ、ここまで差別がなく、完全に平等なサービスが出来るでしょうか?それに加えて、最適なマッチングを行うため、幸福効率の観点でも優れている、となれば、もう登録するしかないでしょう。

概要

この「社会主義的彼女ったー」は、登録者の幸福値が最大となるように、男女間のマッチングを自動的に行うサービスです。このサービスは、以下のようなプロセスで実行されます。

  1. サービス参加希望者にIDや、少々の個人情報(任意)を入力してもらう。
  2. 最近のTweetから、現登録者との相性値を判定する。
  3. 現登録者で構成された男女間グラフに新登録者を組み込み、新たな男女間マッチングを行う。

このような仕組みになっているため、登録者が増える度に、男女間のグラフが組み替えらるので、彼氏・彼女が、頻繁に変わってしまう、という問題は、少なからず発生します。ですが、貴方にとって、そして社会全体にとって、最大の幸福が訪れるように作られていますので、それくらいは何の問題もありませんよね?
これだけでは少々判りにくいので、もう少し詳しく説明していきましょう。ここから先は少々アルゴリズムの話となりますので、判り難い場合は飛ばしてもらっても問題ありません。

登録者同士の相性判定

相性を判定するために、登録者がどのような人間であるかを判定する必要があります。本サービスでは、以下のようなアルゴリズムを使用しています。

ツイートからの分析

その人の過去のツイートから、その人が、どのような話を好むのかを分析します。
日本語における自然言語処理は、既に非常に研究の進んだジャンルであるため、既存ツールである、形態素解析ツールであるMeCab係り受け解析ツールであるCaboChaの二つを使い、高度な解析を行いました。この解析結果と、既存の単語データ等とを比較し、その人の趣味嗜好から、口癖等まで、さまざまな分析を行うことができます。

replyからの分析

ある人の恋愛対象となる人間を推測するのに、もっとも適した方法は、特定の人間への返信を行っているツイートを見ることです。上記と同様の解析に加え、感情値辞書を利用し、特定の人に向けた発言の、ポジティブ度・ネガティブ度を判定します。これにより、reply先の人間がどのような人間であるかと、その人に対してどのような印象を持っているか、という2つのデータが得られ、このデータから高度な相性予測が可能となります。

登録者同士のマッチング

さて、ここでは、このサービスの核となる、男女間マッチングシステムについてご説明します。このサービスでは、高度なアルゴリズムを駆使し、常に最適なマッチングを行うことができます。これから説明するのは、Primal-Dualというアルゴリズムです。
まずは、参加者同士の相性表を、以下のように設定します。

次に、この表を用いて、以下のようなグラフを作成します。グラフが判らない人は、○と線で構成された下の図みたいなもの、と認識してもらえれば問題ありません。

さて、この後、αからβへ向かう、最も通る辺の点数の合計の点数が多くなる点を、Dijkstraなどの最短経路問題を解くアルゴリズムを使って調べます。今回の場合は、α→男B→女B→βが、9ポイントと一番高いので、そこを辿ってあげます。

このように線が引けました。線が引けた所は、矢印の向きを変更し、点数を逆に書くことによって、逆走可能としてあげます。もう一度、同じことをやってみましょう。
次は、α→男A→女A→βの4ポイントでしょうか? 実は、先ほど矢印の向きをわざわざ逆に変えたので、それ以外の良い経路があります。α→男A→女B→男B→女A→βの、6−9+8=5ポイントの経路が最大となります。

このように、男女間の最適なマッチングが行われます。
今回、残念ながらCさんは、女性が一人足りない影響で、彼女が発見出来ない状態になってしまいました。ですが、これは不幸なことではありません。彼は、社会全体の幸福度を高めるため、絶対的なコンピュータの意志の元で、犠牲になったのです。名誉の戦死だと思って、誇りに思ってください。
今回はこのような結果となりましたが、このサービスにおける彼女マッチングは、1人登録者が増える度に行われるので、非常に動的に変化します。矢印の逆走も可能となっているので、いつC君が他の彼女を寝取る事になるかは判りませんし、それはコンピュータの絶対的な意思の元で行われますから、絶対的に正しい行為として認められます。

ちょっとアルゴリズムに詳しい人向けのお話

上記のような問題は、二部マッチングにおける最小重み最大マッチング問題に帰着することが可能であり、これは、割り当て問題に帰着させ、行列演算を用いたハンガリアン法を使った解法を使う方が一般的です。ですが、今回は、参加者を一人追加する、という作業が必要となります。ここでPrimal-Dualを使用した場合、男性過多の状態で男性を追加する場合、男性から出て男性に戻ってくる負閉路をBellman-FordSPFAで検出し、向きを変える、という処理を、負閉路がなくなるまで繰り返すだけで、簡単に処理が可能となります。

参加者の声

αテストの参加者の方々に、感想を書いていただきました。

@kaminogiさん

今まで、数々の出会い系サイトに挑戦しては絶望してきた僕。届かないメール、増える請求、鳴らない、電話――。今回のサービスの話を聞いたときも、「どうせ出会えないんだろうな」と半ば諦めの気持ちで、とりあえず登録だけして放置していました。
ところが、今回はたった一週間で効果が出始めたんです。僕にリプライをくれる女性のフォロワーさんの数が増え始めたのです。
そして遂に僕は、とある女性と会う機会を作ることに成功しました。その人は僕なんかでは絶対付き合えそうにない、美人で性格の良い人です。
しかし、僕と会ってくれた理由を聞いたところ、この「社会主義的彼女ったー」が推薦するからと答えてくれたのです!
その時はとてもびっくりしましたが、今となってはそれは笑い話。彼女は僕の大切な人になりました。
この偉大なシステムを作ってくれたchokudaiさんには一生頭が上がりません。ありがとうchokudaiさん、ありがとう「社会主義的彼女ったー」!
皆さんも是非登録して、素敵な出会いを掴んでください!

@sanagippさん

私は、このサービスに登録させて頂いてすぐに、素敵な男性と結ばれることが出来ました♪
登録者の増加に伴い、何度か関係が解消されてしまいましたが、彼の振る話題に全て反応し続けてする、彼のツイートを全て非公式RTする、等の行為を試してみたところ、相性値がぐんぐん高く評価され、再び結ばれることが出来ました♪
今後は、彼とお話されている方の口癖を真似してみたりすることによって、もう離れることのないようにしたいと思っています♪
本当に素晴らしいサービスですので、皆様登録してみてくださいね♪

@nagamon1さん

求めてる相手を見つけることができました!
自分の性別や趣味・特技、相手の職業やスタイル、しぐさ、声、表情などを入力すると、最適な異性を探してきてくれます。
異性が見つかったらTwitterで連絡を取り合うことができます。
わたしはこのシステムを利用し、求めてる相手を見つけてからは
毎日のように挨拶したりお話しをしたりして、結婚に向けて愛を深めています。
このシステムはとてもすばらしいと思います!
ただ、ひとつ不満があるとしたら、彼女がディスプレイから出てきてくれないことです。

公開時期について

本サービスは、このブログの公開に合わせてリリースする予定でしたが、プレテストの最中に、サービス制作者の彼女がマッチングされない、という、大きなバグを抱えている事実が発生してしまったため、現在修正を行っております。このバグが取れ次第、公開される予定です。公開をお楽しみに!

おまけ

この記事中に出てきたアルゴリズムの方に興味がある方は、これを機に、競技プログラミングを始めてみてはいかがでしょうか?興味を持たれた方は、是非ITMediaのこちらの記事をよろしくお願いします。
http://www.itmedia.co.jp/keywords/algorithmer.html
5月に開催される、Google Code Jamの勉強会もあるので、こちらもよろしくお願いします。
http://community.appliplanet.co.jp/index.jspa