

# Redditのキーワード追跡でノイズを減らす方法

定期的なデータ収集を始める前に、キーワードで少数の検索結果を取得し、各結果にラベルを付けて検索クエリを見直しましょう。ノイズとは、検索結果に含まれる、意図したテーマを扱っていない投稿のことです。Actorは、ホスティング環境で動くデータ収集プログラムです。Taskは、入力設定を保存したプリセットです。関連性のテストでは、各結果が調査の問いに役立つかを確認します。同じ問題を抱える顧客が何人いるかを測るものではありません。現在のReddit Searchの設定画面では、検索クエリ、任意のサブレディット、最大取得件数、並べ替え方法、対象期間を指定できます。最大取得件数は、検索全体で共有される重複を除いた投稿数の上限です。コミュニティごとの割り当てではありません。データセットの1行は、発見した重複のない公開投稿1件に対応します。標準のメンション収集用Taskでは、ブランド名のフレーズ、上限100件、新着順、1か月の対象期間を使います。そのフレーズをテスト対象のものに置き換え、まずは上限を3件にして、すべての投稿を確認してください。この小規模なテストで確認するのは収集結果の構成であり、あらゆる場合の精度ではありません。検証したlearnpythonの対照テストは3行で上限に達しましたが、読者が実行する際の停止状況は異なる可能性があります。最大取得件数への到達や完了を示すフラグは、母集団全体を取得した証拠にはなりません。

## 収集の設定

