Discourse AI プラグインは、新しい投稿の感情・センチメント分類をリクエストする機能をサポートしており、このデータはデータベースに保存され、レポートや管理ダッシュボードで利用できます。
Discourse AI は、それぞれ固有のモデルを必要とする 2 種類の分類をサポートしています。
- センチメント — 投稿をポジティブ、ネガティブ、またはニュートラルに分類します(
cardiffnlp/twitter-roberta-base-sentiment-latestを使用) - 感情 — 喜び、怒り、驚きなど、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 \
--revision refs/pr/30
これにより、投稿をポジティブ/ネガティブ/ニュートラルに分類できるオープンモデルである 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 を切り替えて分類機能を有効にします。
