スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

エロゲーの類似性関係を可視化してみた

eroge_graph090204.png

アマゾンでエロゲーの類似性関係を垣間見る
この商品を買った人はこんな商品も買っています

アマゾンで買い物をしていると、「この商品を買った人はこんな商品も買っています」というメッセージが表示されます。たとえば、名作百合ゲー「カタハネ:注:18禁」のページでは、以下のようになります。

ここで推薦されている作品は、みな百合ジャンルの作品です。ある百合作品を買う人は、他の百合作品も買っている、ということです。ということは、「この商品を~」リストに提示された商品は、もとの商品と類似性が強いということができるのではないでしょうか。

ある商品について、それに類似した商品、にさらに類似した商品、のこれまた類似した商品…というように、似たものどうしのネットワークをどんどん広げていくことができます。このネットワークを広げていくと、全商品の間の類似性の関係を知ることができます。今回のネタは、似た商品どうしのネットワークを俯瞰し、図示してみよう、というものです。

グラフ理論をつかってみる

商品どうしの類似性を記述するために、グラフ理論を使います。グラフ理論は、モノとその間の関係を記述するのに適した手法です。以下、用語についてちょっと説明。グラフ理論では、ノードとエッジという考え方でモノとモノの関係性を記述します。今回の例では、ノードは商品、エッジは商品どうしの関連性に該当します。
graph.png
たとえば、カタハネを買った人が百合姫Sを買った場合、カタハネノードから百合姫Sノードに矢印を引くことで、エッジを表現します。さらに、両者からflower*flowerにエッジが伸びています。
各ノードに入ってくるエッジの数(or 各ノードから出て行くエッジの数 or その両方)をノードの次数と言います。今回の解析では、ノードから出て行くエッジの数に意味は無いので、ノードに入ってくるエッジを次数とします。この例では、カタハネ、百合姫S、flower*flowerの次数はそれぞれ0,1,2です。

可視化してみる

さて、それでは、アマゾンのデータを使って、類似性をグラフ化・可視化します。すべての商品についてグラフ化ができればいいのですが、残念ながら私の技量では不可能です。ですので、ある限定したカテゴリの中での商品どうしの類似性を可視化します。手始めに、アダルトゲーム、要するにエロゲの関連性について見てみましょう。

可視化されたグラフを示します。ノードは青から赤まで色分けされた円で示されています。次数が大きいほど、円の大きさも大きくなるようになっています。エッジは水色の線で表されています。結果は、巨大な一つの大陸(毛玉?)と、細々とした小さな島の形であらわされました。ノード数3999、エッジ数13158でした。

エロゲー類似性グラフ

これだけだと、なんだこの毛玉は、だけで終わってしまうので、大陸のどこにどのようなジャンルが存在しているかを図示していきましょう。

まずは、右上に存在する島。これだけが他の大陸から孤立しているように見えます。これらは女性向けエロゲー(BL・乙女ゲー)が集まる島です。やはりというか、男性向けエロゲーからは距離が遠いようです(非連結になると思ってたのですが、リンクがあるというだけで驚きです)。また、よく見ると、島は二つあるように見えます。左が乙女ゲーの島、右がBLゲーの島のようです。

続いて、大陸の左側に目をやりますと、オレンジ色のノードが集中している箇所があります。ここには純愛ゲー・学園モノが集まっているようです。大陸の右側には、陵辱ゲームの集まる地域があります。この相対する二つのジャンルが大陸の正反対にあるということは、それぞれのジャンルの愛好者の重なりは少ないのでしょうか。

大陸の下側には、いわゆる抜きゲーが集まっているようです。若干驚いたのは、抜きゲー地域の右側には、どうも孕ませゲーが集まっている傾向があることです。孕ませ属性が、エロゲーの中で確固たる地位を獲得しているということでしょうか。

私にとって最大の驚きは、右下に熟女人妻(あと母親)モノが集合しており、なおかつ高い次数を持っているということでした。私はこれらの属性と全く無縁なので、驚きというか、正直、くらくらします。ちなみに、これらの属性と相対するロリえろげーの集まる地域はありませんでした。かの忌まわしき頭身規制に始まるロリゲーの凋落をまざまざと見せつけられたわけで、落ち込むことしきりです。

大陸の辺縁にある緑色の島は、低価格ゲームが集まる島のようです。大陸中央部には、アリスソフトのゲームや、シミュレーション・RPGが集まっているようでしたが、カテゴリ分けするには雑然としすぎていたので特に記入はしませんでした。

エロゲー類似性グラフ(注釈つき)


解析手法

