Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
トピックモデルを活用したレコメンデーションの実装
Search
Takanobu Nozawa
February 25, 2021
1
6.4k
トピックモデルを活用したレコメンデーションの実装
2021/02/25に行われたコネヒトマルシェで発表したトピックモデルを活用したレコメンデーションについての資料です。
Takanobu Nozawa
February 25, 2021
Tweet
Share
More Decks by Takanobu Nozawa
See All by Takanobu Nozawa
低コストで実現する社内文書RAG機能を搭載したAIチャットボット開発
takapy
4
4k
コミュニティサービスに「あなたへ」フィードを リリースするまでの試行錯誤
takapy
1
1.2k
NLPを活用したオンボーディング改善とコールドスタート問題への対策
takapy
4
5.1k
自然言語可視化ライブラリ 「nlplot」のご紹介
takapy
3
4k
コミュニティサービスにおけるレコメンデーションの変遷とMLパイプラインについて
takapy
2
6.8k
SageMaker StudioとStep Functionsを用いてMLOpsへの一歩を踏み出そう
takapy
0
8.1k
GoogleColabとVSCodeを用いた分析環境運用Tips
takapy
15
14k
word2vecを利用した埋め込み分析とSWEMを用いた比較実験
takapy
0
2.3k
Streamlitとnlplotを使って自然言語を分析してみた
takapy
4
14k
Featured
See All Featured
How to Ace a Technical Interview
jacobian
276
23k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
13
670
Raft: Consensus for Rubyists
vanstee
137
6.9k
Gamification - CAS2011
davidbonilla
81
5.2k
Stop Working from a Prison Cell
hatefulcrawdad
268
20k
Faster Mobile Websites
deanohume
306
31k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
660
How to train your dragon (web standard)
notwaldorf
90
6k
Designing for Performance
lara
608
69k
YesSQL, Process and Tooling at Scale
rocio
172
14k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
104
19k
Reflections from 52 weeks, 52 projects
jeffersonlam
349
20k
Transcript
τϐοΫϞσϧΛ׆༻ͨ͠ Ϩίϝϯσʔγϣϯͷ࣮ Takanobu Nozawa 2021.02.25 ίωώτϚϧγΣΦϯϥΠϯʮػցֶशɾσʔλੳʯ
ࣗݾհ ػցֶशͷऔΓΈ ϚϚϦͷݱঢ়ͱ՝ τϐοΫϞσϧͱ τϐοΫϞσϧΛ׆༻ͨ͠Ϩίϝϯσʔγϣϯ
࠷ޙʹ ΞδΣϯμ
ࣗݾհ
໊લɿᖒরʢ/P[BXB5BLBOPCVʣ ॴଐɿίωώτגࣜձࣾ ɹɹɿ͔ͨͺ͍!UBLBQZ w ػցֶशʢ/-1ɺਪનγεςϜʣΛϝΠϯʹΓͭͭ"84ͱٔΕ͍ͯ·͢ w ٳσʔλੳίϯϖͨ͠ΓɺϒϩάʢIUUQTXXXUBLBQZXPSLʣॻ͍ͨΓɺ ٿͨ͠Γɺϥʔϝϯ৯ͨΓ͍ͯ͠·͢ w ϙουΩϟετ🎙
͡Ί·ͨ͠ˠ!HFG@GNʢIUUQTUXJUUFSDPNHFG@GNʣ ࣗݾհ
αʔϏεհͱػցֶशͷऔΓΈ αʔϏεͷ֓ཁؚΊͯ ͍͔ͭ͘ϐοΫΞοϓͯ͠͝հ
ϚϚϦʹ͍ͭͯ lΈzͱzڞײzΛ࣠ʹϚϚʹدΓఴ͍ ΞϓϦɾ8FCɾ4/4ͱଟ֯తʹαʔϏεΛల։͍ͯ͠·͢
ίϛϡχςΟݕӾ FH ؆୯ʹՔ͙ํ๏ڭ͑·͢⭐ ͜ͷߘͷ֬Ͱ ෆదͳίϯςϯπͰ͢⚠ Ϟσϧ͕ෆదͱఆͨ͠ͷ͚ͩ Λਓ͕ؒࢹͰ֬ೝ
ίϛϡχςΟݕӾ FH ؆୯ʹՔ͙ํ๏ڭ͑·͢⭐ ͜ͷߘͷ֬Ͱ ෆదͳίϯςϯπͰ͢⚠ Ϟσϧ͕ෆదͱఆͨ͠ͷ͚ͩ Λਓ͕ؒࢹͰ֬ೝ ίετݮ
ΧςΰϦͷྨਪ ߘ༰͔Βࣗಈతʹ ΧςΰϦΛαδΣετ
ΧςΰϦͷྨਪ ߘ༰͔Βࣗಈతʹ ΧςΰϦΛαδΣετ ࣭ͷ$7্
هࣄͷϨίϝϯσʔγϣϯ ͻͱΓͻͱΓͷߦಈཤྺ͔Β ͓͢͢ΊͷهࣄΛϨίϝϯυ
هࣄͷϨίϝϯσʔγϣϯ ͻͱΓͻͱΓͷߦಈཤྺ͔Β ͓͢͢ΊͷهࣄΛϨίϝϯυ $53্
ϓϩμΫτʹରͯ͠ੵۃతʹ ػցֶशΛಋೖ͍ͯ͠·͢💪
ϚϚϦͷݱঢ়ͱ՝ ͳͥɺ࣭ϨίϝϯυΛΔ͜ͱʹͳͬͨͷ͔
ϚϚϦͷݱঢ়ͱ՝ ݱঢ় w ͷ$.ΛڥʹϢʔβʔج൫͕֦େɻͦ͜ͰϥΠτϢʔβʔ૿͑ɺϢʔβʔͷ ଟ༷Խ͕ਐΈɺ݁Ռͱͯ͠ɺϚϚϦͷظʢ㲈ϚϚϦ͕ղܾ͖͢՝ʣଟछ ଟ༷ʹͳͬͨɻ ੜ·Ε͖ͯͨʢʹղܾ͍ͨ͠ʣ՝ w χονͳ՝ͷ૯ྔ͕૿͑ɺଟ༷ͳՁ؍ߟ͑ํ͕ަࡨ͢ΔॴͱมԽ͠ɺ୯Ұ తͳΞϓϩʔνʢྫઌഐϚϚ͔ͩΒޙഐϚϚʹճग़དྷΔʣͰྔͱ݈શੑΛҡ
࣋͢Δ͜ͱ͕͘͠ͳ͖ͬͯͨɻͦΕʹରͯ͠ݱࡏͷϧʔϧϕʔεͷΞϓϩʔνͰ ղܾ͕͍͠ɻ
ϚϚϦͷݱঢ়ͱ՝ Ծઆ w ػցֶशʹΑΔύʔιφϥΠζϨίϝϯσʔγϣϯΛ׆༻͢Δ͜ ͱͰɺϢʔβʔͷଟ͘ͷ՝Λղܾ͠ɺαʔϏεͷྔͱ݈શੑΛ ্ͤ͞ΒΕΔͷͰͳ͍͔ɻ ࣭ͷϨίϝϯσʔγϣϯΛ࣮
ϚϚϦͷݱঢ়ͱ՝ Ծઆ w ػցֶशʹΑΔύʔιφϥΠζϨίϝϯσʔγϣϯΛ׆༻͢Δ͜ ͱͰɺϢʔβʔͷଟ͘ͷ՝Λղܾ͠ɺαʔϏεͷྔͱ݈શੑΛ ্ͤ͞ΒΕΔͷͰͳ͍͔ɻ ࣭ͷϨίϝϯσʔγϣϯΛ࣮ ຊࢿྉͰɺ͍͔ͭ͘ࢪࡦΛߦͬͨதͰɺ τϐοΫϞσϧΛ׆༻ͨ͠ Ϩίϝϯσʔγϣϯʹ͍͓ͭͯ͠·͢
τϐοΫϞσϧͱ
τϐοΫϞσϧͱ w จॻ͕ෳͷજࡏతͳτϐοΫ͔Β֬తʹੜ͞ΕΔͱԾఆͨ͠Ϟσϧ ʢจॻͷ֤୯ޠ͋ΔτϐοΫ͕࣋ͭ֬ʹैͬͯग़ݱ͢ΔͱԾఆʣ w ͜͜Ͱ͍͏ʮτϐοΫʯͱͷओͷ͜ͱͰɺಉ͡ʹ͍͍ͭͯͯ͠ ͯɺਓʹΑͬͯղऍ͕มΘΔ͜ͱ͕͋Δ w ༗໊ͳͷͩͱҎԼͷΑ͏ͳख๏͕͋Δ w
-4*ʢ-BUFOU4FNBOUJD*OEFYʣ w 1-4*ʢ1SPCBCJMJTUJD-BUFOU4FNBOUJD*OEFYJOHʣ w -%"ʢ-BUFOU%JSJDIMFU"MMPDBUJPOʣ
τϐοΫϞσϧͱ w ϞσϧͷʮτϐοΫͷʯͱʮτϐοΫͷϥϕϧʯਓ͕ܾؒΊΔඞཁ͕͋Δ w ྫ͑τϐοΫͷΛͱࢦఆͯ͠ϞσϦϯάͨ͠߹ɺͦͷϞσϧʹԿ͔͠ ΒͷจॻΛ͢ͱɺग़ྗͱͯ̏ͭ͠ͷτϐοΫͦΕͧΕͷ͕֬ಘΒΕΔ จॻ Topic1 Topic2 Topic3
͋ͱ1ٿͰϊʔώοτϊʔϥϯ… 0.7 0.1 0.2 ͻͱΓੈଳʹʮྟ࣌ಛผڅۚʯ… 0.1 0.8 0.1 ̢ʵ̍ԦऀϚξΧϧϥϒϦʔ… 0.3 0.1 0.6 ্هͷ߹ɺ5PQJDεϙʔπɺ5PQJDܦࡁɺ5PQJDΤϯλϝ ͱ͍ͬͨղऍਓ͕͓ؒ͜ͳ͏ඞཁ͕͋Δ
τϐοΫϞσϧΛ׆༻ͨ͠Ϩίϝϯσʔγϣϯ τϐοΫϞσϧͷఆੑධՁ͔ΒϨίϝϯσʔγϣϯͷԠ༻
ͳͥτϐοΫϞσϧΛ͓͏ͱࢥ͔ͬͨ w ϚϚϦͰ݄ؒͰສ݅΄Ͳͷ2"͕ߘ͞Ε͍ͯΔ w ྫ͑ۙϲ݄ͷσʔλΛਪનରͱͯ͠ɺਪનର͕͔݅ͳΓଟ͍ w Ϣʔβʔͷͬ͘͟Γͨ͠ᅂΛਪఆͰ͖Εɺਪનରͷ࣭Λ͋Δఔߜͬ ্ͨͰɺ࠷ޙʹϥϯΩϯά͚ͯ͠Ϩίϝϯσʔγϣϯ͢Δɺͱ͍ͬͨ͜ͱ͕ Ͱ͖Δ ˠ:PV5VCFͳͲͰ̎ஈ֊ͷਪનγεςϜΛߏங͍ͯ͠Δͱ͍ͬͨจʢ˞ʣ
˞IUUQTSFTFBSDIHPPHMFQVCTQVC
ͳͥτϐοΫϞσϧΛ͓͏ͱࢥ͔ͬͨ w ϢʔβʔͷᅂΛਪఆͰ͖ΔσʔλͷͭʹʮΧςΰϦʯ͕͋Δ ˠྫ͑ʮࢠҭͯʯΧςΰϦΛΑ͘Έ͍ͯΔϢʔβʔʮࢠҭͯʯʹڵຯ͕͋Δͱ ਪఆͰ͖Δ w ͔͠͠ɺಉ͡ΧςΰϦͰߘ͞ΕΔ༰ҟͳ͍ͬͯΔ͜ͱ͕ଟ͍ ˠԼهͲͪΒʮࢠҭͯʯΧςΰϦʹߘ͞Ε࣭͕ͨͩໟ৭͔ͳΓҧ͏ɻ lͲͷΧςΰϦͷ࣭ΛΑ͘Έ͍ͯΔ͔z͚ͩͰɺϢʔβʔ͕ͲΜͳ͜ͱʹΜͰ͍ Δͷ͔ਪఆ͢Δͷࠔ
ͳͥτϐοΫϞσϧΛ͓͏ͱࢥ͔ͬͨ w ϢʔβʔͷᅂΛਪఆͰ͖ΔσʔλͷͭʹʮΧςΰϦʯ͕͋Δ ˠྫ͑ʮࢠҭͯʯΧςΰϦΛΑ͘Έ͍ͯΔϢʔβʔʮࢠҭͯʯʹڵຯ͕͋Δͱ ਪఆͰ͖Δ w ͔͠͠ɺಉ͡ΧςΰϦͰߘ͞ΕΔ༰ҟͳ͍ͬͯΔ͜ͱ͕ଟ͍ ˠԼهͲͪΒʮࢠҭͯʯΧςΰϦʹߘ͞Ε࣭͕ͨͩໟ৭͔ͳΓҧ͏ɻ lͲͷΧςΰϦͷ࣭ΛΑ͘Έ͍ͯΔ͔z͚ͩͰɺϢʔβʔ͕ͲΜͳ͜ͱʹΜͰ͍ Δͷ͔ਪఆ͢Δͷࠔ
τϐοΫϞσϧͰϢʔβʔͷᅂΛ ਪఆͰ͖Δ͔ੳͯ͠Έͨ
τϐοΫϞσϧͷఆੑνΣοΫᶃ w -%"Λ༻͍ͯϞσϦϯάΛ࣮ࢪ w τϐοΫ$PIFSFODFͱ1FSQMFYJUZͷ͔Β ܭࢉͯ͠ઃఆ w ࠨਤҰ෦Λൈਮͨ͠ͷ͕ͩɺྑ͍ײ͡ʹτϐ οΫׂ͕͞Ε͍ͯΔ͜ͱ͕ఆੑతʹஅͰ͖Δ ྫɿ
ɹ5PQJDɿ͓ۚ 5PQJDɿอҭԂɾ༮ஓԂ 5PQJDɿίϩφ 5PQJDɿॅ·͍
τϐοΫϞσϧͷఆੑνΣοΫᶄ w Կਓ͔ͷϢʔβʔΛαϯϓϦϯάͯ͠ఆੑతʹσʔλΛੳ w Լهɺ͋ΔϢʔβʔͷ࣭ӾཡϩάΛ༻͍ͨڵຯτϐοΫͷભҠΛද͍ͯ͠Δ ˠτϐοΫʢग़࢈ʣ݄ޙʹ͚ͯӈݞ্͕ΓͰɺ͕ϐʔΫ ˠτϐοΫʢ௨Ӄʣ͕ɺ݄಄ͱޙʹߴ͍Λ͚͍ͭͯΔ
τϐοΫϞσϧͷఆੑνΣοΫᶄ w Կਓ͔ͷϢʔβʔΛαϯϓϦϯάͯ͠ఆੑతʹσʔλΛੳ w Լهɺ͋ΔϢʔβʔͷ࣭ӾཡϩάΛ༻͍ͨڵຯτϐοΫͷભҠΛද͍ͯ͠Δ ˠτϐοΫʢग़࢈ʣ݄ޙʹ͚ͯӈݞ্͕ΓͰɺ͕ϐʔΫ ˠτϐοΫʢ௨Ӄʣ͕ɺ݄಄ͱޙʹߴ͍Λ͚͍ͭͯΔ
τϐοΫϞσϧͷఆੑνΣοΫᶄ w ࠓճͷϢʔβʔ݄ʹग़࢈Λ߇͍͑ͯͨͷͰɺͦΕʹ߹Θͤͯ ग़࢈τϐοΫͷ࣭ΛݟΔΑ͏ʹͳ͍ͬͯͬͨՄೳੑ͋Γͦ͏ ˠʮʢग़࢈ʣɺʢ௨Ӄʣʯ͋ͨΓͷτϐοΫʹڵຯ͕͋Δͱ͍͏͜ͱɺఆੑత ʹஅͯ͠ѱ͘ͳ͍ w ͜ͷΑ͏ͳ͜ͱΛෳϢʔβʔͰ܁Γฦ͠ɺఆੑతʹஅ ݄ʹग़࢈͍ͯ͠Δ ग़࢈τϐοΫ
௨ӃτϐοΫ ௨ӃτϐοΫ
τϐοΫϞσϧͷఆੑνΣοΫᶄ w ࠓճͷϢʔβʔ݄ʹग़࢈Λ߇͍͑ͯͨͷͰɺͦΕʹ߹Θͤͯ ग़࢈τϐοΫͷ࣭ΛݟΔΑ͏ʹͳ͍ͬͯͬͨՄೳੑ͋Γͦ͏ ˠʮʢग़࢈ʣɺʢ௨Ӄʣʯ͋ͨΓͷτϐοΫʹڵຯ͕͋Δͱ͍͏͜ͱɺఆੑత ʹஅͯ͠ѱ͘ͳ͍ w ͜ͷΑ͏ͳ͜ͱΛෳϢʔβʔͰ܁Γฦ͠ɺఆੑతʹஅ ݄ʹग़࢈͍ͯ͠Δ ग़࢈τϐοΫ
௨ӃτϐοΫ ௨ӃτϐοΫ ఆੑతʹྑͦ͞͏ ˠϨίϝϯσʔγϣϯʹ׆༻ͯ͠ΈΔ
τϐοΫϞσϧΛ׆༻ͨ͠Ϩίϝϯσʔγϣϯ
τϐοΫϞσϧΛ׆༻ͨ͠Ϩίϝϯσʔγϣϯ
τϐοΫϞσϧΛ׆༻ͨ͠Ϩίϝϯσʔγϣϯ w ߦྻղ3BUJOHߦྻΛVTFSͷಛྔߦྻʢ1ʣͱJUFNͷಛྔߦྻ ʢ2ʣʹղ͢Δख๏ w ྫ͑ɺNਓͷϢʔβʔͱOݸͷΞΠςϜΛߟ͑ͨͱ͖ʹɺNLͰ ͋ΔL࣍ݩʹ࣍ݩݮͯ͠ม͢Δ͜ͱΛతͱ͢Δ
τϐοΫϞσϧΛ׆༻ͨ͠Ϩίϝϯσʔγϣϯ w UG&NCFEEJOHΛ༻͍Δ͜ͱͰɺL࣍ݩͷຒΊࠐΈΛදݱ ʢωοτϫʔΫӈԼਤͷΑ͏ͳΠϝʔδʣ w ԼهࣜͰϢʔβʔͷᅂ͕είΞϦϯάͰ͖ΔͱԾఆֶͯ͠श rij = vi ⋅
vj + bi + bj SJKɿϢʔβJʹΑΔΞΠςϜKʹର͢ΔධՁ CJɿϢʔβJʹΑΔධՁͷόΠΞε CKɿΞΠςϜKʹର͢ΔධՁͷόΠΞε WJɿϢʔβJͷಛϕΫτϧ WKɿΞΠςϜKͷಛϕΫτϧ WJ⋅WKɿϢʔβJͱΞΠςϜKͷಛϕΫτϧͷੵ
݁Ռ
݁Ռ w τϐοΫϞσϧΛ׆༻ͨ͠ϨίϝϯσʔγϣϯͷϦϦʔεͨ݁͠Ռɺ ϦϦʔεલޙฏۉͰ্🎉 ʢݱࡏ"#ςετதʣ ϦϦʔε ϦϦʔεલޙͷ 10ؒฏۉ U
݁Ռ w τϐοΫϞσϧΛ׆༻ͨ͠ϨίϝϯσʔγϣϯͷϦϦʔεͨ݁͠Ռɺ ϦϦʔεલޙฏۉͰ্🎉 ʢݱࡏ"#ςετதʣ ϦϦʔε ϦϦʔεલޙͷ 10ؒฏۉ U χίχί🥰
·ͱΊ
·ͱΊ w Ϣʔβʔͷ࣭Ӿཡߦಈ͔ΒɺͦͷϢʔβʔͷڵຯؔ৺ͷ͋Δτϐ οΫΛਪఆͯ͠Έͨ݁Ռɺྑ͍݁Ռ͕ಘΒΕͨ ˠࣾʹੳ݁ՌΛڞ༗͠ɺࠓ·Ͱݟ͑ͯ͜ͳ͔ͬͨσʔλͷ ΓޱΛ։Ͱ͖ͨ w τϐοΫϞσϧΛ׆༻ͨ͠ϨίϝϯσʔγϣϯΛߦ͏͜ͱͰɺϕʔ εϥΠϯΑΓ΄Ͳͷվળ͕ݟࠐΊͨ🎉 w
Ϩίϝϯσʔγϣϯָ͍͠😆
࠷ޙʹ
.-ΤϯδχΞઈࢍืूதͰ͢ʂ🧑💻 ɾϥΠϑΠϕϯτ ϥΠϑελΠϧͷ՝ղܾΛ͢ΔαʔϏεʹڵຯ͕͋Δํ ɾػցֶशͷࣾձ࣮ ϓϩμΫτ։ൃʹڵຯͷ͋Δํ %.PSͦ͘ΊΜ܅ܦ༝PS8BOUFEMZܦ༝ͳͲ͝࿈བྷ͓͍ͪͯ͠·͢ʂ ΧδϡΞϧ໘ஊͰ͑ΒΕΔൣғͰͳΜͰ͑·͢ʂʢಛʹ४උ͍Γ·ͤΜʣ 5XJUUFSˠIUUQTUXJUUFSDPNUBLBQZ 8F`SF)JSJOH
ձࣾͱͯ͠ظ͞Ε͍ͯΔͰ͢ ֓ཁ ɹɾҰਓʹҰਓʹ࠷దԽ͞ΕͨใΛσʔλػցֶशΛ༻͍ͯఏڙ͢Δ ͳͥΔͷ͔ʁ ɹɾ୯ҰͷใΛϒϩʔυΩϟετ͢ΔͷͰͳ͘ɺͦΕͧΕͷՈʹدΓఴͬͨใΛఏڙ͢ΔͨΊ ɹɾΞηοτͰ͋ΔେྔͷඇߏԽσʔλΛ׆༻͢ΔͨΊ Ͳ͏Δͷ͔ʁʢऔΓΜͰ͍Δ͜ͱݕ౼͍ͯ͠Δ͜ͱʣ ɹɾϨίϝϯυΤϯδϯͷ։ൃ ɹɾʮ"DUJPOBCMFʯͳσʔλج൫ͷߏஙFUD
͓ΘΓ ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