mcpField
A
algo-social-sentiment

algo-social-sentiment

github.com/asgard-ai-platformデータ・データベース24339 回インストール21 週間前に更新
リポジトリ

algo-social-sentiment について

algo-social-sentimentは、モデルを学習せずにソーシャルメディアのテキストを評価するためのVADER感情分析スキルです。辞書とルールでスラング、顔文字、大文字、句読点を扱い、スコアと極性ラベルを出力します。

主な機能

  1. 01辞書とルールによる感情分析
  2. 02スラング、顔文字、強調表現への対応
  3. 03複合スコアと極性比率の算出
  4. 04閾値による極性ラベル付け
  5. 05結果確認とエッジケースのガイド

活用シーン

  1. 01ソーシャル投稿、ツイート、レビューの分析
  2. 02モデル学習なしでのテキスト評価
  3. 03複数テキストの感情分布の集計

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/asgard-ai-platform/skills --skill algo-social-sentiment

インストール後、Claude Code で/algo-social-sentimentを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

examples/
sample_scenario.md
references/
model-comparison.md
vader-rules.md

詳細

VADER 感情分析

概要

VADER(Valence Aware Dictionary and sEntiment Reasoner)は、ソーシャルメディアに最適化された辞書・ルールベースの感情分析ツールです。ポジティブ、ネガティブ、ニュートラルの割合を組み合わせた複合スコア [-1, +1] を返します。テキストごとの処理時間は O(n) で、n は単語数です。トレーニングは不要です。

使用する場面

適用条件:

  • ソーシャルメディアの投稿、ツイート、レビューの感情を分析する場合
  • ML モデルのトレーニングなしで、手軽に感情スコアを算出する場合
  • スラング、顔文字、くだけた表現を含むテキストを処理する場合

使用しない場面:

  • フォーマルな文章や学術的な文章の場合(VADER はソーシャルメディア向けに調整されています)
  • 特定のドメインの感情が重要な場合(例:金融関連の感情分析には FinBERT を使用してください)
  • 皮肉の検出が重要な場合(VADER は皮肉を検出しません)

アルゴリズム

IRON LAW: VADER Is Designed for SOCIAL MEDIA Text
It handles slang, emoticons, capitalization, and punctuation as
sentiment modifiers. Applying it to formal documents (legal, academic,
medical) produces unreliable scores. For domain-specific text, use
domain-trained models instead.
フェーズ 1:入力の検証

テキストをトークン化します。大文字表記(すべて大文字の場合は強調)、句読点(! は強調)、顔文字/絵文字を保持します。 判定条件: テキストが空でなく、エンコーディングが正しく処理されていること。

フェーズ 2:コアアルゴリズム
  1. 各トークンを VADER 辞書(感情スコア付きの用語を 7,500 件以上収録)で検索します
  2. 文法ルールを適用します:否定(「not good」=ネガティブ)、程度を表す修飾語(「very good」>「good」)、大文字による強調、句読点による強調
  3. ポジティブ、ネガティブ、ニュートラルの割合について、バレンスの生スコアを計算します
  4. 複合スコアを計算します:次の式を使い、すべてのバレンススコアの合計を正規化します:compound = sum / √(sum² + α)。ここで α = 15 です
フェーズ 3:検証

分類します:compound ≥ 0.05 → ポジティブ、≤ -0.05 → ネガティブ、それ以外 → ニュートラル。サンプル結果を抜き取り確認します。 判定条件: 10~20 件のサンプルを手動で抜き取り確認し、分類が妥当であること。

フェーズ 4:出力

テキストごとに複合スコアと極性分類を返します。

出力形式

{
  "results": [{"text": "...", "compound": 0.76, "pos": 0.45, "neu": 0.55, "neg": 0.0, "label": "positive"}],
  "metadata": {"texts_analyzed": 500, "distribution": {"positive": 0.45, "neutral": 0.35, "negative": 0.20}}
}

例

入出力の例

入力: "This product is AMAZING!!! 😍" 期待値: compound ≈ 0.87(ポジティブ)。大文字、!!!、😍 の絵文字によってスコアが強調されます。

エッジケース
入力期待値理由
"Not bad at all"ややポジティブ(約 0.2)二重否定が部分的に処理されます
"😂😂😂"ポジティブ絵文字は辞書に対応付けられています
空文字列Compound = 0、ニュートラルスコアを付けるトークンがありません

注意点

  • 皮肉は検出できません:「Oh great, another meeting」はポジティブと判定されます。VADER に皮肉の検出機能はありません。
  • 否定の適用範囲:VADER は 3 語の範囲内で否定を適用します。「I do not think this is bad」では、否定の連鎖を誤って解析する場合があります。
  • 絵文字の網羅性:VADER の絵文字辞書は新しい絵文字に対応していない場合があります。必要に応じて更新または補完してください。
  • 言語の制限:VADER は英語専用です。中国語や日本語には、言語別のツール(中国語の場合は SnowNLP など)を使用してください。
  • 複合スコアのしきい値への感度:0.05 の境界値は任意です。ユースケースや許容できる偽陽性の度合いに応じて、しきい値を調整してください。

参考資料

  • VADER の辞書とルールのドキュメントについては、references/vader-rules.md を参照してください
  • Transformer ベースの感情分析モデルとの比較については、references/model-comparison.md を参照してください

コメント