Discourse AIプラグインは、新しい投稿の感情/センチメント分類をリクエストする機能をサポートしており、これはデータベースに保存され、レポートや管理者ダッシュボードで使用できます。
Discourse AIは2種類の分類をサポートしており、それぞれに独自のモデルが必要です。
- センチメント (Sentiment) — 投稿をポジティブ、ネガティブ、またはニュートラルに分類します (
cardiffnlp/twitter-roberta-base-sentiment-latestを使用) - 感情 (Emotion) — 喜び、怒り、驚きなど28の感情ラベルに投稿を分類します (
SamLowe/roberta-base-go_emotionsを使用)
ダッシュボードでセンチメントと感情の両方のデータを取得するには、両方のモデルを実行する必要があります。
HuggingFace TEIを使用した実行
HuggingFaceは、すぐにセットアップできる優れたコンテナイメージを提供しています。
センチメントモデル
mkdir -p /opt/tei-sentiment-cache
docker run --rm --gpus all --shm-size 1g -p 8081:80 \
-v /opt/tei-sentiment-cache:/data \
ghcr.io/huggingface/text-embeddings-inference:latest \
--model-id cardiffnlp/twitter-roberta-base-sentiment-latest
これにより、ローカルインスタンスとしてcardiffnlp/twitter-roberta-base-sentiment-latest(投稿をポジティブ/ネガティブ/ニュートラルに分類できるオープンモデル)が起動します。
動作を確認するには、以下で確認できます。
curl http://localhost:8081/ \
-X POST \
-H 'Content-Type: application/json' \
-d "{ \"inputs\": \"I am happy\" }"
正常に動作していれば、各ラベルの信頼度を示す配列が返されるはずです。
感情モデル
感情分類も取得するには、感情モデルを使用して2番目のコンテナを実行します。
mkdir -p /opt/tei-emotion-cache
docker run --rm --gpus all --shm-size 1g -p 8082:80 \
-v /opt/tei-emotion-cache:/data \
ghcr.io/huggingface/text-embeddings-inference:latest \
--model-id SamLowe/roberta-base-go_emotions
サポートされているモデル
- cardiffnlp/twitter-roberta-base-sentiment-latest · Hugging Face — センチメント(ポジティブ/ネガティブ/ニュートラル)
- SamLowe/roberta-base-go_emotions · Hugging Face — 感情(28の感情ラベル)
Discourseインスタンスでの利用を可能にする
多くの場合、GPUのスピードアップのため、専用サーバーでこれらを実行することになります。その場合、リバースプロキシを実行し、TLS終了処理を行い、Discourseインスタンスのみが接続できるようにエンドポイントを保護することを推奨します。
Discourse AIの設定
Discourse AIには、オープンソースモデルの推論サーバーを設定するためのサイト設定が含まれています。ai_sentiment_model_configs設定を使用して、サーバーを指す必要があります。
この設定は、モデル構成のJSON配列を受け入れます。各エントリには以下が必要です。
| フィールド | 説明 |
|---|---|
model_name |
HuggingFaceモデルID(例: cardiffnlp/twitter-roberta-base-sentiment-latest) |
endpoint |
TEIインスタンスのURL(例: https://your-server:8081) |
api_key |
エンドポイントのAPIキー(不要な場合は空欄のままにできます) |
センチメントと感情の両方のダッシュボードを取得するには、実行している各モデルのエントリを追加します。例えば、両方のモデルをローカルで実行している場合:
- エントリ1: model_name
cardiffnlp/twitter-roberta-base-sentiment-latest、endpointhttps://your-server:8081 - エントリ2: model_name
SamLowe/roberta-base-go_emotions、endpointhttps://your-server:8082
その後、ai_sentiment_enabledを切り替えて分類を有効にします。