グラフの構築
グラフを構築するためには、まずはAmazonから商品情報を取得しなければなりません。そのために、Amazon Associate Web Serviceを利用します。以下のようなURLにアクセスすると、商品情報を記載したXMLを取得できます。
http://ecs.amazonaws.jp/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=[MY AWS KEY ID]&Operation=ItemSearch&BrowseNode=927712&SearchIndex=VideoGames&ResponseGroup=Large&Version=2008-08-19&ItemPage=1

これを用いて、以下の順で商品のIDとその関連商品のIDのリストを作成します。プログラムはperlを用いて書きました。
  1. エロゲーカテゴリー内で、AWSが許可している最大4000アイテムの商品情報を取得
  2. 商品ID(ASIN形式で指定されている)をノード、商品の類似性をエッジとして、作成されたリストからGML形式で有向グラフを書き出す
  3. 商品IDとその他関連情報(タイトル・ブランド・発売日etc、ノードの次数)をcsv形式で書き出す
ただし、関連商品に別カテゴリの商品が指定されていた場合(上の例で言えば、ゲームの関連商品が書籍だった場合)は、その関連商品を無視します。

可視化
可視化には、Cytoscapeを使用しました。Cytoscapeは、Javaベースのネットワーク可視化ソフトで、WinXPでもUbuntu Linuxでも問題なく動きます。さらに、今回のように高々4000ノード程度のネットワークなら苦もなく美しい画像を描画してくれます。また、開発者が日本人の方らしく、日本語対応も完璧です。もともと、バイオインフォマティクス用途のソフトであるようなので、私に縁のない単語が多用されていましたが、グラフを可視化する上での障害にはなりませんでした。

Cytoscapeの起動後、
  1. Import→Network(mulitple file types)でgmlファイルの読み込み
  2. Import→Attribute from Tableで、各ノードに属性を付加
  3. Layout→Cytoscape Layouts→Spring Embeddedでレイアウト
  4. VizMapperで、ノードのサイズをノードの次数に比例するように設定
の順に行い、可視化いっちょあがりです。Spring Embeddedは計算に時間がかかるので、最初はCircular Layoutとかのほうがいいかもです。

問題
AWSでは、最大4000アイテムしか取得することができません。これでは、全えろげーを網羅することができません。(どうも1万タイトル以上のえろげーがこの世には存在するようです)
また、さらに悲惨なことに、各アイテムに対して、最大5つの関連商品しか取得することができません。これでは、定量的な議論に耐えられるかどうかはなはだ不安です。
改善策はありますが、私のしょぼいプログラミング能力では実装に時間がかかりそうなので、しばらくは泣く泣くデータの取得をAWSのみに頼ろうと思います。

続きはこちら。
エロゲー類似性ネットワークを複雑ネットワークで解析してみた

コメントの投稿

非公開コメント

すばらしい研究ですね。

エロゲー+傾向とかでブログ検索してきました。
たいへん興味深い研究ですね。

あいまいに認識しているものでも
可視化してみると意外な面が出てくるものですね。

No title

>まりんれいくさん
コメントありがとうございます。
可視化の威力はすごいですね。
データだけだとわからないものも、グラフにして視覚を通してみると、理解が深まるというケースは多いです。
そういう意味では、可視化のアルゴリズムを考えて実装した人は偉大だなと思います。

No title

検索で辿りつきました。
Cytoscapeの使い方の参考にさせていただいております。

>>VizMapperで、ノードのサイズをノードの次数に比例するように設定

これはどのように設定するのでしょうか?
よろしければご教授下さい!

Re: No title

>BSさん

Cytoscape 2.8.1でのやり方です。
また、Cytoscape自体は次数を計算してくれませんので、あらかじめ別の方法で次数を計算し、
>>Import→Attribute from Tableで、各ノードに属性を付加
を行っておいてください。

・CytoScapeのControlPanelからVisMapperを選択
・Unused PropertiesリストからNode Sizeを選択
・Node Sizeをあらかじめ設定した次数の値に
・Mapping TypeをContinuous Mappingに選択
で、ノードの大きさを次数に応じて変えられます。
プロフィール

null

Author:null
二次元眼鏡少女に蔑まれたいです。

最近の記事
最近のコメント
最近のトラックバック
タグ

考察 統計 ネット 複雑ネットワーク 自然科学 二次元 幼女 エロゲー ネタ アニメ 百合 時事ネタ 計算 igraph R 

月別アーカイブ
カテゴリー
あわせて読みたい
あわせて読みたいブログパーツ
ブログ内検索
カレンダー
06 | 2017/07 | 08
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -
RSSフィード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。