idol2vec

 idol2vec

アイドル紹介記事の分散表現によりキャラクター性を定量的に扱う試み

788c59210146d00948749be4ae97b136?s=128

shuukei.imas_cg

July 06, 2019
Tweet

Transcript

  1. 2.

    自己紹介  たくみP  担当アイドル: 喜多日菜子  Twitter: @shuukei_imas_cg 

    @takumi@imastodon.net  運営しているサイト・サービス https://www.shuukei.info/  モバマス-Pixiv集計所  シンデレラガールズ/ミリオンライブ!/SideM台詞判定  喜多日菜子LINE BOT  デレマスユニット推薦 2
  2. 3.

    テーマ: アイドルのキャラクター 性を定量的に扱いたい  アイドルの性格・位置づけをグラフ上に表したい  「島村卯月とキャラクター性が近いのは誰?」  「『クール属性の佐久間まゆ』は誰に相当する?」 

    「卯月と凛を足して2で割ると誰に近い?」 これらの疑問に主観的でなく定量的に回答したい 引用元: https://twitter.com/midori_a/status/1129586562226827265 3 例えばこれは(主観に基づく) ユニットの位置づけを2軸の 分布図として表したもの
  3. 4.

    ところで: 単語の分散表現とは  いわゆる「Word2Vec」などの手法で得られる  T Mikolov ら(2013) “Distributed representations

    of words and phrases and their compositionality”  単語を100~300次元程度の密なベクトルで表現する  大量の文章からアルゴリズムで人手を介さずに抽出する  類似した単語の一覧が類似度とともに取得できる  「お仕事」  「仕事」 0.679117977619  「予定」 0.663984596729  「レッスン」 0.637667179108  ベクトルの加減算ができる  「king – man + women = queen」  「tokyo – japan + france = paris」 4
  4. 5.

    文書の分散表現とは  単語の分散表現を発展させ、「文書の分散表現」 を得るための手法がいくつか提案されている  Doc2Vec  Word2Vec+文書ID みたいな手法 

    分散表現を獲得したい文章の集合から改めて学習する 必要がある  SWEM (Simple Word-Embedding-based Methods)  既知の「単語の分散表現」モデルがあれば、任意の文 書について計算できる  DNN系手法と比べても引けを取らない精度で、処理速 度と精度のバランスが取れている(と言われている)  SCDV(Sparse Composite Document Vector)  他の手法より精度が高い & 計算量・データ量大 5
  5. 7.

    基本的なアイデア  Pixiv大百科からアイドルの記事をスクレイピング  前処理(整形・抽出)  各々の記事について「文書の分散表現」を作る  アイドルの記事のベクトルを、アイドルの キャラクター性のベクトルとみなす

    7 https://dic.pixiv.net/a/島村卯月 島村卯月 ゲーム『アイドルマスターシンデレラガール ズ』のキュートなニュージェネレーションア イドル。 「はじめまして、◦◦プロデューサーさん! 島村卯月、17歳です。私、精一杯頑張ります ら、一緒に夢叶えましょうね♪よろしくお願 いしますっ!」 「ま、まだまだ頑張れます!」 「皆楽しんでくれてるかな?」 タイプ キュート
  6. 8.

    手法・パラメータ  単語の分散表現モデル:  筆者手持ちのシンデレラガールズSSコーパスから作成  220MB程度、W2V, size=100, window=5, min_count=5,

    sg=1, hs=1, negative=0, iter=20  記事データ:  Pixiv百科事典からスクレイピング、整形を施す  アルゴリズム:  SWEM-aver  他にもmax-pooling, concat, hierなど計4種の手法がある  ベクトルの類似度計算:  NGT(Yahoo Japan)を使用 8
  7. 9.

    記事データの前処理  HTMLの整形:  「タイトル」「サマリー」「本文」に相当する部分を 抽出  htmlタグの除去  数字の桁区切りの除去、数字をすべて0に統一

     全角空白とnbspの除去  固有名詞(名前・ユニット名)の除去:  例えば島村卯月の記事には渋谷凛、本田未央などよく 共演するアイドルの名前が頻出する  姓名、名(愛称)、姓、ユニット名を除去する  ユニット名一覧はim@sparqlより取得 9
  8. 10.

    「キュート(クール・パッション)性」 を如何に扱うか  「キュート属性のアイドル全員のベクトルの平均」 を取れば「キュート性」が表現できるのではないか (仮説2)  具体的な計算:  島村卯月

    = [-0.01183434, 0.05582974, -0.13160108, … , 0.06038579]  Cute = (島村卯月 + 中野有香 + … + 白雪千夜) / 65  Cool = (渋谷凛 + 黒川千秋 + … + 久川颯) / 65  Passion = (本田未央 + 高森藍子 + … + 久川凪) / 60 10 100次元のベクトル(100要素の倍精度浮動小数点数の配列)
  9. 11.

    アイドル別類似度の例1 「島村卯月」 本田未央: 0.07973699271678925 緒方智絵里: 0.08038537204265594 中野有香: 0.09118976444005966 姫川友紀: 0.09289788454771042

    神谷奈緒: 0.09559869021177292 小日向美穂: 0.10004198551177979 多田李衣菜: 0.10141804814338684 相葉夕美: 0.101479172706604 11 「渋谷凛」 北条加蓮: 0.05827108398079872 高森藍子: 0.06426240503787994 高垣楓: 0.07295440137386322 城ヶ崎美嘉: 0.07446138560771942 新田美波: 0.07641729712486267 アナスタシア: 0.07832300662994385 松永涼: 0.07957689464092255 鷺沢文香: 0.08018903434276581 数値はコサイン距離を表す(細かい数値は記事や辞書の取得時期により異なる)
  10. 12.

    アイドル別類似度の例2 「一ノ瀬志希」 二宮飛鳥: 0.06358060240745544 Cool: 0.0659647136926651 Cute: 0.070498988032341 Passion: 0.07320850342512131

    松永涼: 0.07416977733373642 八神マキノ: 0.07885773479938507 片桐早苗: 0.08043612539768219 原田美世: 0.08200214058160782 12 「三村かな子」 十時愛梨: 0.052665483206510544 相葉夕美: 0.06597600877285004 Cute: 0.06846584379673004 Passion: 0.07022210210561752 白坂小梅: 0.07213003933429718 兵藤レナ: 0.07769787311553955 土屋亜子: 0.07924401760101318 塩見周子: 0.08127733319997787 ※Cute, Cool, Passionは各属性アイドルのベクトルの平均値
  11. 13.

    「佐久間まゆ」(単体) 佐久間まゆ: 0.0 白菊ほたる: 0.0744253545999527 橘ありす: 0.08650907129049301 上条春菜: 0.09357571601867676 佐々木千枝:

    0.10276880860328674 篠原礼: 0.1067710742354393 佐城雪美: 0.10937783867120743 的場梨沙: 0.11051560193300247 「佐久間まゆ – Cute + Cool」 佐久間まゆ: 0.02991626225411892 白菊ほたる: 0.07120858132839203 橘ありす: 0.0824894979596138 上条春菜: 0.09748004376888275 三船美優: 0.10558253526687622 有浦柑奈: 0.10827063024044037 水野翠: 0.11239234358072281 篠原礼: 0.11658176779747009 ベクトル加減算の例1 13 結果がほとんど 変わっていない!?
  12. 14.

    属性別平均がうまく働いていない? 14  Cute, Cool, Passion各属性の平均ベクトルが、互いに 近いベクトルになっている  考察: 

    シンデレラガールズの属性はぶっちゃけ適当に決められ ている必ずしもアイドルのキャラクター性に合致してお らず、各属性にさまざまなキャラクターが所属している ため、属性別の平均値を取っても互いに近い値になって しまう → 演算しても影響を与えない 「Cute」 Passion: 0.016445716843008995 Cool: 0.029916265979409218 相葉夕美: 0.05580117180943489 土屋亜子: 0.05587206408381462 白坂小梅: 0.057220183312892914 道明寺歌鈴:0.05823464319109917 原田美世: 0.060765743255615234 松永涼: 0.060880184173583984 「Cool」 Cute: 0.029916265979409218 Passion: 0.036495085805654526 松永涼: 0.049833059310913086 小室千奈美:0.05697570741176605 結城晴: 0.057896628975868225 原田美世: 0.05869019776582718 土屋亜子: 0.059917692095041275 川島瑞樹: 0.06152632087469101
  13. 15.

    「佐久間まゆ – 島村卯月 + 渋谷凛」 三船美優: 0.08821611106395721 矢口美羽: 0.1072150319814682 白菊ほたる:

    0.11562131345272064 有浦柑奈: 0.12025120854377747 佐久間まゆ: 0.123728908598423 橘ありす: 0.13757796585559845 水野翠: 0.14333383738994598 上条春菜: 0.15518715977668762 ベクトル加減算の例2 「島村卯月 – 水本ゆかり + 北条加蓮」 北条加蓮: 0.13167357444763184 双葉杏: 0.14390446245670319 新田美波: 0.14966709911823273 渋谷凛: 0.15053877234458923 城ヶ崎美嘉: 0.1529175490140915 神崎蘭子: 0.15712162852287292 前川みく: 0.16271370649337769 アナスタシア: 0.1651751846075058 15
  14. 16.

    ベクトル加減算の例3 16 「(島村卯月 + 渋谷凛) / 2」 島村卯月: 0.0618644580245018 渋谷凛:

    0.0618644580245018 多田李衣菜: 0.07325413823127747 諸星きらり: 0.075960673391819 緒方智絵里: 0.07685784995555878 神谷奈緒: 0.07985060662031174 松永涼: 0.08007478713989258 鷺沢文香: 0.08102399855852127 「諸星きらり – 野々村そら + 渋谷凛」 神崎蘭子: 0.15688738226890564 北条加蓮: 0.15754050016403198 渋谷凛: 0.16813313961029053 白雪千夜: 0.1708144247531891 新田美波: 0.17466597259044647 橘ありす: 0.1790679693222046 南条光: 0.1792221963405609 城ヶ崎美嘉: 0.18451142311096191
  15. 20.

    まとめ  アイドルのキャラクター性を分散表現によって定量的に 表現することを試みた  しかし、「これが正解」というものがないので結果の解釈 は主観的にならざるを得なかった  文書の前処理、文書の分散表現手法の選択によって結果が 大きく変わる

     メタな位置づけ(出演イベント、歌った曲)や、記事筆者の 癖にも影響されている可能性がある  記事のデータサイズも142KB(三船美優)~7.8KB(久川凪)と 差が大きい  「任意の評価軸」を設定することは難しい  冒頭の2軸散布図のようなもの 20
  16. 22.

    改善案  Pixiv百科事典とニコニコ大百科の記事の結合  ストップワード(除外する単語)など前処理の強化  曲名、イベント名など  別の分散表現化手法 

    SCDV  BERT, XLNet  大規模なコーパスから取得したW2Vモデルの使用  しかし、「日本語 Wikipedia エンティティベクトル」で軽 く試してみた感じあまり変わらなかったので、ストップ ワードや分散表現化手法のほうが効くような気がする  http://www.cl.ecei.tohoku.ac.jp/~m-suzuki/jawiki_vector/ 22