AI_SENTIMENT は、モデルを呼び出してテキストの感情分析を実行する MaxCompute の SQL AI 関数です。
構文
STRING AI_SENTIMENT(
STRING <model_name>,
STRING <version_name>,
STRING <input>
[, ARRAY<STRING> <categories>]
[, STRING <model_parameters>]
);パラメーター
model_name: 必須。使用するモデルの名前を STRING 型で指定します。詳細については、「SQL AI 関数」をご参照ください。
version_name:必須。 STRING。 使用するモデルのバージョン名です。デフォルトのバージョンを使用するには、
DEFAULT_VERSIONを指定します。input:必須。 STRING。 分析対象のテキストです。
categories:オプション。 ARRAY<STRING>。 感情分析のカテゴリです。デフォルトのカテゴリは
positive、negative、neutral、mixedです。このパラメーターには、定数配列または列を指定できます。定数配列を指定する場合は、1~10 個のカテゴリを含める必要があります。-
model_parameters:任意。モデルパラメーターを JSON 形式で指定する文字列です。
max_tokens、temperature、top_pなどを指定できます。例:'{"max_tokens": 500, "temperature": 0.6, "top_p": 0.95}'。-
max_tokens:1 回のモデル呼び出しで生成されるトークンの最大数です。MaxCompute パブリックモデルのデフォルト値は 4096 です。
-
temperature:0 ~ 1 の値で、モデルの出力のランダム性を制御します。値が大きいほど、より創造的で多様な出力になり、値が小さいほど、より確定的で保守的な出力になります。
-
top_p:0 ~ 1 の値で、モデルが考慮する候補ラベルの範囲を制限します。値が大きいほど、範囲が広がり多様性が増し、値が小さいほど、範囲が狭まり焦点が絞られた出力になります。
-
戻り値
感情カテゴリを示す STRING 値を返します。値は次のように決定されます:
inputテキストの感情を判定できない場合、関数は NULL を返します。inputが NULL または空の文字列 ("") の場合、またはcategories配列に空の文字列 ("") が含まれている場合、関数は NULL を返します。categoriesパラメーターが NULL の場合、関数はデフォルトのカテゴリであるpositive、negative、neutral、mixedを使用します。categoriesが 10 個を超えるカテゴリを含む定数配列の場合、関数はエラーを返します。
例
例 1:デフォルトのカテゴリでの感情分析
この例では、MaxCompute の qwen3-max パブリックモデルを使用して、製品レビューの感情を分析します。カスタムカテゴリを指定していないため、関数はデフォルトのカテゴリである positive、negative、neutral、mixed を使用します。
-- SQL ジョブでモデルコンピューティングサービスを使用します
SET odps.task.major.version=sql_modelstudio;
SET odps.namespace.schema=true;
SELECT AI_SENTIMENT(
bigdata_public_modelset.default.`qwen3-max`,
DEFAULT_VERSION,
'The product quality is excellent, and the shipping was fast. Highly recommended!'
) AS sentiment;
-- 結果
+-----------+
| sentiment |
+-----------+
| positive |
+-----------+例 2:カスタムカテゴリでの感情分析
この例では、MaxCompute の Qwen3-4B-GGUF パブリックモデルを使用して、複数の顧客レビューをカスタムカテゴリで分類します。categories パラメーターで、顧客満足度の分析用にカスタムのカテゴリセット (satisfied、unsatisfied、neutral) を指定します。
-- サンプルデータ
CREATE TABLE customer_feedback (
review STRING
);
INSERT INTO customer_feedback VALUES
('The service exceeded my expectations. I am very satisfied!'),
('The experience was terrible. The product broke after just one day of use.'),
('The package arrived on time. Nothing special.'),
('I love the design, but the battery life is too short.');
-- カスタムカテゴリを使用して顧客フィードバックの感情を分析します
SET odps.sql.ai.treat.as.common.model=true;
SET odps.namespace.schema=true;
SELECT
review,
AI_SENTIMENT(
bigdata_public_modelset.default.`Qwen3-4B-GGUF`,
DEFAULT_VERSION,
review,
ARRAY('satisfied', 'unsatisfied', 'neutral')
) AS sentiment
FROM customer_feedback;
-- 結果
+---------------------------------------------------------------------------+-------------+
| review | sentiment |
+---------------------------------------------------------------------------+-------------+
| The service exceeded my expectations. I am very satisfied! | satisfied |
| The experience was terrible. The product broke after just one day of use. | unsatisfied |
| The package arrived on time. Nothing special. | neutral |
| I love the design, but the battery life is too short. | neutral |
+---------------------------------------------------------------------------+-------------+