はじめに
最近自分のmission変更がありまして、検索システムを開発する事になりました。その設計をする中で気になったことを軽くまとめてみようと思います。
別軸で機械学習系をかじり始めました!!
TFIDF?
まぁその文章の特徴となっている言葉を抽出する手法になるかと思います
なぜ、TFIDFが検索に活かせると思ったのか
きっかけ
makuakeというサイトがありましてね。
クラウドファンディング - Makuake(マクアケ):サイバーエージェントグループ
ここのヘッダーにある検索で 日本酒,保冷というキーワードで検索をして見ます
そうすると下記のような結果になります。

日本酒とは関係のなさそうなプロジェクトがヒットする事はちょっとおいておくとして....😅
日本酒関連のプロジェクトがヒットするのは良いんですが、makuakeでいうと日本酒,保冷で検索するとグッドデザイン賞などで大々的にニュースになった冬単衣のプロジェクトが出てきて欲しい!!と思うわけであります。
日本酒だけのキーワード検索であれば、新着順の日本酒のプロジェクトが検索結果になるのが良いのかな〜
改善を考えてみる
機械学習系をかじりはじめてて、TFIDFがシンプルに活用できるんじゃないっと安易に思って、ちょっと試してみることにした。
プロジェクトの文章からそのページを特徴となるキーワードをTFIDFで抽出して、検索された時に活用するよいうイメージ
こんなの作って見た

結果
お米,ひと口,よう,フルーツ,上品,保冷,味わい,新しい,日本酒,本来,段階,甘い,甘み,試み というキーワードを抽出できた
日本酒,保冷というキーワードが抜き出せた。ちょっとイイ感じかも
試した中での課題感など
- 色々と試したが、結局Mecabで形態素解析して、
名詞,形容詞だけを活用した方がなんとなく精度がよくなる気がしたのでそうした。- 個人的な感覚ですけど
- 結局、
CountVectorizerとTfidfTransformerを活用するように変えた - TFIDFは複数の文章を前提としている。どうやって複数の文章を入手してくるかがちょっと課題
- 最近でいうとOkapi BM25 を使った方がより精度が高まるのかもしれない...
最後
検索精度が向上する糸口が見えた気がする。まぁ少なくとも検索して結果のscoreに考慮してあげても良いとは思えた
でもプロダクション投入レベルに持っていくのそれはそれで色々あるんだよなーと思いつつお疲れ様でした。👋