このトピックでは、MaxCompute のパブリックモデルを使用してオンラインコメントの感情分析を実行する方法を説明します。
利用シーン
ソーシャルメディアや E コマースプラットフォームの急速な発展に伴い、世論や意見を豊富に含むユーザー生成コメントが急増しています。感情分析は、世論モニタリング、ブランド管理、プロダクトの最適化にとって不可欠なツールとなっています。このトピックでは、SQL を使用して MaxCompute の AI 関数を呼び出し、qwen3.7-max などの組み込みのパブリック大規模モデルを利用して、コメントから感情分類と地理情報の抽出を直接実行する実践的な例を紹介します。このプロセスでは、モデルデプロイ、外部サービス、データ移動は不要です。安全で管理された環境でインテリジェント分析を実行できるため、分析効率と利便性が大幅に向上します。
メリット
MaxCompute のパブリックモデルと AI 関数を使用することで、モデルのデプロイや関数の開発を行うことなく、テキストの感情分析などの複雑なデータ分析タスクを実行できます。
分析はプラットフォーム内で完結するため、データ移行や外部サービスは不要で、データセキュリティとコンプライアンスが保証されます。
このアプローチは参入障壁を下げ、分析効率を向上させます。静的マッピングテーブルや正規表現などの従来のデータ分析手法と比較して、スケーラビリティと柔軟性が高く、複雑な関係性を扱うことができます。また、このアプローチはよりユーザーフレンドリであり、メンテナンスコストを削減します。
前提条件
すでに MaxCompute を有効化し、MaxCompute プロジェクトを作成している場合は、このステップをスキップしてください。
データの準備
この例では、odpscmd クライアントを使用してコマンドを実行します。
テーブルの作成
テーブルの作成に関する詳細については、「テーブルの作成と削除」をご参照ください。
CREATE TABLE IF NOT EXISTS emotional_comment
(
content_id STRING COMMENT 'コメント ID',
text STRING COMMENT 'コメント内容',
publish_time STRING COMMENT 'コメント時間',
user_id STRING COMMENT 'ユーザー ID',
user_followers STRING COMMENT 'ユーザーフォロワー数',
user_region STRING COMMENT 'ユーザーの地域',
repost_count STRING COMMENT 'リポスト数',
comment_count STRING COMMENT 'コメント数',
quote_count STRING COMMENT '引用数'
);データのインポート
サンプルデータファイルをダウンロードします: demo_comment.csv。
TUNNEL UPLOAD demo_comment.csv emotional_comment;
SELECT * FROM emotional_comment LIMIT 10;
+------------------+----------------------------------------------------+---------------+------------+----------------+-------------+--------------+---------------+-------------+
| content_id | text | publish_time | user_id | user_followers | user_region | repost_count | comment_count | quote_count |
+------------------+----------------------------------------------------+---------------+------------+----------------+-------------+--------------+---------------+-------------+
| 5087a5a3c22e3f4c | The weather is great today, and I'm in a good mood! The sun is shining, perfect for a walk. | 2025/5/27 12:49 | user_918561 | 132169 | Xi'an | 1015 | 3197 | 1300 |
| 299aa8f97b6fee2f | The weather is great today, and I'm in a good mood! The sun is shining, perfect for a walk. | 2025/5/31 07:46 | user_403208 | 669019 | Hohhot | 6616 | 4876 | 201 |
| e7ee00dec51b28f6 | Technology is advancing rapidly, and AI is changing our lives. | 2025/5/17 11:39 | user_291936 | 840757 | Nanning | 264 | 3668 | 174 |
| 0c0d61608cabbac3 | The prevention and control measures are very effective. Thumbs up to the healthcare workers! | 2025/5/18 03:29 | user_154572 | 925604 | Fuzhou | 2154 | 652 | 470 |
| 106b979787b580d1 | The weather is great today, and I'm in a good mood! The sun is shining, perfect for a walk. | 2025/5/28 14:45 | user_528807 | 656952 | Qingdao | 6617 | 3890 | 1275 |
| 05b0e2ef4636d5c9 | Environmental awareness needs to be further improved to protect our planet. | 2025/5/16 09:06 | user_693289 | 211093 | Foshan | 4283 | 1592 | 1792 |
| c9773c4a632a8839 | The service at this restaurant is excellent, and the food is delicious. Highly recommended. | 2025/5/21 19:19 | user_850376 | 817461 | Shenyang | 9552 | 3974 | 1740 |
| 089e0c5dddc53198 | Environmental awareness needs to be further improved to protect our planet. | 2025/5/17 10:58 | user_800324 | 716599 | Harbin | 5725 | 4437 | 939 |
| 04fd7323a957d978 | Education reform measures need more time to show results. | 2025/5/26 01:25 | user_544689 | 416372 | Hefei | 1440 | 4185 | 416 |
| 04cf4066c5c1e9c7 | The service at this restaurant is excellent, and the food is delicious. Highly recommended. | 2025/5/27 03:49 | user_373334 | 722353 | Changchun | 1134 | 3936 | 773 |
+------------------+----------------------------------------------------+---------------+------------+----------------+-------------+--------------+---------------+-------------+
パブリックモデルの表示
次の SQL コマンドを実行して、パブリックモデル qwen3.7-max の詳細を表示します。
-- フラグを設定します。
SET odps.namespace.schema=false;
-- パブリックモデルの詳細を表示します。
DESC MODEL bigdata_public_modelset.`qwen3.7-max`;
+------------------------------------------------------------------------------------+
| モデル情報 |
+------------------------------------------------------------------------------------+
| Owner: RAM$odps@aliyun-inner.com:maxcompute_bigdata_public |
| Project: bigdata_public_modelset |
| Model Name: qwen3.7-max |
| Model Type: LLM |
| Source Type: REMOTE |
| Default Version: v1 |
| CreateTime: 2026-05-25 14:51:41 |
| LastModifiedTime: 2026-05-25 14:51:41 |
| Model ID: 724b2d7984f94f9a9e110969514e23e1 |
| Comment: MaxCompute Public LLM Model qwen3.7-max |
+------------------------------------------------------------------------------------+
| バージョン情報 |
+------------------------------------------------------------------------------------+
| Owner: RAM$odps@aliyun-inner.com:maxcompute_bigdata_public |
| Project: bigdata_public_modelset |
| Model Name: qwen3.7-max |
| Model Type: LLM |
| Source Type: REMOTE |
| Version Name: v1 |
| Version ID: de37f6e4323346ebbcfbed0789194647 |
| Path: |
| CreateTime: 2026-05-25 14:51:41 |
| LastModifiedTime: 2026-05-25 14:51:41 |
| default_enable_thinking: TRUE |
| modelstudio_model_name: qwen3.7-max |
| price_tier: {
"tier1": [0,1024000]
} |
| reasoning_mode: TRUE |
+------------------------------------------------------------------------------------+
| Input | Type | Comment |
+------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------+
データの分析
次のコード例は、MaxCompute の AI_GENERATE 関数とパブリック大規模モデル (qwen3.7-max) を使用して、1 つの SQL クエリで 2 つの AI 推論タスクを同時に実行する方法を示しています。
地理情報の解析: ユーザーのコメント内の都市名 (例:「西安」) に基づいて、省 (例:「陝西省」) を自動的に推論します。
感情分類: コメントテキストに対して感情分析を実行し、標準化されたラベル (「ポジティブ」、「ネガティブ」、または「ニュートラル」) を出力します。
詳細については、「AI_GENERATE」をご参照ください。
-- AI_GENERATE 関数を使用して、組み込みの qwen3.7-max モデルを呼び出し、省名と感情分析ラベルを生成します。
SELECT
AI_GENERATE(
bigdata_public_modelset.`qwen3.7-max`,
default_version,
CONCAT(
'Provide the province where the following city is located. If the city is a municipality or special administrative region, return the city name itself. Output only the province name. City name:',user_region),
'{"max_tokens": 1000, "temperature": 0.7}'
) as province,
user_region,
AI_GENERATE(
bigdata_public_modelset.`qwen3.7-max`,
default_version,
CONCAT(
'Perform sentiment classification on the following comment. The output must be one of these three options: Positive, Negative, Neutral. Comment to analyze:', text),
'{"max_tokens": 1000, "temperature": 0.7}'
) as sentiment_label,
text
FROM emotional_comment limit 20
;
+--------------------+----------------+--------------------+----------------------------------------------------+
| province | user_region | sentiment_label | text |
+--------------------+----------------+--------------------+----------------------------------------------------+
| "Shaanxi Province" | Xi'an | "Positive" | The weather is great today, and I'm in a good mood! The sun is shining, perfect for a walk. |
| "Inner Mongolia Autonomous Region" | Hohhot | "Positive" | The weather is great today, and I'm in a good mood! The sun is shining, perfect for a walk. |
| "Guangxi" | Nanning | "Positive" | Technology is advancing rapidly, and AI is changing our lives. |
| "Fujian Province" | Fuzhou | "Positive" | The prevention and control measures are very effective. Thumbs up to the healthcare workers! |
| "Shandong Province" | Qingdao | "Positive" | The weather is great today, and I'm in a good mood! The sun is shining, perfect for a walk. |
| "Gansu Province" | Lanzhou | "Neutral" | Education reform measures need more time to show results. |
| "Fujian Province" | Fuzhou | "Positive" | Technology is advancing rapidly, and AI is changing our lives. |
| "Hunan Province" | Changsha | "Negative" | I strongly protest this measure, it's completely unreasonable! |
| "Chongqing" | Chongqing | "Positive" | The prevention and control measures are very effective. Thumbs up to the healthcare workers! |
| "Guangdong Province" | Guangzhou | "Positive" | Food safety cannot be ignored; regulation must be stricter. |
| "Shaanxi Province" | Xi'an | "Negative" | The stock market has been very volatile lately, so invest with caution. |
| "Shandong Province" | Jinan | "Positive" | The weather is great today, and I'm in a good mood! The sun is shining, perfect for a walk. |
| "Tianjin" | Tianjin | "Positive" | The new product launch was very successful, looking forward to future developments. |
| "Tianjin" | Tianjin | "Positive" | The weather is great today, and I'm in a good mood! The sun is shining, perfect for a walk. |
| "Xinjiang" | Urumqi | "Negative" | Housing prices have gone up again, and the pressure on young people to buy a home is increasing. |
| "Guangxi" | Nanning | "Positive" | The new product launch was very successful, looking forward to future developments. |
| "Qinghai Province" | Xining | "Positive" | The sporting events are spectacular. Let's cheer for the athletes! |
| "Heilongjiang Province" | Harbin | "Negative" | The stock market has been very volatile lately, so invest with caution. |
| "Heilongjiang Province" | Harbin | "Positive" | The sporting events are spectacular. Let's cheer for the athletes! |
| "Jiangsu Province" | Nanjing | "Negative" | The traffic congestion is terrible. I was half an hour late for work, so annoying. |
+--------------------+----------------+--------------------+----------------------------------------------------+