このガイドでは、Discourse AI で感情分析と感情分類を設定し、レポートを利用してコミュニティの投稿を検証する方法について説明します。
必要なユーザーレベル:設定には管理者権限が必要です。レポートの閲覧には管理者またはモデレーター権限が必要です。
感情分析と感情分類により、コミュニティの議論におけるパターンを検証できます:
- 感情分析は、投稿を「肯定的」「中立的」「否定的」に分類します。
- 感情分類は、感謝、好奇心、怒り、悲しみなど、28種類のラベルに対するスコアを割り当てます。
これらは別々の機能です。いずれか一方または両方を有効にし、それぞれ異なる分類バックエンドを選択できます。レポートは分類された投稿数をカウントし、固有の人物やパーソナリティタイプをカウントしません。読む価値のある議論を見つけるために利用し、その文脈の理解の代替手段として使用しないでください。
開始前に
discourse_ai_enabled 経由で Discourse AI を有効にし、分類バックエンドを設定する必要があります。
Discourse がホストしている場合? サイトにはすでに専用の分類エンドポイントがプロビジョニングされている可能性があります。設定を変更する前に既存の構成を確認してください。可用性、エンドポイントの設定、バックフィルの制限についてサポートが必要な場合は、team@discourse.org までお問い合わせください。
セルフホストの場合? 互換性のある専用エンドポイント、言語モデルを持つ AI エージェント、または決定モデルを設定します。機能を有効にするだけでは推論サービスは提供されません。
自動処理を有効にする前に、プロバイダーのプライバシーポリシー、保持ルール、コストを確認してください。分類処理により、投稿テキストが選択されたバックエンドに送信されます。以下のスクリーンショットでは、テストサイトで作成した架空の投稿と決定モデルを使用していますが、これはプライベートなコミュニティコンテンツに対してそのプロバイダーを推奨するものではありません。
感情分析と感情分類の設定
- 管理 → プラグイン → AI → 機能 を開きます。
- 「感情分析と感情分類」を開きます。
- 「感情分析」の下で、肯定的、中立的、否定的な分類を行う場合は「有効」を選択します。これは
ai_sentiment_enabledを制御します。 - 該当するエンドポイント、エージェント、またはモデルを選択し、以下に説明する手順で設定します。
- 「感情分類」の下で、感情分類を行う場合は「有効」を選択します。これは
ai_sentiment_emotion_enabledを制御します。 - バックエンドを選択し、独立して設定します。
- 次のセクションで説明するバックグラウンド処理の制限を設定します。
- 「送信」をクリックし、選択内容が保存されたことを確認します。
この例では、両機能に決定モデルを使用しています。「1時間あたりの投稿数」は、テスト中に自動スキャンを一時的に停止するために、意図的に 0 に設定されています。新しい投稿と履歴のある投稿を自動的に処理するには、正の値を使用してください。
専用分類エンドポイントを使用する
専用モデルで実行したい各機能ごとに「専用分類エンドポイント」を選択します。「専用分類エンドポイントの設定」に従い、ai_sentiment_model_configs 設定にアクセスします。
参照用の専用モデルは以下の通りです:
| 機能 | モデル |
|---|---|
| 感情分析 | cardiffnlp/twitter-roberta-base-sentiment-latest |
| 感情分類 | SamLowe/roberta-base-go_emotions |
各設定エントリは、その classification_type(sentiment または emotion)、model_name、endpoint、および api_key を識別します。使用する専用分類器ごとに別々のエントリを提供してください。認証情報(資格情報)は秘密にしておき、サポート投稿やスクリーンショットに含めないでください。
推論サーバーのデプロイについては、Discourse AI 用の感情分析と感情分類のセルフホスティングを参照してください。上記のコントロールを使用して、各機能を個別に有効化し、選択します。
専用バックエンドは互換性のある分類 API を想定しています。Anthropic、OpenAI チャット、または Azure Language のエンドポイントをこの設定にコピーしても、互換性は得られません。Discourse の他の場所にある言語モデルの接続テストが成功しても、専用感情エンドポイントがテストされているわけではありません。
AI エージェントまたは決定モデルを使用する
「LLM エージェント」の場合、設定された言語モデルを持つ適切な分類エージェントを選択します。Discourse には感情分析および感情分類エージェントが含まれています。一般的な会話型エージェントは、期待されるラベルのスコアを返すように設定されたエージェントの代わりにはなりません。
「決定モデル」の場合、まず互換性のある決定モデルを設定してテストし、有効にされた各機能に対してそれを選択します。決定モデルは、この分類処理には別の会話型言語モデルを必要としません。
エージェントおよび決定モデルの要求には、プロバイダーへの料金が課されたり、クレジットが消費されたりする場合があります。自動的に処理される機能に割り当てる前に、選択したモデルのデータ取り扱いルールを確認してください。
処理と履歴カバレッジの制御
定期的なジョブは、分類が欠落している投稿を確認するために、5分ごとに実行されます。新しい投稿と履歴のある投稿はこのスキャンを共有しており、結果は投稿直後に表示されるとは限りません。データが表示されるまでに最低限必要な投稿数や日数はなく、1つの成功した分類投稿でも貢献できます。
| コントロール | サイト設定 | デフォルト | 効果 |
|---|---|---|---|
| 1時間あたりの投稿数 | ai_sentiment_backfill_maximum_posts_per_hour |
240 |
1時間あたりに処理されるおおよその投稿数。0 に設定すると、新しい投稿を含めたスケジュールされたスキャンが停止します。 |
| 投稿の経過日数制限 | ai_sentiment_backfill_post_max_age_days |
60 |
この期間内に作成された投稿をスキャンします。0 は「無制限」ではなく「今日」を意味します。 |
より古い投稿を含めるために、経過日数制限を増やします。スケジュールされたジョブは、欠落している結果を時間経過とともに処理します。レポートの古い日付範囲を選択しても、その履歴が自動的に分類されるわけではありません。
レートはおおよその値であり、正確なリクエスト数や支出上限ではありません。両方の分類器を有効にすると、1投稿あたり2つのリクエストが発生する場合があります。失敗したリクエストや拒否されたリクエストは再試行されることがあります。編集された投稿は個別にチェックされ、スケジュールされたスキャンのレートや経過日数制限の影響を受けません。
プライベートメッセージ、削除された投稿、削除されたトピック、および通常以外の投稿タイプは、スケジュールされたバックフィルスキャンから除外されます。スキャンナーおよびレポートにおける PM の除外は、すべての分類パスに関する保証ではありません。編集された投稿のジョブでは同じ PM フィルターが適用されません。外部プロバイダーを設定する前に、この点を考慮してください。
カテゴリまたはタグ別で感情を検索する
- 管理 → レポート → 感情分析 を開くか、サイトで
/admin/reports/sentiment_analysisにアクセスします。 - 開始日と終了日を選択します。
- 結果をグループ化するために「カテゴリ」または「タグ」を選択します。
- 対応するカテゴリまたはタグフィルターを使用して結果を絞り込みます。カテゴリフィルターでは、サブカテゴリを含めるオプションも提供されます。
- 各グループの合計と、肯定的、否定的、中立的な内訳を確認します。
- グループの行をクリックして、そのチャートと基になる投稿を調べます。
この例には9件の分類済み投稿が含まれています:3件が肯定的、3件が否定的、3件が中立的です。中立的な投稿もこのレポートに含まれます。
詳細ビューでは:
- 「すべて」「肯定的」「中立的」「否定的」を選択して、読み込まれた投稿をフィルターできます。
- 投稿のトピックを開いて、周囲の議論を確認します。
- チャートの横にあるリンクアイコンを使用して、そのレポートビューの URL をコピーします。受信者にはスタッフへのアクセス権限が必要です。
- 「戻る」をクリックして、グループ化された結果に戻ります。
レポートの日付は、分類が実行された時点ではなく、投稿が作成された時点に基づいています。トピックに複数のタグがある場合、1つの投稿が複数のタググループに寄与する可能性があるため、タグの合計を加算すると同じ投稿が複数回数カウントされることがあります。
全体的な感情トレンドを確認する
管理 → レポートから「全体的な感情」レポートを開くか、/admin/reports/overall_sentiment にアクセスします。
スコアは以下のように計算されます:
肯定的な投稿の数 − 否定的な投稿の数
ある投稿がそのグループとしてカウントされるには、肯定的または否定的なスコアが 0.6 より大きい必要があります。どちらもしきい値を超えない場合、グループ化レポートはその投稿を中立的として扱います。しきい値は固定されており、変更するためのサイト設定はありません。
全体的な感情は正味の投稿数であり、平均確率や幸福度のパーセンテージではありません。肯定的な投稿が3件、否定的な投稿が3件ある場合、中立的な投稿が何件あっても、全体的なスコアは 0 になります。平坦なトレンドを強い意見の欠如として解釈する前に、グループ化された内訳と基になる議論を確認してください。
感情を検索する
各感情には 管理 → レポート 配下にレポートがあります。例えば、「怒り」については /admin/reports/emotion_anger、「好奇心」については /admin/reports/emotion_curiosity にアクセスします。日付範囲を選択し、日次、週次、月次のグループ化を選択してトレンドを検索します。
感情レポートでは、そのラベルのスコアが 0.1 より大きい 投稿がカウントされます。このしきい値も固定されています。1つの投稿に対して複数の感情が該当する可能性があるため、感情の合計値は排他的ではありません。
トピックを感情でフィルタリングすることもできます。/filter?q=order:emotion_anger にアクセスして、該当するトピックを探します。これは平均的な感情スコアではなく、条件を満たす怒りの分類投稿の数によって順位付けされます。順序を反転させるには order:emotion_anger-asc を使用します。activity-after: フィルターがない場合、この順序付けは過去1年間の条件を満たす投稿をカウントします。通常のトピックリストのアクセス権限が適用されます。
利用可能な感情ラベル
尊敬、面白さ、怒り、苛立ち、承認、思いやり、混乱、好奇心、欲望、失望、不承認、嫌悪、恥、興奮、恐怖、感謝、悲嘆、喜び、愛、神経質さ、中立、楽観、誇り、理解、安堵、悔い、悲しみ、驚き。
制限事項を理解する
- 分類はモデル依存です。 皮肉、引用テキスト、専門用語、多言語の議論は誤って解釈される可能性があります。言語カバレッジと精度は、選択したモデルに依存します。異なるバックエンドからのスコアは、必ずしも同じように校准(キャリブレーション)されているわけではありません。
- レポートは保存された結果のみを対象とします。 バックエンドが動作しない有効な機能、停止中の処理、履歴カバレッジが不十分等情况では、空または不完全なレポートが生成されることがあります。
- 既存の分類は再利用されます。 分類済み投稿を編集しても、結果は自動的に置き換えられません。同じバックエンド内で選択したエージェントまたは決定モデルを変更しても、既存の結果は再分類されません。
- バックエンドを変更すると、レポートの結果ソースも変更されます。 古い結果は、選択したバックエンドに转换(変換)されません。欠落している分類が処理される間、レポートが空のように表示されることがあります。
- レポートはプライベートメッセージを除外します。 このレポート除外は、上記のデータ処理制限とは別物です。
欠落または予期しない結果のトラブルシューティング
| 問題 | 確認すること |
|---|---|
| 有効化後に結果がない | 該当する機能が有効になっているか、バックエンドが設定されているか、「1時間あたりの投稿数」が正の値になっているか、バックグラウンドジョブが実行されているかを確認してください。5分ごとのスキャンと処理キューには時間がかかります。 |
| 感情分析は動作するが、感情分類は空 | 「感情分類」を別途有効化し、設定してください。感情分析専用のエンドポイントでは、感情分類は提供されません。 |
| 以前の日付に結果がない | 投稿の経過日数制限を増やし、処理時間を待ってから、レポート範囲が投稿の作成日付を含んでいるか確認してください。 |
| 専用エンドポイントがエラーを返す | URL、認証情報、モデル、応答形式を確認してください。アダプターは、ラベルとスコアのフラットな配列(感情分析なら positive、neutral、negative などのラベル)を想定しており、任意のチャット応答や LABEL_0 スタイルのラベルではありません。 |
| 内部ネットワークのエンドポイントに到達できない | 接続性を確認し、必要に応じて、信頼できる推論エンドポイントのホスト名または IP のみを allowed_internal_hosts に追加してください。サーバー側リクエスト偽装(SSRF)保護を広く無効化しないでください。 |
| 編集またはモデル選択後も結果が変わらない | 既存の結果が再利用されています。コンテンツの編集や他のモデルの保存で、完全な再分類がスケジュールされると仮定しないでください。 |
| フィルターが表示する投稿数がカウント数より少ない | カウントはグループ全体を表しており、感情タブは読み込まれた投稿をフィルターしています。さらに結果を読み込む必要があるか確認し、不一致を調査する際に元のトピックを開いてください。 |
管理者は、管理 → プラグイン → AI → ログ でエージェントおよび決定モデルの要求レコードを確認できます。/logs でバックグラウンド分類エラー(専用エンドポイントの失敗など)を確認してください。ログコンテンツは機密情報として扱ってください。投稿テキストやモデル応答が含まれる場合があります。診断情報を共有する前に、認証情報とプライベートコンテンツを削除してください。



