Upgrade to Pro — share decks privately, control downloads, hide ads and more …

検索結果の良さを計測して定量的に改善していく

7fefbc0ddbb13f3bfde050f85acfa0c4?s=47 ota42y
December 15, 2018

 検索結果の良さを計測して定量的に改善していく

7fefbc0ddbb13f3bfde050f85acfa0c4?s=128

ota42y

December 15, 2018
Tweet

Transcript

  1. ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ ఆྔతʹվળ͍ͯ͘͠ Server side engineer @ota42y

  2. 3ͭͷ࣭໰

  3. 1/3 ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ 3ͭͷ࣭໰

  4. 2/3 ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ 3ͭͷ࣭໰

  5. BEFORE AFTER 3/3 ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ 3ͭͷ࣭໰

  6. ࠷ޙ͚ͩҙݟׂ͕ΕΔ ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ 3ͭͷ࣭໰

  7. “΋ͷ͞͠”Λ୳ͦ͏

  8. ɾಉ͡ʮ΋ͷ͞͠ʯͳΒಉ͡ൺֱ݁Ռ ɾಉ͡ೝࣝΛڞ༗Ͱ͖Δ Կ͔ͷج४ʮ΋ͷ͞͠ʯΛ࢖ͬͯൺֱ ମॏ ڑ཭ ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “΋ͷ͞͠”Λ୳ͦ͏

  9. ɾܧଓ཰ ɾετʔϦʔϙΠϯτ ɾॲཧ࣌ؒ ࢓ࣄʹ࢖͏ʮ΋ͷ͞͠ʯ͸ͨ͘͞Μ͋Δ ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “΋ͷ͞͠”Λ୳ͦ͏

  10. ɾͬͪ͜ͷํ͕ͳΜ͔͍͍ ɾ͋ͱগ͠ͰऴΘΓ·͢ ɾྑ͍ײ͡ʹ࣮૷͠ͱ͍ͯ ň΋ͷ͞͠ʯ͕ͳ͍ͱೝࣝͷζϨ͕ى͖Δ → ίϛϡχέʔγϣϯϛε ਓʹΑͬͯೝ͕ࣝζϨ΍͍͢ ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “΋ͷ͞͠”Λ୳ͦ͏

  11. ň΋ͷ͞͠ʯ͸ศར ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “΋ͷ͞͠”Λ୳ͦ͏

  12. ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “΋ͷ͞͠”Λ୳ͦ͏ ܧଓ཰DAU, ച্, རӹ, ౤ߘ਺, ϨϏϡʔͷ఺, ໰͍߹Θͤ਺ PV਺, ΫϦοΫ਺,

    ฏۉߪങֹۚ, όά਺ etc… ܭΓ΍͍͢΋ͷ ܭΓʹ͍͘΋ͷ Ξχϝʔγϣϯͷྑ͞, ͔ͬ͜Α͞, Θ͔Γ΍͢͞, ϥϯΩϯάͷྑ͞, Ϣʔβͷຬ଍౓ɾෆຬ౓ɾ๞͖۩߹ etc…
  13. ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “΋ͷ͞͠”Λ୳ͦ͏ ɾࣗ෼ͷ࣋ͭʮ΋ͷ͞͠ʯ͕ରԠͰ͖ͳ͍࣌ ɾརӹ΍ച্ͱ͔Ͱؒ઀తʹܭΕΔ͚Ͳ…Կϲ݄͔͔Δʁ ܭΓʹ͍͘έʔεʹग़͘Θ͔͢΋

  14. ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “΋ͷ͞͠”Λ୳ͦ͏ ɾ୳͠ํͷ࣮ྫΛ঺հ ɹ— ೉͍͠໰୊΋ಉ͡ೝࣝͰ࿩ͤΔ ɹ— ྑ͍ѱ͍Λૉૣ͘൑அͰ͖Δ ɹ— ࣗಈԽͷԸܙ΋ಘΒΕΔ ࣗ෼Ͱɺඞཁͳʮ΋ͷ͞͠ʯΛ୳ͦ͏

  15. ࣗݾ঺հ

  16. גࣜձࣾFiNC Technologies — αʔόʔαΠυΤϯδχΞ @ota42y → Twitter, GitHub ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ ࣗݾ঺հ

    ۀ຿ — rubyͱ͔rustͱ͔goͱ͔C++ͱ͔ — αʔόϨεͨ͠Γ — GPUͰ༡ΜͩΓ — ػցֶशͨ͠Γ — ElasticSearchͨ͠Γ৭ʑ…
  17. എܠઆ໌

  18. ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ എܠઆ໌

  19. ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ എܠઆ໌

  20. ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ എܠઆ໌ ɾ඼໨DBͷσʔλΛొ࿥ ɾ໊લΛݕࡧͯ͠બͿ ඼໨ొ࿥

  21. ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ എܠઆ໌ ݕࡧγεςϜ

  22. → ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ എܠઆ໌ ɾσʔλࣗମ͸݁ߏ͋Δ ୳ͯ͠Δσʔλ͕ ͳ͔ͳ͔ݟ͔ͭΒͳ͍ ɹɾ20ສ݅͘Β͍ ɹɾશ͘ݟ͔ͭΒͳ͍ମݧʹ͸ͳΒͳ͍͸ͣ ྑ͍ݕࡧΛఏڙ͍ͨ͠ʂ ɾΑ͘ݟΔͱԼͷํʹग़͍ͯΔ

    ɹɾ̏̌൪໨ͱ͔
  23. ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ എܠઆ໌ ɾ͋Δ1ͭͷ݁Ռͷྑ͞͸ͳΜͱͳ͘Θ͔Δ ɾਓʹΑͬͯྑ͞ͷج४͕ҧ͏ ɾଞͷΫΤϦ΁ͷѱӨڹ΋ௐ΂͖Εͳ͍ ɹ — ຯḩϥʔϝϯͷॱҐΛ্͛ΔͨΊʹຯḩͷॏΈΛ্͛Δ ɹ— ผͷΫΤϦͰຯḩΧπ΍ຯḩ͓ͰΜ͕1൪্ʹ…

    ྑ͍ݕࡧͱ͸Կ͔? ͦͯ͠Ͳ͏ܭΔͷ͔?
  24. ɾňྑ͘ͳͬͨؾ͕͢Δʯͱ͔͠ݴ͑ͳ͍ ɾ࣮૷΍είΞͷॏΈ෇͚͕ਖ਼͍͔͠ղΒͳ͍ ɾશମͱͯ͠ࠅ͘ͳ͍ͬͯΔՄೳੑ͸े෼ʹ͋Δ ݕࡧ݁Ռͷʮ΋ͷ͞͠ʯ͕ͳ͍ ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ എܠઆ໌

  25. ɾ݁Ռ͕Θ͔Δͷ͸͕͔࣌ؒͨͬͯΒ ɹ— ѱ͍ঢ়ଶͷΞϓϦΛϢʔβʹఏڙͯ͠͠·͏ ɾී௨͸ѱ͍΋ͷΛੈʹग़͢͜ͱ͸ແ͍ ɹ— ͋Δఔ౓ྑ͍֬৴Λ࣋ͬͯϢʔβʹग़͢ ɹ— ࠓճ͸ྑ͍͔ѱ͍͔Θ͔Βͳ͍ ɹɹɹ— ѱ͍΋ͷΛੈʹग़ͯ͠͠·͏ύλʔϯ΋͋Δ

    Ϣʔβͷ൓ԠΛݟΔ͔? ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ എܠઆ໌
  26. ɾͲΕ͘Β͍ྑ͘ͳ͔͕ͬͨΘ͔Δ ɾಉ͡ج४Λڞ༗Ͱ͖Δ ɾѱ͍ঢ়ଶͰϦϦʔε͢ΔͷΛආ͚ΕΔ ɹ— ଟ͘ͷݕࡧ݁Ռ͕ྑ͘ͳͬͯΔͱΘ͔Δ ň΋ͷ͞͠ʯ͕͋Ε͹ ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ എܠઆ໌ 75఺ Έ͍ͨͳ

  27. ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ എܠઆ໌ ň΋ͷ͞͠ʯ͕ཉ͍͠

  28. “΋ͷ͞͠”Λ༻ҙ͢Δ

  29. ɾͦͷܭΓํ͸͖ͪΜͱྑ͞Λ൓ө͍ͯ͠Δ? ɾಛఆͷύλʔϯͰมʹͳͬͨΓ͠ͳ͍͔ ň΋ͷ͞͠ʯΛθϩ͔Β࡞Δͷ͸େม ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “΋ͷ͞͠”Λ༻ҙ͢Δ

  30. ɾ͜ͷΞϓϦݻ༗ͷ໰୊…Ͱ͸ແͦ͞͏ ɾ৘ใݕࡧ͸৘ใՊֶͷதͰ΋Ұେ෼໺ ɹ— ਺े೥ͷྺ࢙͕͋Δ ɹ— ΫΤϦͰର৅ͷจॻΛ୳͢ύλʔϯ͸සग़ ɹ— ݕࡧϥϯΩϯά΋ఆྔԽࢦඪ͕͋Δ աڈʹ୭͔͕௚໘͍ͯ͠Δ໰୊ͷ͸ͣ ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠

    “΋ͷ͞͠”Λ༻ҙ͢Δ
  31. ɾզʑͷ໰୊Λաڈͷ໰୊ʹϚοϐϯά͍ͨ͠ ɾաڈͷ੒ՌΛదԠͰ͖Δ ɾň΋ͷ͞͠ʯͷಘखෆಘख΋͋Δఔ౓Θ͔Δ ڊਓͷݞʹ৐Γ͍ͨ ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “΋ͷ͞͠”Λ༻ҙ͢Δ ࣗ෼ୡͷ໰୊ΛϚοϐϯάͰ͖Δ͔?Λߟ͑Δ

  32. ɾϢʔβ͕ΫΤϦΛೖྗ ɾෳ਺ͷจॻΛ݁ՌͰฦ͢ ɾϢʔβ͕ΫϦοΫͨ͠ෳ਺ͷ΋ͷ͕ਖ਼ղ Ұൠతͳจॻݕࡧͷ֓೦ ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “΋ͷ͞͠”Λ༻ҙ͢Δ

  33. ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “΋ͷ͞͠”Λ༻ҙ͢Δ ɾݕࡧ୯ޠΛೖྗ͠ɺ඼໨ͷϦετΛฦ͢ ɾϢʔβ͸඼໨ΛબΜͰొ࿥͢Δ ɾొ࿥͢Δ඼໨͸(ଟͯ͘)1ͭ ɹ— ͦ΋ͦ΋ཉ͍͠෺͕ແ͍ύλʔϯ΋͋Γ͏Δ ɹ— Ұ୴͸ແࢹͯ݁͠ՌͷϥϯΩϯάʹ஫ྗ ࠓճͷػೳ

  34. ɾࠓճͷػೳ͸จॻݕࡧͷҰ෦ʹͰ͖Δ ɹ— ඼໨໊͚͕ͩॻ͔ΕͨจॻͱΈͳ͢ ɹ— ొ࿥͞Εͨ඼໨Λ།Ұͷਖ਼ղͱΈͳ͢ ໰୊ΛϚοϐϯά͢Δ ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “΋ͷ͞͠”Λ༻ҙ͢Δ ɾਖ਼ղσʔλ΋͋Δఔ౓ϩά͔Β࡞ΕΔ ɹ—

    ݕࡧ୯ޠͱ݁ՌͷॱҐΛϩάΛอଘ͢Δ ɹ— ొ࿥ͨ࣌͠ʹݕࡧϩάͱ͖ͭ͋ΘͤΔ ɹ— ͋ΔݕࡧͰԿ͕ొ࿥͞Εͨʢʹਖ਼ղ͔ʣղΔ
  35. طଘͷʮ΋ͷ͞͠ʯ͕࢖͑ͦ͏ ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “΋ͷ͞͠”Λ༻ҙ͢Δ

  36. “΋ͷ͞͠”ΛબͿ

  37. MRR (Mean Reciprocal Rank) ࠷ॳʹͰͨਖ਼ղͷΈΛߟྀ͢ΔධՁख๏ ݕࡧ݁ՌͷධՁख๏ͱͯ͠MRRΛ࠾༻ ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “΋ͷ͞͠”ΛબͿ

  38. ɾ֓೦͕؆୯Ͱଟ͘ͷਓ͕ཧղ͠΍͍͢ ɾ݁Ռ͕୯Ұͷ਺ࣈͳͷͰγϯϓϧ ɾ࣮૷ָ͕Ͱૣ͘վળͰ͖Δ ɾਖ਼ղ͕1ͭͳͷͰܽ఺ͷ1ͭ͸ແࢹͰ͖Δ ɹ— ࠷ॳͷਖ਼ղ͔͠ݟͳ͍͕ɺ࠷ॳ͔͠ͳ͍ ɹ— ෳ਺ߟྀ͢ΔMAPͱಉ݁͡ՌʹͳΔ͸ͣ ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “΋ͷ͞͠”ΛબͿ

    ख๏બఆཧ༝
  39. ň΋ͷ͞͠ʯΛखʹೖΕͨ ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “΋ͷ͞͠”ΛબͿ

  40. “΋ͷ͞͠”Λ࢖ͬͯվળ

  41. ɾݱࡏͷঢ়ଶΛܭΔ ɾվળํ๏Λߟ͑Δ ɾࢼ͢ ɾ݁ՌΛʮ΋ͷ͞͠ʯͰܭΔ ɾϦϦʔε͢Δ ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “΋ͷ͞͠”Λ࢖ͬͯվળ ͲͷΑ͏ʹվળ͍ͯ͘͠ͷ͔

  42. ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “΋ͷ͞͠”Λ࢖ͬͯվળ ݱࡏͷঢ়ଶΛܭΔ ɾొ࿥͞Εͨ඼໨ͷ্Ґ2000݅Λ࢖ͬͯMRRΛܭࢉ ɹ— શ෦ߟྀ͢Δͷ͸๲େ ɹ— ૯ొ࿥਺ͷ͔ͳΓͷׂ߹Λ઎ΊΔ্ҐʹߜΔ ɹɹ —

    ԼҐͷӨڹ͸খ͍͞ͷͰ… ɾ݁Ռͱͯ͠MRR=0.55͙Β͍ ɹ— ݕࡧϩάͱొ࿥ϩά͔Βਖ਼ղΛܭࢉͰ͖Δ ɹ— ݕࡧϩά͔ΒॱҐΛऔΓग़͠MRRΛܭࢉ͢Δ
  43. ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “΋ͷ͞͠”Λ࢖ͬͯվળ վળํ๏Λߟ͑Δ ɾMRRΛ্ঢͤ͞Ε͹ྑ͘ͳͬͨͱݴ͑Δ ɾ্ঢ͢ΔύϥϝʔλΛߟ͑Δ ɹ— ݕࡧ෦෼͸Elasticsearch ɹɹɹ— ύϥϝʔλΛมߋ͢ΔͱϥϯΩϯά͕͍͡ΕΔ ɹɹɹ—

    ͲͷཁૉͷॏΈΛॏ͘͢Δ͔ ɹɹɹ— ొ࿥਺ɺ඼໨ͷଐੑɺetc…
  44. ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “΋ͷ͞͠”Λ࢖ͬͯվળ ࢼ͢ ɾElasticsearchͷύϥϝʔλͷॏΈΛม͑Δ ɹ— ύϥϝʔλ͸શ෦ొ࿥ ɹ— ݕࡧΫΤϦͰॏΈΛม͑Δ ɹ— MRR͕େ͖͘ͳΔॏΈͷ૊Έ߹ΘͤΛߟ͑Δ

  45. ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “΋ͷ͞͠”Λ࢖ͬͯվળ ɾΑ͍ॏΈ(ύϥϝʔλ)ͷ૊߹ͤ୳ࡧ͸ػցֶशܥͩͱසग़ ύϥϝʔλͷ૊߹ͤΛ୳ࡧ͢Δ ɾHyperopt ɹ— ྑ͍ύϥϝʔλΛ୳ࡧ͢ΔPythonϥΠϒϥϦ ɹ— MRR͕ྑ͘ͳΔΑ͏ʹ୳ࡧΛߦ͏ ɹɹ

    — ElasticsearchʹΫΤϦΛ౤͛ͯMRRΛܭࢉͯ͘͠ ɹɹ — ྑ͍ݕࡧ㲈ྑ͍MRRΛࣗಈͰ୳ࡧͰ͖Δ ྑ͞Λ୯Ұͷ਺ࣈͰఆٛͯ͠ΔͷͰ୳ࡧ΋؆୯
  46. ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “΋ͷ͞͠”Λ࢖ͬͯվળ ྑ͍݁ՌʹͳΔΫΤϦΛ୳ࡧ

  47. ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “΋ͷ͞͠”Λ࢖ͬͯվળ ɾखಈͰௐ੔ͨ͠৔߹ΑΓྑ͘ͳͬͨ ɹ— ॏཁࢹͯ͠ͳ͔ͬͨύϥϝʔλͷӨڹ͕େ͖͘ɺखಈͰ͸೉͔ͬͨ݁͠Ռʹ ݁ՌΛʮ΋ͷ͞͠ʯͰܭΔ MRR ແௐ੔ 0.55 खಈௐ੔

    0.68 Hyperopt 0.76
  48. ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ “΋ͷ͞͠”Λ࢖ͬͯվળ ϦϦʔε͢Δ ɾA/BςετͰ࠷ऴ֬ೝ ɹ— ݕࡧͷྑ͕͞ͲΕ͘Β͍KPIʹڹ͔͘͸ະ஌ ɹ— ྑ͍΋ͷΛϢʔβ͸ٻΊͯͳ͔ͬͨՄೳੑ ɾ݁Ռͱͯ͠͸੒ޭ ɹ—

    ແௐ੔ύϥϝʔλͷϢʔβΑΓ౤ߘ਺͕5%૿Ճͨ͠ ɹ— ৯ࣄʹؔ͢Δ͝ҙݟϨϏϡʔ΋10͔݅ۙ͘Β΄΅0΁
  49. ·ͱΊ

  50. ɾͳΜͱͳ͔͘Βɺڞ௨ೝࣝʹ͢Δ ɾݟ͑ʹ͍͘΋ͷΛݟ͑ΔΑ͏ʹ͢Δ ň΋ͷ͞͠ʯ͕େࣄ ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ ·ͱΊ ň΋ͷ͞͠ʯΛ୳͢ ɾ͍͔ʹطଘͷ໰୊ʹམͱ͠ࠐΉ͔ ɾ໰୊Λ੔ཧͯ͠ڊਓͷݞʹ৐Δ ɾň΋ͷ͞͠ʯ͕Ͱ͖Ε͹Ԡ༻΋ޮ͘

  51. ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ - Thank You -

  52. ɾͳΜͱͳ͔͘Βɺڞ௨ೝࣝʹ͢Δ ɾݟ͑ʹ͍͘΋ͷΛݟ͑ΔΑ͏ʹ͢Δ ň΋ͷ͞͠ʯ͕େࣄ ݕࡧ݁Ռͷྑ͞Λܭଌͯ͠ఆྔతʹվળ͍ͯ͘͠ ·ͱΊ ň΋ͷ͞͠ʯΛ୳͢ ɾ͍͔ʹطଘͷ໰୊ʹམͱ͠ࠐΉ͔ ɾ໰୊Λ੔ཧͯ͠ڊਓͷݞʹ৐Δ ɾň΋ͷ͞͠ʯ͕Ͱ͖Ε͹Ԡ༻΋ޮ͘