Snowflake AI_SENTIMENT 関数を用いた高精度な感情分析
SNOWFLAKE WORLD TOUR TOKYO 2025
2025/9/11 - 12の2日間、Snowflake の国内最大のイベント『SNOWFLAKE WORLD TOUR TOKYO 2025』が開催されます!データ活用の最前線を是非体感しに来てください!私は『Snowflake Cortex AISQL を用いた高度な分析手法』というセッションで登壇させていただきます。AISQL の基本から応用までキャッチアップできますので是非ご登録いただければ嬉しいですー!(9/12の方がまだ空席がございます)
はじめに
先日、少し早めの夏期休暇をいただいて家族で台北旅行に行ってきました。あいにく終始台風の影響で行動が制限される状況でしたが、それでもリフレッシュできましたので今日もまた Snowflake の新しい情報を皆様にお届けできればなと思います。
さて、Snowflake の Cortex AISQL に新しく追加された AI_SENTIMENT 関数 が 2025/7/25にGAとなりました!従来の ENTITY_SENTIMENT 関数と比較して 大幅に精度が向上した感情分析機能 を Snowflake の SQLから直接利用できるようになりました。
AI_SENTIMENT 関数は、単純な「ポジティブ / ネガティブ」の判定だけでなく、アスペクト (特定のカテゴリ) ベースの感情分析 にも対応しています。例えば、レストランのレビューであれば「料理の味」「価格」「サービス」といった具体的な側面ごとに感情を分析できるため、より深いインサイトを得ることが可能です。
本記事では、実際の検証結果を交えながら AI_SENTIMENT 関数の価値と活用方法について詳しく解説していきます。日本語環境での動作検証 も行っており、特に皆様が気になる実用的な情報をお届けできればと思います!
AI_SENTIMENT 関数とは
AI_SENTIMENT 関数は、Snowflake Cortex AISQL における最新の感情分析機能です。従来の ENTITY_SENTIMENT 関数と比較して 精度が大幅に向上 し、また多言語環境下における感情分析にも対応しました。
主な特徴
- 業界最高水準の精度: アスペクト感情分析で0.92という高い精度を実現
- 豊富な感情分類: positive, negative, neutral, mixed, unknown の5段階で詳細な分析
- 多言語対応: 英語、フランス語、ドイツ語、ヒンディー語、イタリア語、ポルトガル語の6言語をネイティブサポート
- アスペクトベース分析: 最大10個のアスペクトを同時に分析可能
ベンチマーク性能
AI_SENTIMENT は、主要な LLM と比較して優れた性能を示しています:
モデル | アスペクト感情分析精度 (ABSA-mix) | アスペクト感情分析精度 (ABSA-multilingual) | 総合感情分析精度 | 総合感情分析精度 (多言語) |
---|---|---|---|---|
AI_SENTIMENT | 0.92 | 0.81 | 0.83 | 0.83 |
claude-4-sonnet | 0.84 | 0.79 | 0.75 | 0.82 |
mistral-large2 | 0.83 | 0.80 | 0.77 | 0.78 |
openai-gpt-4.1 | 0.83 | 0.73 | 0.80 | 0.78 |
llama4-scout | 0.82 | 0.79 | 0.71 | 0.76 |
llama3.3-70b | 0.82 | 0.79 | 0.71 | 0.76 |
AWS DetectSentiment | - | - | 0.62 | 0.64 |
この高い精度により、ビジネスクリティカルな感情分析タスクにも安心して適用できます。
基本的な使い方
AI_SENTIMENT 関数は2つの使用パターンがあります:
1. 総合感情分析
最もシンプルな使用方法で、テキスト全体の感情を分析します:
SELECT AI_SENTIMENT('テキスト内容');
2. アスペクトベース感情分析
特定のカテゴリ (アスペクト) に対する感情を個別に分析します:
SELECT AI_SENTIMENT('テキスト内容', ['アスペクト1', 'アスペクト2', ...]);
最大10個のアスペクトを指定でき、各アスペクトは30文字以内で指定する必要があります。
日本語環境での検証結果
「日本語はサポートされていないけど日本語は使えないの?」と気になる方いらっしゃるかなと思います。
実際に日本語のテキストで AI_SENTIMENT 関数を検証してみました。結論から言うと日本語環境下でも十分に使えると考えられます。
検証1: アスペクトを英語で指定
SELECT AI_SENTIMENT(
'このレストランのオムライスはかなり美味しいです。卵は朝採れたものでした。ただ周辺の店に比べてかなり高いのが難点ですね。',
['Price', 'Taste', 'Freshness']
);
結果:
{
"categories": [
{
"name": "overall",
"sentiment": "mixed"
},
{
"name": "Freshness",
"sentiment": "positive"
},
{
"name": "Price",
"sentiment": "negative"
},
{
"name": "Taste",
"sentiment": "positive"
}
]
}
いかがでしょうか?日本語のテキストを正確に理解し、各アスペクトの感情を適切に分析できていることが分かるかと思います:
- overall: mixed(全体的に複雑な感情)
- Freshness: positive(新鮮さは好評価)
- Price: negative(価格は不満)
- Taste: positive(味は好評価)
検証2: アスペクトを日本語で指定
続いて、アスペクトを日本語で指定してみました:
SELECT AI_SENTIMENT(
'このレストランのオムライスはかなり美味しいです。卵は朝採れたものでした。ただ周辺の店に比べてかなり高いのが難点ですね。',
['価格', '味', '鮮度']
);
結果:
{
"categories": [
{
"name": "overall",
"sentiment": "mixed"
},
{
"name": "価格",
"sentiment": "unclassified"
},
{
"name": "味",
"sentiment": "positive"
},
{
"name": "鮮度",
"sentiment": "unclassified"
}
]
}
こちらは一部のアスペクトが「unclassified」となってしまいました。「味」は正しく「positive」と判定されていますが、「価格」と「鮮度」は認識できていません。
検証結果の考察
この検証から以下のことが分かりました:
- コンテンツの日本語理解: テキスト内容は日本語でも高い精度で理解される
- アスペクトの制約: アスペクトは英語など対応言語で指定する必要がある
- 実用的な回避策: 日本語環境でも英語のアスペクトを使用すれば十分実用的に使える可能性が高い
つまり、日本語環境でも「Price」「Quality」「Service」といった英語のアスペクトラベルを使用することで、高精度な感情分析が実現できるのではないでしょうか?但し正式にはサポートされていない言語ですので、十分な検証とリスクの検討を行う必要があります。
対応言語
AI_SENTIMENT は以下の言語をネイティブサポートしています:
- 英語 (English)
- フランス語 (French)
- ドイツ語 (German)
- ヒンディー語 (Hindi)
- イタリア語 (Italian)
- ポルトガル語 (Portuguese)
残念ながら 日本語は公式サポートされていません が、前述の検証の通り、コンテンツについては日本語でも利用できそうです。
ビジネス活用シーン
AI_SENTIMENT 関数が威力を発揮する代表的なビジネスシーンをご紹介します:
1. ソーシャルメディア監視
ブランドや製品に関する SNS の投稿を継続的に監視し、リアルタイムで感情の変化を把握できます:
2. 商品レビュー分析
EC サイトの商品レビューを多面的に分析し、改善点を特定できます:
3. 顧客サポート分析
サポートチケットやチャットログから顧客満足度を測定できます:
4. 従業員エンゲージメント分析
従業員アンケートやフィードバックから組織の健全性を測定できます:
感情分類の詳細
AI_SENTIMENT が返す感情分類について詳しく説明します:
分類 | 説明 | 例 |
---|---|---|
positive | 明確にポジティブな感情 | 「素晴らしい品質です」 |
negative | 明確にネガティブな感情 | 「全く期待外れでした」 |
neutral | 中立的な感情 | 「普通の商品だと思います」 |
mixed | ポジティブとネガティブが混在 | 「品質は良いが価格が高い」 |
unknown | 判定不可能 | 該当するアスペクトが存在しない場合 |
特に mixed の判定により、複雑な感情を含むテキストも適切に分析でき、AI_SENTIMENT の大きな強みと言えます。
制限事項と注意点
AI_SENTIMENT 関数を使用する際の制限事項をまとめました:
技術的制限
制限項目 | 詳細 |
---|---|
コンテキストウィンドウ | 2,048トークン |
最大アスペクト数 | 10個まで |
アスペクト文字数 | 各30文字以内 |
対応言語 | 6言語 (日本語はサポート対象外) |
使用上の注意
- 長文の分割: 2,048トークンを超える場合は事前にチャンク化するなどの対応が必要
- アスペクトの選定: ビジネス目的に合った適切なアスペクトの選定が重要、また英語で指定するのが無難です
コストについて
AI_SENTIMENT 関数のクレジット消費量は 100万トークンあたり1.6クレジット となっており、比較的安価に使えるのではないかなと思います。詳細なクレジット消費量については Snowflake Credit Consumption Table をご参照ください。
主なコストメリット
- データ移動不要: Snowflake 内でデータ処理が完結
- インフラ不要: 専用の AI インフラ構築が不要
- 運用自動化: SQL による簡単な自動化が可能
- 従量課金: 使用した分だけの課金で無駄なコストが発生しない
まとめ
AI_SENTIMENT 関数は、感情分析の精度とビジネス適用性を両立した画期的な機能 です。特に以下の点で大きな価値を提供します:
主要なメリット
- 業界最高水準の精度: 0.92という高いアスペクト感情分析精度
- 複雑な感情の理解: mixed感情や暗示的な表現も正確に分析
- SQL 統合: 既存のデータパイプラインへの容易な組み込み
- コスト効率: 外部サービスと比較して大幅なコスト削減
日本語環境での推奨事項
検証結果から、日本語環境でも以下の工夫により実用的に活用できると考えられます:
- アスペクトラベルは英語を使用 (Price, Quality, Service など)
- 日本語コンテンツは高精度で理解される (但し正式にはサポートされていないためご注意ください)
顧客の声分析、ブランド監視、従業員満足度調査など、様々なビジネスシーンで AI_SENTIMENT 関数を活用し、データドリブンな意思決定をセキュアに最速で実現していただければ幸いです。
宣伝
SNOWFLAKE DISCOVER で登壇しました!
2025/4/24-25に開催されました Snowflake のエンジニア向け大規模ウェビナー『SNOWFLAKE DISCOVER』において『ゼロから始めるSnowflake:モダンなデータ&AIプラットフォームの構築』という一番最初のセッションで登壇しました。Snowflake の概要から最新状況まで可能な限り分かりやすく説明しておりますので是非キャッチアップにご活用いただければ嬉しいです!
以下リンクでご登録いただけるとオンデマンドですぐにご視聴いただくことが可能です。
生成AI Conf 様の Webinar で登壇しました!
『生成AI時代を支えるプラットフォーム』というテーマの Webinar で NVIDIA 様、古巣の AWS 様と共に Snowflake 社員としてデータ*AI をテーマに LTをしました!以下が動画アーカイブとなりますので是非ご視聴いただければ幸いです!
X で Snowflake の What's new の配信してます
X で Snowflake の What's new の更新情報を配信しておりますので、是非お気軽にフォローしていただければ嬉しいです。
日本語版
Snowflake の What's New Bot (日本語版)
English Version
Snowflake What's New Bot (English Version)
変更履歴
(20250726) 新規投稿
(20250728) コストの単価の記載誤りがあったため訂正
Discussion