自己紹介 2 小関 俊祐(Shunsuke Ozeki)/ @ozeshun_ - お仕事 - 2022年にDSとしてタイミーに入社 - MLモデルの改善、ML pipelineの構築、 推薦API基盤の運用など幅広くやってます - 最近検索にも手を出し始めました - 趣味 - 野球全般。ロッテ、レンジャースが好き - 海外旅行 - 個人開発的な

はじめに こんにちは、検索基盤部 検索研究ブロックの真鍋です。ヤフー株式会社から一部出向していて、主にZOZOTOWNの検索機能へのランキングモデルの導入に従事しています。 本記事では、Elasticsearch上でランキングモデルを扱うための有名なプラグインの仕組みと、同プラグインにZOZOが実装した機能を紹介します。 まず、本記事の背景を説明します。ZOZOTOWNでキーワード検索すると、結果の商品が並びます。結果の商品は非常に多数になることも多いので、ユーザ体験を損なわないためには、その並び順も重要です。ここで言うランキングモデルとは、この並び順の決定のために、商品のスコアを計算する式のことを指します。このような式は機械学習によって生成され、非常に複雑になることもあります。そのため、検索エンジンの標準機能では実行できず、プラグインを導入して初めて実行できることもあります。 ZOZOT
この記事は (1人で)基礎から学ぶ推薦システム Advent Calendar 2022の10日目の記事です。 前回までで、推薦システムを考える上でのさわりの部分は確認できたと思うので、ちょっとずつ実務っぽい話にシフトしていこうと思います。 実務で難しい推薦アルゴリズムを実装する前に、「チューニングとかはおいておいて、だいたいどれくらい効果が出るのかサッと試したい」という場面があったりします。 腰を据えてしっかりアルゴリズムを調整するならPythonでGPUを使って一つずつ実験をして…といった試行を繰り返すことになるかと思いますが、「安い!早い!うまい!」みたいなのが求められる状況では、Pythonを使うよりお手軽にサッと実装できると嬉しかったりします。 ということで、今回はSQLで推薦アルゴリズムを書いて、BQの計算能力でぶん殴るやりかたをやってみたいと思います。 問題設計 Datase
この記事は 情報検索・検索技術 Advent Calendar 2022 の7日目の記事です。 はじめに 今年の夏、Amazonが多言語 (英語、スペイン語、そして日本語) のラベル付きの商品検索のデータセットを公開しました。 論文: https://arxiv.org/abs/2206.06588 リポジトリ: https://github.com/amazon-science/esci-data 情報検索において商品検索は、ウェブ検索を作りたいという企業より商品検索を作りたい企業の方が多いという意味で、ポピュラーなトピックだと思います。ところが公開データで実験を行おうとするとドメインが違うウェブ検索のデータセットか、ラベルのない商品カタログか、ラベルはあるけど小規模なデータセットかという限られた選択肢しかなく、仕方がないので非公開の独自データセットを作って実験を行うという状況でした。
今 Q もお疲れさまでした!10X の @metalunk です. 3ヶ月前に 10X の検索を 10x したい というブログを書きました.その記事にあるとおり,1-3月で検索インフラの改善を実施し,検索速度 10x, インフラコスト 80% 削減という成果をあげました.そして,直近の3ヶ月では検索精度の改善に取り組みました.この記事では今 Q にリリースした機能と,それぞれの効果を説明します. 長い記事になったので飛ばし飛ばし読んでください. どんな Q だったか KPI の変化 Zero match rate Conversion rate リリースした機能 検索キーワードサジェスト システム概要 評価 カテゴリフィルタ 並び順の改善 評価 bigram 解説 評価 シノニム辞書を Search time に展開 解説 イベントログからシノニムルールの生成 解説 改善の背景 KPI D
Elasticsearch Indexは、Shardという単位で分割されており、それぞれがLucene Indexである。Lucene Indexは内部的には複数のファイルに分割されており、それがSegmentと言われるものである。Segmentはシーケンシャルに検索されるので、Segmentの数が少なければ少ないほど検索効率は高くなる。 Amazon ESのデフォルトでは、Shard数は5であるので、検索効率を考えた場合、Segment数も5であることが望ましい。 設定 検索効率と改善するために、以下の設定が提案された。 index.refresh_interval = -1 (default: 1 sec) index.translog.flush_threshold_size = ‘10gb’ (default: 512mb) index.number_of_replicas = 0
エムスリーエンジニアリンググループ AI・機械学習チームでソフトウェアエンジニアをしている中村(@po3rin) です。 好きな言語はGo。仕事では主に検索周りを担当しています。 Overview 最近、社内で情報検索論文輪読会を立ち上げました。 情報検索論文読み会のスケジュール そこでNGT-ONNGについての論文*1を紹介したところ1時間の予定のところを盛り上がりすぎて2時間超えてしまいました。 大盛り上がりのついでに、今回は情報検索論文輪読会で紹介した近似最近傍探索ライブラリNGTを内部で利用するValdを使って、類似文書検索がどのように出来るのか、現状の問題を解決できるのかを試したのでその結果を報告します。 Overview 弊社が抱える類似文書検索の課題 Sentence-BERT Valdを使った近似最近傍探索 NGT Vald Vald×Sententce-BERTで類似文書
エムスリーエンジニアリンググループ AI・機械学習チームの中村(@po3rin) です。 好きな言語はGo。仕事では主に検索周りを担当しています。最近、ユーザーの検索体験の向上のために、以下の検索評価に関する本を読んでいました。 情報アクセス評価方法論 作者:酒井 哲也発売日: 2015/05/19メディア: 単行本 そこで今回は検索評価指標の1つであるsDCG (session-based Discounted Cumulative Gain)を使ってエムスリーの検索ログから体験の悪かった検索を抽出してみたのでその方法を紹介します。 現状の検索監視 現状の検索監視の問題 nDCG sDCG 線形横断 最下位クリックにおける検索結果の破棄 クリック=適合文書 nsDCGを実際の検索ログに使ってみる sDCGを使って感じたこと まとめ We're hiring !!! Reference 現
この記事は、ただの集団 AdventCalendar 2019の21日目の記事です。 はじめに 担当日前日に「Elasticsearch で Learning-to-rank やりたいので、環境構築の手順とその使い方についてまとめてね。ヨロピコ!」と振られたので、今回は Elasticsearch with learning-to-rank の構築手順とその使い方を紹介します。 今回作成したものはコチラ Learning-to-rank とは 検索エンジンにおける learning-to-rank とは、機械学習と検索するデータを使って、検索結果のランキングの順序を改善する手法のことです。順序学習やランキング学習とも呼ばれています。 今回は、Elasticsearch の learning-to-rank のプラグイン を使います。learning-to-rank のレポジトリにある de
Elasticsearchで今すぐ使えるビジネス向けトークナイザー『Sudachi』 https://github.com/WorksApplications/Sudachi 【京都開催】Elasticsearch勉強会 #elasticsearchjp https://www.meetu…
Pokemon Goトレーナーの @cero_t です。 今月頭にラスベガスのモンテカルロに宿泊したところ、ニャース、マンキー、ガーディの巣になっていて、アメを100個以上ためることができました! そんなPokemon Goとは関係ないですが、Elasticsearch Go の alpha Goがリリースされました! Go! Go! 5! 5! ・・・はい、ちょっと無理ありましたね。知ってます。 Elastic Stack 5.0.0-alpha5の新機能は、Elasticのブログエントリーを参照してください。 https://www.elastic.co/jp/blog/elastic-stack-release-5-0-0-alpha-5 私としては、Beatsのテンプレート読み込み機能の辺りがちょっと注目ポイントでした。 さて、alpha5の話題はこれぐらいにして、今日の主なテーマ
ELSには日本語解析プラグインが用意されています。 Japanese (kuromoji) Analysis Plugin | Elasticsearch Plugins and Integrations [6.1] | Elastic Java等で品詞分解する事ももちろんできますが、ELSのテンプレートを利用する事で、Kibana上で品詞分解表示などが出来ます。 この記事では、まずELSのテンプレートで登録するところまでをやります。 プラグインインストール Elasticsearchの日本語の形態素解析をする際に利用されるkuromojiは非常に便利ですが、その辞書であるIPADICは更新が止まっているためやや古い状態です。 その辞書を更新してくださった方がいらっしゃり、neologdとして公開されているためそれを導入して新語でもきちんと解析できるようにします。 neologdでkuro
テキスト埋め込みとは?さまざまなタイプのテキスト埋め込みについて詳しく検討し、従来型の検索アプローチと比較してみましょう。 テキスト埋め込みテキスト埋め込みモデルは、単語を密な数ベクトルとして表現します。これらのベクトルは、単語のセマンティックな(意味論上の)プロパティを捉えるためのものです。単語のベクトルが相互に近ければ、セマンティックな意味でも類似している、ということになります。すぐれた埋め込み技術において、ベクトル空間の各方向性は、その単語の異なる側面に結び付いています。たとえば、“カナダ”のベクトルは、ある方向性では“フランス”に近い可能性があり、別の方向性では“トロント”に近いかもしれません。 NLPと検索のコミュニティは、このような語のベクトル表現に長年関心を寄せてきました。この数年で、多くの従来型のタスクがニューラルネットワークを使って再考されたことに伴い、テキスト埋め込みへ
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Elasticsearch と Mahout を組み合わせ、「関連する商品」や、「関連するユーザ」を表示する機能をつくりました。 アルゴリズムはMahoutをそのまま使い、ロジックをElasticsearch プラグインにすることで、サーバ&データストアがElasticsearchでまかなえます。 以下にプラグインを公開しました。 https://github.com/hadashiA/elasticsearch-flavor これを実際に運用中のサービスがあるんですが、商品数がせいぜい数十万件程度だったので Hadoop等は使わず、リ
急に冷え込んできてお布団が恋しい季節になってきました。 こんにちは。@Ssk1029Takashiです。 この記事は自然言語処理 Advent Calendarの6日目の記事になります。 qiita.com 全文検索システムは単語検索であることが多いですが、単語検索だけだと困ることもあります 症例検索を例にとって見てみましょう。 検索エンジンに以下の2つの文章が登録されているとします。 「ずっと胃がキリキリと痛い。ただ、熱は無く平熱のままだ。」 「昨日からとても頭が痛い。おまけに胃がむかむかする。」 この時、「胃が痛い」と検索したとき、通常の単語検索の場合だと両方ともヒットしてしまいますが、下の文章は意味としては異なる文章のためゴミになります。 この記事では、GiNZAとElasticsearchを使って意味的に正しい上の文章だけを拾ってくる仕組みを簡単に実現してみようと思います。 どうや
SensorBeeとfluentdを使ってElasticsearchに機械学習適用後のツイートを流し込んで検索や可視化を助ける話
概要 Elasticseachに分散表現のベクトルに対する類似文書検索が実装されたということで、以下のElasticのブログ記事を参考に類似文書検索を試してみました。 Text similarity search in Elasticsearch using vector fields | Elastic Blog 類似文書検索とは、与えられたクエリの文書と似ている文書を文書集合内から検索する技術です。この際に必要となるのが「似ている」という概念で、計算機上でどうやって2つの文書間の類似度を数値として表現するかがポイントになります。例えば、互いの文書に出現する単語の一致度や重複度合いを測ったり、TF-IDFやBM25などで文書をベクトル化して比較する方法があります。ただしこれらの方法では、言い換え表現や表記の違いにより同じ意味の単語が異なる単語だと判定されたり、文書の中では重要でない単語に
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く