Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

サブカルのためのWord2vec

43,117 views

Published on

2017年9月上旬から3週間ほど、DeNA のインターンシップで取り組んだタスクの成果報告に関する資料です。

Published in: Technology
  • Be the first to comment

サブカルのためのWord2vec

  1. 1. 1 サブカルのためのword2vec 東北大学大学院 情報科学研究科 M1 五十嵐 祐貴 2017年9月19日~10月6日 DeNAインターン成果報告
  2. 2. 2 五十嵐 祐貴 (いがらし ゆうき) • 東北大学工学部情報知能システム総合学科卒業 • 東北大学大学院情報科学研究科 M1 • 篠原・吉仲研究室 o 文字列(特にパターンマッチング)の研究 • アルバイト・インターンなど o Preferred Networks (2016/6~現在) o SmartNews (2014/8~2014/9) o 乾・岡崎研究室 (2013/4~2016/3) http://vbcpp.net/about
  3. 3. 3 趣味・興味 • .NET Technologies o .NET/Visual Studioに興味があります o 登壇したり本を書いたり… o Microsoft MVP for Visual Studio and Development Technologies (2015, 2016, 2017) • 旅行(18きっぷ) • ラーメン二郎 o ホームは仙台
  4. 4. 4 研究内容 • 文字列処理 o 特にパターンマッチングの研究 • New Variants of Pattern Matching with Constants and Variables [Igarashi+ 2017, f] o SOFSEM 2018で発表予定 [f] https://arxiv.org/abs/1705.09504 Pattern: XaXYb Text: aaabb Match 貢献 ・一般化した問題を定義 ・既存手法を工夫すると同じ 計算量で解けることを示した ・(既存研究の間違い訂正)
  5. 5. 5 タスク概要と背景 一言でいうと… アニメに関連したシノニムを獲得したい! • ハッカドールではアニメの作品名と 略称・愛称を関連付けるための辞書を 手動で更新している o この辞書は記事のタグ付けや検索で利用 • 例 o この素晴らしい世界に祝福を! o Re:ゼロから始める異世界生活 o ご注文はうさぎですか?
  6. 6. 6 タスク概要と背景 一言でいうと… アニメに関連したシノニムを獲得したい! • ハッカドールではアニメの作品名と 略称・愛称を関連付けるための辞書を 手動で更新している o この辞書は記事のタグ付けや検索で利用 • 例 o この素晴らしい世界に祝福を!= このすば o Re:ゼロから始める異世界生活 = リゼロ o ご注文はうさぎですか? = ごちうさ
  7. 7. 7 タスク概要と背景 • 利用可能なデータセット o 日々のWeb記事のクロール結果 o アニメに関するタグ/キーワード集合 o ニコニコ辞書・Wikipediaをソースとして 毎日更新される形態素解析用辞書 o アプリ内の検索キーワード ひとまずは形態素解析ができている前提で シノニムの獲得ができないかを検討
  8. 8. 8 先行研究 • 同義語獲得/同義性判定関連の研究を調査 多くの論文が 一般名詞に対する同義語の獲得を扱っており 固有表現に対するシノニムの検出は少ない (そのなかでグラウンディングを目的としている論文が多かった) • 先行研究で用いられていた手法は 大きく分けて3種類 o 単語表記を考慮した同義語判定 o 周辺文脈を利用した同義語判定 o 検索クエリなどの関係情報を利用した同義語判定
  9. 9. 9 単語表記を考慮した同義語判定 単語正規化による固有表現の同義性判定 [高橋ら 2008,a] • 同義語を以下の3つから生成されるものと仮定 o 定型文字列の追加: 接頭/接尾辞等の文字列を追加 o 表記変換: 読みを保存して表記を変換 o 省略: 文字順を保存して文字を削除 [a] 高橋いづみ, et al. "単語正規化による固有表現の同義性判定." 言語処理学会第 14 回年次大会 発表論文集 (2008): 821-824. http://www.anlp.jp/proceedings/annual_meeting/2008/pdf_dir/D4-5.pdf
  10. 10. 10 単語表記を考慮した同義語判定 単語正規化による固有表現の同義性判定 [高橋ら 2008,a] • 同義語を以下の3つから生成されるものと仮定 o 定型文字列の追加: 接頭/接尾辞等の文字列を追加 o 表記変換: 読みを保存して表記を変換 o 省略: 文字順を保存して文字を削除 [a] 高橋いづみ, et al. "単語正規化による固有表現の同義性判定." 言語処理学会第 14 回年次大会 発表論文集 (2008): 821-824. http://www.anlp.jp/proceedings/annual_meeting/2008/pdf_dir/D4-5.pdf
  11. 11. 11 周辺文脈を利用した同義語判定 Skip-gram [Mikolov+ 2013, e] [e] Mikolov, Tomas, et al. "Efficient estimation of word representations in vector space." arXiv preprint arXiv:1301.3781 (2013). 𝑤𝑡−2 𝑤𝑡−1 𝑤𝑡 𝑤𝑡+1 𝑤𝑡+2… …
  12. 12. 12 周辺文脈を利用した同義語判定 文脈限定 Skip-gram による同義語獲得 [城光ら 2017,b] 通常のSkip-gram 提案 [b] 城光英彰, 松田源立, and 山口和紀. "文脈限定 Skip-gram による同義語獲得." 自然言語処理 24.2 (2017): 187-204. https://www.jstage.jst.go.jp/article/jnlp/24/2/24_187/_article/-char/ja/ 𝜙は与えられた単語の品詞・位置によって0/1をとる関数 例: 異なる𝜙を用いて254個のSkip-gramモデルを学習 ⇒同義語ペアについて、それぞれのモデルで類似度を算出し 得られた254個の値を素性として線形SVMで学習
  13. 13. 13 検索クエリなどの関係情報を利用した同義語判定 A Framework for Robust Discovery of Entity Synonyms [Kaushik+ 2012, c] • 検索クエリ集合とWebドキュメント集合を用いて 自動的に固有表現のシノニムを検出 • 応用例として検索エンジンの 「関連するキーワード」 o 論文内で”Canon EOS 400d Digital Camera”と ”canon rebel xti”と”canon kiss k”が 同じクエリだということを検出したいと述べている [c] Chakrabarti, Kaushik, et al. "A framework for robust discovery of entity synonyms." Proceedings of the 18th ACM SIGKDD international conference on Knowledge discovery and data mining. ACM, 2012. https://www.microsoft.com/en-us/research/wp-content/uploads/2012/01/idg811-cheng.pdf
  14. 14. 14 検索クエリなどの関係情報を利用した同義語判定 ClickSim [Cheng+ 2010, d] 検索クエリ 𝑟𝑒, 𝑠𝑒 が与えられたとき ただし𝑎𝑢𝑥(𝑤)は検索クエリ𝑤によってクリックされたドキュメント集合 [d] Cheng, Tao, Hady W. Lauw, and Stelios Paparizos. "Fuzzy matching of web queries to structured data." Data Engineering (ICDE), 2010 IEEE 26th International Conference on. IEEE, 2010. ドキュメント集合クエリ集合 𝑟𝑒 𝑠 𝑒 𝐹𝑐𝑠𝑖𝑚 = 2 3
  15. 15. 検索クエリなどの関係情報を利用した同義語判定 Pseudo Document Similarity [Kaushik+ 2012, c] 検索クエリ 𝑟𝑒, 𝑠𝑒 が与えられたとき ただし𝑎𝑢𝑥(𝑤)は検索クエリ𝑤によってクリックされたドキュメント集合 ドキュメント集合クエリ集合 𝑟𝑒 𝐹𝑝𝑑𝑠𝑖𝑚 = 3 3 ⇒”microsoft spreadsheet”と”ms excel”から“ms spreadsheet”を取れる(らしい) 𝑠 𝑒 長いクエリを分割してエッジを張る
  16. 16. 16 先行研究の適用の検討 • ルールベースでの同義語ペアの抽出 過去約1年半のデータのなかで 「略称」「愛称」などのキーワードを含む記事 34,675 件 (1.27%) • 単語表記を考慮した同義語判定 アニメタイトルは他の固有表現と比べて 近年難しくなる傾向にある[要出典] 例: o 「終末なにしてますか? 忙しいですか? 救ってもらっていいですか?」 o 「僕は友達が少ない」
  17. 17. 17 先行研究の適用の検討 • ルールベースでの同義語ペアの抽出 過去約1年半のデータのなかで 「略称」「愛称」などのキーワードを含む記事 34,675 件 (1.27%) • 単語表記を考慮した同義語判定 アニメタイトルは他の固有表現と比べて 近年難しくなる傾向にある[要出典] 例: o 「終末なにしてますか? 忙しいですか? 救ってもらっていいですか?」 = すかすか o 「僕は友達が少ない」 = はがない
  18. 18. 18 先行研究の適用の検討 • 周辺文脈を利用した同義語判定 アプローチの方向性としては適切 しかし、たくさんのSkip-gramモデルを 学習するのは時間的に困難 また、教師データを用意するのは難しい • 検索クエリなどの 関係情報を利用した同義語判定 検索クエリは利用できるがクリック情報がない (エッジが張れない) 今回は周辺文脈を利用した同義語判定からアプローチ
  19. 19. 19 予備実験 オリジナルのSkip-gramモデルの学習 • データセット o ドキュメント数 250,000 記事 o 単語数 172,257 単語 o のべ単語数 93,799,316 単語 • 主要なハイパーパラメータ o 窓幅:5 o 次元数:100 o 最小単語出現回数:5回
  20. 20. 20 予備実験 オリジナルのSkip-gramモデルの学習 ここでクイズ それぞれ あるアニメタイトル の周辺5単語を ソートしたものです。 何のアニメか 当ててください。
  21. 21. 21 予備実験 オリジナルのSkip-gramモデルの学習 ここでクイズ それぞれ あるアニメタイトル の周辺5単語を ソートしたものです。 何のアニメか 当ててください。 リゼロごちうさ
  22. 22. 22 予備実験 オリジナルのSkip-gramモデルの学習結果 • 結果:これじゃない! • 雑感 o アニメ一般の概念は獲得できている様子 (アニメタイトルは集まる) o 作品は全く考慮できていない
  23. 23. 23 予備実験 オリジナルのSkip-gramモデルの学習結果 • 結果:これじゃない! • 雑感 o アニメ一般の概念は獲得できている様子 (アニメタイトルは集まる) o 作品は全く考慮できていない ごちうさ―リゼロ状態
  24. 24. 24 予備実験 オリジナルのSkip-gramモデルの学習 ここでクイズ それぞれ あるアニメタイトル の周辺5単語を ソートしたものです。 何のアニメか 当ててください。 ごちうさ 再掲 リゼロ 一般名詞においては重要だが アニメにおいては ほぼストップワード
  25. 25. 25 「ごちうさ‐リゼロ状態」の解決に向けて (1) • なぜ「ごちうさ」は「リゼロ」に 近づくのか o 声優?アニメ制作会社?もしかしてリゼ?
  26. 26. 26 「ごちうさ‐リゼロ状態」の解決に向けて (1) • なぜ「ごちうさ」は「リゼロ」に 近づくのか o 声優?アニメ制作会社?もしかしてリゼ? 要因の一つとして… どちらも大人気作品なので イベント等では多数のグッズが頒布 ⇒ イベントのグッズ情報をまとめるWebサイトが 両方の作品のグッズを同一ページで取り扱う
  27. 27. 27 「ごちうさ‐リゼロ状態」の解決に向けて (1) • キーワードを10個以上含む記事は 学習から除外 • 1記事あたり付与されたキーワード数 提案
  28. 28. 28 予備実験 オリジナルのSkip-gramモデルの学習 ここでクイズ それぞれ あるアニメタイトル の周辺5単語を ソートしたものです。 何のアニメか 当ててください。 ごちうさ 再掲 リゼロ 一般名詞においては重要だが アニメにおいては ほぼストップワード
  29. 29. 29 「ごちうさ‐リゼロ状態」の解決に向けて (2) Skip-gram [Mikolov+ 2013, e] 𝑤𝑡−2 𝑤𝑡−1 𝑤𝑡 𝑤𝑡+1 𝑤𝑡+2… … 再掲 𝑤𝑡 𝑤𝑡−2 𝑾 𝒆 𝑾 𝑤𝑡−1 𝑤𝑡+1 𝑤𝑡+2Skip-gram
  30. 30. 30 「ごちうさ‐リゼロ状態」の解決に向けて (2) Skip-gram [Mikolov+ 2013] 𝑤𝑡 𝑤𝑡+𝑗 𝑾 𝒆 𝑤𝑡−2 𝑤𝑡−1 𝑤𝑡 𝑤𝑡+1 𝑤𝑡+2… … Skip-gram (簡略化された図) 再掲 𝑾
  31. 31. 31 「ごちうさ‐リゼロ状態」の解決に向けて (2) モデル1号 𝑤𝑡+𝑗𝑾 𝑘 𝑑,𝑗𝑾′ 𝑤𝑡−2 𝑤𝑡−1 𝑤𝑡 𝑤𝑡+1 𝑤𝑡+2… … 𝑘 𝑑,1 𝑘 𝑑,𝑛… Skip-gram (Multitask) 提案 ある単語を入力として その周辺単語とドキュメントに付与されたキーワードを 学習するモデル(マルチタスク学習) 𝑤𝑡 𝑾 𝒆 ドキュメントに付与された キーワード
  32. 32. 32 「ごちうさ‐リゼロ状態」の解決に向けて (2) モデル2号 𝑤𝑡 𝑤𝑡+𝑗 𝑾 𝑘 𝑑,1 𝑘 𝑑,𝑛 𝑾 𝒅 𝑤𝑡−2 𝑤𝑡−1 𝑤𝑡 𝑤𝑡+1 𝑤𝑡+2… … 𝑘 𝑑,1 𝑘 𝑑,𝑛 ドキュメントに付与された キーワード … sum CBOW Skip-gram 提案 ドキュメントに付与されたキーワードと単語を入力として 周辺単語を学習するモデル (かつキーワードを表すEmbeddingも同時に学習) 𝑾 𝒆 sum concat …
  33. 33. 33 「ごちうさ‐リゼロ状態」の解決に向けて (2) モデル3号 Rev.A 提案 𝑤𝑡 𝑤𝑡+𝑗 𝑾 𝑘 𝑑,𝑗 𝑾 𝒅 𝑾 𝒆 concat 基本的にはモデル2号と同じ モデル2号と比較してレイヤーが浅いため 𝑘 𝑑,𝑗の学習が進みやすいのではないか(という気持ち)
  34. 34. 34 「ごちうさ‐リゼロ状態」の解決に向けて (2) モデル3号 Rev.B 提案 𝑤𝑡 𝑤𝑡+𝑗 𝑾 𝑘 𝑑,𝑗 𝑾 𝒅 𝑾 𝒆 𝑾(FC) concat 基本的にはモデル2号と同じ Rev.Aと比較して、concat後に1層のFC層を挟むため 性能が改善するのではないか(という気持ち)
  35. 35. 35 「ごちうさ‐リゼロ状態」の解決に向けて (2) モデル3号 Rev.C 提案 𝑤𝑡 𝑤𝑡+𝑗 𝑾 𝑘 𝑑,𝑗 𝑾 𝒅 𝑾 𝒆 𝑾(FC) concat add 基本的にはモデル2号と同じ Rev.Bに加えて、FC層の後に (ResNetのような)Shortcut Connectionを加えたので 最悪でも従来のSkip-gramと同等の性能が保証されてほしい (という気持ち)
  36. 36. 36 提案モデルの学習 設定 • データセット(キーワード数で前処理済み) o ドキュメント数 100,000 記事 o 単語数 331,138 単語 o のべ単語数 49,187,387 単語 o キーワード数 47,751 個 • 主要なハイパーパラメータ o 窓幅:5 o 次元数:100 o 最小単語出現回数:5回 o 最小キーワード出現回数:5回
  37. 37. 37 提案モデルの学習 結果 モデル1号が「ごちうさ‐リゼロ状態」を解消!
  38. 38. 38 従来モデルと提案モデルの比較 従来手法 提案手法
  39. 39. 39 従来モデルと提案モデルの比較 従来手法 提案手法
  40. 40. 40 従来モデルと提案モデルの比較 従来手法 提案手法
  41. 41. 41 従来モデルと提案モデルの比較 従来手法 提案手法
  42. 42. 42 提案モデル 雑感 • 周辺文脈だけでなく ドキュメントのキーワードを考慮した 距離が算出できている o 用いたデータはキーワードの基準として アニメタイトルが多いため アニメ作品に関するドメインが考慮されている o キーワードをまたがるような 一般的な単語については 通常のword2vecで学習したものと同じ振る舞い 結果として アニメ作品を考慮した同義語辞書ができた印象
  43. 43. 43 提案モデルの評価 • データセット o ハッカドールに登録されている シノニム辞書 5600組を使用 • 評価手法 o コサイン類似度 o k近傍一致度 o 相互ランク • 評価対象 o 通常のSkip-gramモデル (Skip-gram) o 周辺単語の代わりにキーワードを用いた学習した Skip-gramモデル (Skip-gram Keyword) o 提案手法 (Skip-gram ModType A/B)
  44. 44. 44 提案モデルの評価手法 • コサイン類似度 シノニム組 𝑥, 𝑦 のコサイン類似度を集計 • k近傍一致度 シノニム組 𝑥, 𝑦 について それぞれのk-近傍をとった時の単語集合を𝑆 𝑥, 𝑆 𝑦とし 集合𝑺 𝒙と𝑺 𝒚の類似度を集計 o 𝑘 = 20とし類似度指標として重み付きJaccard係数を使用 𝐽 𝒙, 𝒚 = σ𝑖 min(𝒙𝑖, 𝒚𝑖) σ𝑖 max(𝒙𝑖, 𝒚𝑖) • 相互ランク シノニム組 𝑥, 𝑦 について以下の項目の平均値を集計 o 𝑥について類似度が高い順に単語を並べたときの𝒚の順位 o 𝑦について類似度が高い順に単語を並べたときの𝒙の順位
  45. 45. 45 提案モデルの評価結果 モデル名 コサイン 類似度 k近傍 一致度 相互ランク (平均) 相互ランク (中央値) 従来手法 0.4041 0.0660 9523.5263 892.0 キーワードの みモデル 0.5063 0.1918 5745.6675 22.5 モデル1号 0.5293 0.1923 4926.6754 19.0 モデル2号 0.3706 0.0532 14301.6743 2599.0 モデル3号 Rev.A 0.3348 0.0544 12626.5088 1696.0 モデル3号 Rev.B 0.3599 0.0616 11804.2098 1296.5 モデル3号 Rev.C 0.3585 0.0619 12003.0603 1292.0
  46. 46. 46 考察1: 相互ランクの値が大きい理由 • 全体的に相互ランクの値が大きい…? o モデル1号の相互ランクに関するヒストグラム 一部の低い点数の項目によって 順位が下がっている 平均: 4926
  47. 47. 47 考察1: 相互ランクの値が大きい理由 • 相互ランクの順位が低い項目の特徴 o 表記ゆれによる単語の重複 例:ニコ生, にこなま など o 評価データセットに古いデータが含まれている 例:(ワールドイズマイン, ワイズマ)など o 評価データセットに一般名詞が含まれている 例:(コメント, comment)など o 評価データセットにセリフ・その他が含まれている 例:(イチロー, 打ってみた)など
  48. 48. 48 考察1: 相互ランクの値が大きい理由 • 同じ単語で複数の意味を持つものが存在 例:私モテ, とある o 区別できていないためEmbeddingの性能も悪化 o 曖昧性解消、いわゆる「凛」状態にもつながる ⇒ (ナイーブな)アイデアのみ提案
  49. 49. 49 「凛状態」の解決に向けて 「どの凛を指しているかは キーワードと周辺文脈から区別できる」 という仮定をもとに以下のアルゴリズムで学習 1. キーワードごとに異なる「凛」となるように区別 2. Skip-gramモデルを学習 3. 1 epochごとに「凛」間の距離を測り 一定閾値以下であればマージ 4. 2. へ戻る 提案 (凛, アイマス) (凛, ラブライブ!) (凛, デレステ) (凛, アイマス, デレステ)
  50. 50. 50 考察2: モデル2号と3号のスコアが低い理由 • なぜモデル2号と3号のスコアが低いのか o モデル1号とキーワードのみは キーワード情報からのロスを受けて学習 ⇒ 2号と3号は周辺単語からのロスのみ o 2号と3号の学習に使用したキーワード情報は 本当に意味がなかったのか…?
  51. 51. 51 考察2: モデル2号と3号のスコアが低い理由 𝑤𝑡 𝑤𝑡+𝑗 𝑾 𝑘 𝑑,𝑗 𝑾 𝒅 𝑾 𝒆 𝑾(FC) concat 再掲 モデル3号 Rev.B 𝑊𝑒と𝑊𝑑の様子を見てみます
  52. 52. 52 考察2: モデル2号と3号のスコアが低い理由 モデル3号 Rev.Bの学習で得られた𝑾 𝒆では ドメインに特化しない一般的な単語ベクトルの 獲得が行われている印象 𝑊𝑒を単語ベクトルとして用いたときの様子
  53. 53. 考察2: モデル2号と3号のスコアが低い理由 モデル3号 Rev.Bの学習で得られた 𝑾 𝒅をキーワードベクトルとして使ってみると… ⇒ 何らかの知識が埋め込まれたベクトルが獲得できている!
  54. 54. 54 考察2: モデル2号と3号のスコアが低い理由 𝑤𝑡 𝑤𝑡+𝑗 𝑾 𝑘 𝑑,𝑗 𝑾 𝒅 𝑾 𝒆 𝑾(FC)concat モデル3号 Rev.B 𝑾 𝒅がアニメドメインに 関する知識を獲得 𝑾 𝒆が一般的な(ドメインに特化しない) 単語ベクトルを獲得 モデルの学習に役立つアニメドメインに関する知識は 𝑘 𝑑,𝑗からの入力を受け取る𝑾 𝒅が獲得しやすいため 𝑾 𝒆ではドメインに特化しない単語ベクトルの獲得が 行われたのではないか
  55. 55. 55 まとめ • アニメに関連した シノニムの自動獲得タスクに取り組んだ • 現状のデータセットにSkip-gramモデルを 適用した場合の問題点を把握し 改善するためのモデルを提案した • 実験の結果 従来のモデルよりも高い精度で アニメ作品を考慮した同義語辞書を獲得した • 今後の課題として Embedding学習時の曖昧性解消の必要性を言及した
  56. 56. 56 3週間で取り組んだ作業内容一覧 研究関連 • 先行研究の調査 • データセットの整形 • 既存のSkip-gramモデルの問題点の把握 • 提案モデルの実装と実験 • 提案モデルの評価 実装 • cupy.nonzerosにバグを見つけた (cupy/cupy#569) • Googleのword2vec実装を少し読み 一部の汎用的な機能をChainer exampleに移植 • デモアプリケーションを実装 1週間目 1週間目 2週間目 2週間目 3週間目 3週間目

×