【要約】はてブ検索の全文ヒットノイズを減らした話 [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者が、ニュース収集サービス『AgentPick』のRSS取得において、無関係な記事が混入する問題に直面した。
- ・はてなブックマークの検索は、本文まで含めた全文検索である。
- ・本文中に単語が含まれるだけで、無関係な記事がヒットしてしまう。
- ・これにより、『Windows 11の設定方法』のような無関係な記事が混入する。
- ・ユーザーにとって価値の低いノイズがフィードに混ざる、実用上の課題が生じた。
// Approach
開発者が、検索パラメータの変更や判定材料の追加といった複数の案を、実データを用いて比較検証した。
- ・案1:検索パラメータをtarget=titleに変更する。しかし、インデックスが変わり、関連記事まで消失するため却下。
- ・案2:タイトル・タグ・本文抜粋を判定材料にする。しかし、本文を含めるとノイズを関連ありと判定するため却下。
- ・案3:タイトルとタグのみを判定対象とする。本文を外し、タグを活用して精度を維持する手法を採用。
- ・これにより、ノイズの発生源を判定範囲から意図的に除外する設計へと辿り着いた。
- ・各案の検証には、直近40件の実際の検索結果を用いた。
// Result
開発者が判定範囲をタイトルとタグに限定したことで、ノイズの除去と関連記事の保持を両立した。
- ・40件の検証データを用い、ノイズ5件を完全に特定し除去できた。
- ・タグを活用し、タイトルにキーワードがない関連記事も保持できた。
- ・英単語の誤検出(opus等)への対策も実施した。
- ・情報の追加ではなく、ノイズの発生源を排除する手法が有効であることを実証した。
- ・これにより、AgentPickにおけるニュースの質が大幅に向上した。
Senior Engineer Insight
> 情報の追加が精度向上に直結するという直感的な誤解を、実データで覆している点が秀逸だ。ノイズの発生源を判定ロジックから意図的に切り離す「引き算の設計」は、検索精度向上における定石と言える。また、英単語の境界判定や一般語との衝突回避など、実装レベルでの細かな配慮も実戦的である。大規模なデータ処理において、安易に判定材料を増やすことは計算コストとノイズの増大を招くリスクがある。本件のような範囲の絞り方は極めて重要だ。