Search Engineering Tech Talk 2019 Autumn #SearchTechJP 🔎
準備
スタッフ参加&ブログ枠ということで、まずは力仕事から!自宅勤務生活で運動不足気味なのは否めないのえ、普段あまり使わない筋肉を使うことが出来る良い機会となりました 🙂
整ってまいりました。
受付は、笑顔の大谷さんと平賀さん 🙂
オープニング
SmartNews様、会場および懇親会のスポンサーありがとうございます!
高林さんから、今まで開催してきた検索技術勉強会のスタッツの共有
スマートニュースの小宮さんからロジ周りなど
ヤフーにおける機械学習検索ランキングの取り組み
ヤフー株式会社 鈴木さん
- 検索システムとランキング
- 例えばECサイトにおける検索を作る場合
- しょうゆ で検索するとする
- 売上順で並べると、一番上に しょうゆラーメン ばっかり出てくる…
- 検索キーワードと商品名のマッチスコアで並べよう
- 醤油っぽいものが出てくるけど、あまり売上に繋がらない?
- スコアの足し合わせで頑張る…?
- 👉そこで機械学習ですよ!
- 文書間の順序関係を学習する手法→ランキング学習
- 検索キーワードと文書間の関連度を5段階評価などで
- ラベルはどうやって付ける?→人手でやったりユーザー行動ログを使ったり
- RankLibやLightGBMといったものを使ってサクっと試す
- 例えばECサイトにおける検索を作る場合
- ヤフーにおける機械学習ランキング
- Yahoo!ショッピングとYahoo!知恵袋の検索
- 機械学習順とかって表示にはできないので(笑)→おすすめ順、関連度順
- ユーザーの行動ログを使ってラベリングしている
- ログはHadoopクラスタ(HDFS)で膨大なサイズ。Hive Tableのレコードとして保存
- ランキング特徴量は検索結果に含めると大きくなってしまうので、検索エンジンから直接HDFSへ
- ユーザー行動ログと検索エンジンから送信されたランキングログを組み合わせる。HiveやSparkを活用
- LightGBMを使ってランキングモデルを作成
- モデルのサイズ(木の本数や深さ)を気にしながらハイパーパラメータチューニングをしている
- ランキングモデルが完成
- 柔軟なランキングを実現するプラグイン
- SolrやElasticsearchでランキングモデルを動かそうとするのはそんなに難しくない→ただし、自分たちがやりたいことを細かく出来るようにしようと思うと…→独自のプラグインを作成
- DSLでランキングモデルを記述できるように
- 設定の継承もできる
- マッチした時のスコアを平均や中央値などを加味するような形で
- SolrやElasticsearchでランキングモデルを動かそうとするのはそんなに難しくない→ただし、自分たちがやりたいことを細かく出来るようにしようと思うと…→独自のプラグインを作成
- ヤフーにおけるランキング改善
- 複数の検索サービスを担当することで多様な検索課題に取り組める
- ほかサービスの成功事例や実装を輸出入
- 解けてない問題や解決出来ていない課題はまだまだある
niconicoの検索システム -2019年版
ドワンゴの石塚さん
- niconicoの検索システムの概要
- Elasticsearchを使っている
- ユーザーがコンテンツにタグ付けする文化が定着
- バッチ系
- Hadoopによるログ基盤。言語はGolangを活用
- 参照系
- 言語はScala
- ランキングソートの処理
- スコアは64bitのlong
- 24時間分のランキングの総和
- Elasticsearchのrescoreで約60%高速化
- パーソナライズドソーシャルサーチ
- コンテンツ投稿者や生主名は重複しているものが多い
- Louvain法: ユーザーのフォロー関係をクラスタ化
- 階層構造を活用することできめ細やかに
- SparkのGraphXを利用
- スコアリング
- クラスタ間類似度
メルカリ検索におけるオフライン定性評価の第一歩
メルカリの富樫さん
(資料が公開されたら貼り付けさせていただきます)
- 情報検索評価のおさらい
- あるクエリを持ってきて、それを2つのシステムに投げて比較する
- 必要なものはトピックセット(クエリの集合)と評価の指標
- トピックセット
- ログは手元にあった
- 季節性を考慮して月毎に分割して、そこから更にブレイクダウン
- 指標を作る
- ユーザースタディー
- オンライン指標の観察→A/Bテストとかやると時間かかるし、片方のシステムが落ちた時とか考えると、、、
- 今回は新しい指標を作った→フレッシュネス
- 出品時刻の分布はクエリによって異なる
- クエリによってスケールが異なるので何日だったら何点とか言いづらい
- 順位が上とかは、皆んなスクロールするのが分かっているのでそこまで重視しない
- 適合度みていない?
- あんまり意味のないクリックのクリーニングとか考えだしたら色々辛い
- 適合度の定義が固まってないのにガッツリやるべきことではないと考えた。思想の問題に発展する。最初にやるべきではない
- クラウドソーシングを使う?→今回やったこと
- メルカリの定性評価システム
- ポートフォワードしてAとBの両方の結果を取ってくる
- 自分にSlackのメッセージが飛んできて、それを元にクラウドソーシングの依頼を出す
- A or Bどっちがイイか?っていうシンプルなものにする。5段階評価とかは小難しくなってくるのでしない
- 理由は記述してもらう
- 疲れてくるとAを選びがちだったり、Bを連打したりする人がいる→毎回シャッフル(裏ではどっちがどっちか把握している)
- ワーカーリスト(ホワイトリスト/ブラックリスト/新規)を作って運用
- ホワイトリストな人には単価を上げていく
- まじめにやってくれている人にインセンティブがあるように
- 新しい機能のインパクトの計算
- Debug eval
- まずは本人が評価する。次にクラウドソーシングへ。返ってきた結果を更に検索担当で話し合う
- 勝ちと負けのパターン。インパクトの大小から。勝つところは大体予想通り。負けパターンを重視。Explainを皆んなで読む
- これが回りはじめると、毎日クラウドソーシングに投げて、返ってきたのを揉んで〜というのをグルグル回せるようになった
- 議論の中でツールがどんどん良くなって、更にそのツールが他に使えるようになったり
- Debug eval
懇親会
あちこちでハイレベルな会話が繰り広げられていました。普段あまりビール飲まないので、たまに飲むととても美味しい!!
スタッフ二次会
渋谷にある北海道にいきました。北海道産のメロンサワーを注文したらあんまり北海道感なかったけど(笑)、とても楽しい時間を過ごすことが出来て帰りは午前様となりました 🙂
万券ファイターにつきお釣り的にアレで、大谷さんにお金借りた状態になってしまったので、近いうちにまた飲みにいきましょう!!
コメント