[Reddit Search Scraper](https://apify.com/chronometrica/reddit-search-scraper)のActorと、[Reddit Brand Mention Snapshot](https://apify.com/chronometrica/reddit-search-scraper/examples/reddit-brand-mention-snapshot)のTaskを開いてください。ツールの入力項目は、query、任意のsubreddits、maxResults、sort、timeです。現在のプリセットでは、queryに`"Brand Name"`、maxResultsに100、sortにnew、timeにmonthを使っています。queryを調査に関連する自分のフレーズに置き換え、まずはmaxResultsを3にしてください。MaxResultsは全体で共有する上限であり、サブレディットごとの割り当てではありません。

データセットの各行には、inputQuery、requestedSubreddit、matchedSubreddit、sort、time、rank、postId、canonicalPostUrl、title、body、createdAt、status、statusReason、unavailableFields、observedAtというフィールドがそのまま保持されます。取得元の順位は並び順を示すもので、関連性を示すものではありません。本文や文脈が取得できない場合は、判定保留のままにします。

検証したlearnpythonの対照テストは、3行で上限に達しました。これは、読者が実行するたびに上限に達すると予測するものでも、読者の検索クエリの関連性を検証するものでもありません。実行全体のisCompleteがtrueであることは処理の結果を示し、取得元の母集団全体を取得したことを意味しません。行のrequestedSubredditやmatchedSubredditは、サマリーのsubredditと異なる場合があります。

出力のsearchResultsの各項目には、query、subreddit、status、reason、candidatesFound、rowsSaved、duplicatesSkipped、endReason、source、sourceUrlが含まれます。実行サマリーには、status、statusReason、isComplete、query、searchesPlanned、searchesSucceeded、candidatesFound、usefulRows、rowsSaved、billableRows、freeRows、duplicatesSkipped、stopReason、observedAtが含まれます。対照テストのsearchResults[0]では、subredditはlearnpython、statusはok、rowsSavedは3、endReasonはmax_results_reached、sourceはreddit_rssでした。

## 調査手順の全体

1. 検索する前に、調査したい問題と、結果を調査対象に含める基準を明確にしてください。対象の製品またはテーマと、その文脈を具体的に示します。スポーツや動物の名前にもなる語には、明確な文脈が必要です。
2. 最初の検索クエリを、通常の形式または引用符で囲んだ形式で保存し、並べ替え方法、対象期間、上限も記録してください。取得元の投稿をすべて確認できるように、少数の結果を1回分だけ取得します。行を変更せず、入力と出力もそのまま保持してください。
3. タイトルと本文を読み、必要に応じて取得元の議論も確認してください。各結果を「関連あり」「関連なし」「判定保留」に分類し、明確な理由を付けます。本文で[自社ブランドに言及している](/ja/articles/x%E6%8A%95%E7%A8%BF%E3%81%AE%E8%A3%BD%E5%93%81%E8%A8%80%E5%8F%8A%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/)からといって、その製品について質問しているとは限りません。取得できない本文を「関連なし」に分類しないでください。
4. 無関係な結果が一致した理由を列挙してください。複数の意味を持つ名前、供給業者の宣伝、求人、無関係な用法、調査の問いと異なる質問、確認できない文脈がないかを調べます。これらの理由が、検索クエリを改善する手掛かりになります。
5. 1回に1つの要素を変更してください。問題を表す語を追加する、より明確なフレーズを使う、または[根拠のあるコミュニティに検索範囲を限定する](/ja/articles/%E9%A1%A7%E5%AE%A2%E8%AA%BF%E6%9F%BB%E3%81%AB%E4%BD%BF%E3%81%86%E3%82%B5%E3%83%96%E3%83%AC%E3%83%87%E3%82%A3%E3%83%83%E3%83%88%E3%81%AE%E9%81%B8%E3%81%B3%E6%96%B9/)といった変更が考えられます。比較できるように、変更前と変更後の範囲を記録してください。
6. 同じ判定基準で小規模なテストを繰り返してください。「関連あり」の件数と「判定保留」の件数は分けて報告します。検討に使う比率の横に、収集した総件数と判定保留の件数をすべて示してください。小規模なサンプルは、精密な比較基準にはなりません。
7. 意図した種類の問題を引き続き捉えられる場合に限り、より明確な検索クエリを選んでください。絞り込みすぎると、ほかの有用な表現を見落とす可能性があります。必要に応じて、補完的なフレーズもテストしてください。
8. 入力、範囲、取得元ID、ラベル、理由、次に使うと決めた検索クエリを、検索クエリのテストシートに保存してください。定期的な収集とスケジュール設定は、その後に行います。変更内容を確認できるようにしておいてください。

## 架空のテスト例

ここに示す検索結果と製品名は、すべて架空のものです。製品Orbitは、プロジェクト用のツールです。Orbitという広い検索クエリでは、6件の投稿が返されます。2件はプロジェクトのセットアップに関するもの、2件は天文学に関するもの、1件はユーザーの問題を含まない供給業者の宣伝で、1件は本文を取得できません。分類結果は「関連あり」が2件、「関連なし」が3件、「判定保留」が1件です。収集した全投稿では、6件中2件、つまり33.3パーセントが「関連あり」です。判定できた5件の投稿では、5件中2件、つまり40パーセントが「関連あり」です。どちらの数値も、実際のツールの精度を主張するものではありません。

プロジェクトのセットアップを対象に修正したフレーズでは、4件の投稿が得られます。関連するセットアップの議論が3件あり、本文にアクセスできず判定保留となるものが1件あります。収集した全投稿に占める「関連あり」の割合は、4件中3件、つまり75パーセントです。判定できた投稿に限ると、3件中3件、つまり100パーセントであり、判定できない1件も明示します。セットアップのフレーズでは見落とす移行の問題を確認するため、補完的な移行用クエリで、別の一群の結果を取得することを提案します。

以下の検索クエリのテストシートには、架空の検索結果への出現10件と、そのラベルを記載しています。1つの取得元IDが両方の取得結果群に現れます。調査データを統合する際は、検索結果への出現は2件のまま記録し、取得元としては同一の1件として扱います。

| 取得結果群 | 取得元ID | 使用した検索クエリ | ラベル | 理由 |
| --- | --- | --- | --- | --- |
| 広い検索 | src_01 | Orbit | 関連あり | プロジェクトのセットアップに関する議論 |
| 広い検索 | src_02 | Orbit | 関連あり | プロジェクトのセットアップに関する議論 |
| 広い検索 | src_03 | Orbit | 関連なし | 天文学に関する議論 |
| 広い検索 | src_04 | Orbit | 関連なし | 天文学に関する議論 |
| 広い検索 | src_05 | Orbit | 関連なし | 供給業者の宣伝 |
| 広い検索 | src_06 | Orbit | 判定保留 | 本文を取得できない |
| 修正後 | src_02 | "Orbit" project setup | 関連あり | セットアップに関する質問が解決 |
| 修正後 | src_07 | "Orbit" project setup | 関連あり | セットアップの不具合修正 |
| 修正後 | src_08 | "Orbit" project setup | 関連あり | セットアップの設定 |
| 修正後 | src_09 | "Orbit" project setup | 判定保留 | 本文を取得できない |

この判定に基づき、セットアップに関する質問にはセットアップのフレーズを選び、移行については検索範囲のテストが引き続き必要とし、取得できない本文は判定保留のままにします。この後に、返信や感情分析の結果を出力することはありません。

## 次に行うこと

メインのスクレイパーActorである[https://apify.com/chronometrica/reddit-search-scraper](https://apify.com/chronometrica/reddit-search-scraper)を使うReddit Brand Mention SnapshotのTaskを、[https://apify.com/chronometrica/reddit-search-scraper/examples/reddit-brand-mention-snapshot](https://apify.com/chronometrica/reddit-search-scraper/examples/reddit-brand-mention-snapshot)で開いてください。問題を表すフレーズを1つ設定し、上限を少数にします。示した関連性の基準で、すべての結果にラベルを付けてください。その後、検索クエリの要素を1つ変更してから、テストを繰り返します。

## 出典と参考資料

- [https://apify.com/chronometrica/reddit-search-scraper](https://apify.com/chronometrica/reddit-search-scraper)
- [https://www.reddit.com/r/AskMarketing/comments/1r234t8/how_do_you_track_reddit_keywords_with_minimum/](https://www.reddit.com/r/AskMarketing/comments/1r234t8/how_do_you_track_reddit_keywords_with_minimum/)