情感分析是企业洞察客户需求和改进产品服务的重要工具。近年来,随着自然语言处理 (NLP) 技术的飞速发展,情感分析变得更加精准高效。Google 推出的 Gemini 模型,作为大型语言模型 (LLM) 的代表,拥有强大的文本处理能力,可帮助企业轻松实现情感分析。
Gemini 模型在 BigQuery 中的应用
BigQuery 作为 Google 云数据仓库,拥有强大的数据分析能力。将 Gemini 模型与 BigQuery 结合,可以实现更加高效的情感分析。具体来说,BigQuery 提供了 ML.GENERATE_TEXT 函数,该函数允许您直接在 SQL 查询中利用 Gemini 模型来分析 BigQuery 表中的文本。这意味着您无需将数据从 BigQuery 迁移到其他平台或编写复杂的代码,就可以进行深入的文本分析。
ML.GENERATE_TEXT 函数还可用于使用基于gemini-pro-vision 多模态模型的远程模型来生成描述视觉内容的文本。该功能主要具有以下优势:
-
易于使用: 基于 SQL 的查询方式,即使非专业人员也能轻松上手。
-
可扩展性: BigQuery 可以处理海量数据,Gemini 模型可以高效分析大规模文本数据。
-
强大的分析能力: Gemini 模型可以进行细粒度的文本分析,提取情感、主题、关键词等信息。
-
灵活的应用场景: 情感分析、主题提取、文本摘要、文本生成等多种场景。
接下来,我们以假设的一个打车公司为例,了解如何使用 ML.GENERATE_TEXT 函数:
设置说明:
-
开始之前,请选择您的 GCP 项目,链接结算帐户,并启用必要的API;
-
创建云资源连接并获取连接的服务账户;
-
授予服务帐户访问权限。
-
加载数据。要从公共存储帐户加载,请使用以下命令:
-
请将“[PROJECT_ID.DATASET_ID]”替换为您的 project_id,并输入数据集的名称
-
该命令将在您的数据集中创建一个名为“ customer_review ”的表
-
CREATE SCHEMA IF NOT EXISTS `[PROJECT_ID.DATASET_ID]` OPTIONS (location='us');
LOAD DATA OVERWRITE `[PROJECT_ID.DATASET_ID].customer_review`
FROM FILES ( format = 'PARQUET',
uris = ['gs://data-analytics-golden-demo/rideshare-lakehouse-raw-bucket/rideshare_llm_export/v1/raw_zone/customer_review/000000000000.parquet']);
情感分析
然后,让我们来看一个执行情感分析的例子。
1.创建模型
在 BigQuery 中创建一个利用 Vertex AI 基础模型的远程模型。
句法:
CREATE OR REPLACE MODEL
`PROJECT_ID.DATASET_ID.MODEL_NAME`
REMOTE WITH CONNECTION `PROJECT_ID.REGION.CONNECTION_ID`
OPTIONS (ENDPOINT = 'ENDPOINT');
代码示例:
-
请替换
'
[PROJECT_ID.DATASET_ID.MODEL_NAME]
'
为您的 project_id、dataset_id 和模型名称 -
请替换
'
[PROJECT_ID.REGION.CONNECTION_ID]
'
为您的 project_id、region 和 connection_id
CREATE OR REPLACE MODEL `[PROJECT_ID.DATASET_ID.MODEL_NAME]`
REMOTE WITH CONNECTION `[PROJECT_ID.REGION.CONNECTION_ID]`
OPTIONS (ENDPOINT = 'gemini-pro');
2.生成文本
只需几行 SQL,您就可以使用该模型和 ML.GENERATE_TEXT 函数分析 BigQuery 表中的文本或视觉内容。
ML.GENERATE_TEXT 语法因远程模型所针对的 Vertex AI 模型而异。阅读文档以了解 ML.GENERATE_TEXT 函数的所有参数。
句法:
ML.GENERATE_TEXT(
MODEL project_id.dataset.model,
{ TABLE project_id.dataset.table | (query_statement) },
STRUCT(
[max_output_tokens AS max_output_tokens]
[, top_k AS top_k]
[, top_p AS top_p]
[, temperature AS temperature]
[, flatten_json_output AS flatten_json_output]
[, stop_sequences AS stop_sequences])
)
代码示例:
-
请替换
'
[PROJECT_ID.DATASET_ID]
'
为您的 project_id 和 dataset_id -
请替换
'
[PROJECT_ID.REGION.CONNECTION_ID]
'
为您的 project_id、region 和 connection_id
CREATE OR REPLACE TABLE `[PROJECT_ID.DATASET_ID].review_sentiment_analysis` AS
WITH PROMPT AS (
SELECT CONCAT ('For the given review classify the sentiment as Positive, Neutral or Negative.',
'\n input: The driver was able to make some small talk, but he didn\'t go overboard. I liked that he was friendly and chatty, but he also knew when to leave me alone. The trunk fit my belongings, and the car was clean and comfortable. Overall, it was a good ride.',
'\n output: \n Positive - Trunk fit my belongings, friendly, chatty',
'\n input: I took a rideshare last night and it was an okay experience. The car was adequately clean, but it was a bit warm for my liking. The driver was able to make some small talk, but I wasn\'t really in the mood to talk. Overall, it was a fine ride.',
'\n output: Neutral - Clean, A bit warm, fun ride',
'\n input: ', customer_review_text,
'\n output: '
) AS prompt, customer_id,
customer_review_text
FROM `[PROJECT_ID.DATASET_ID].customer_review`
LIMIT 20
),
REVIEW_RESPONSE_GENERATION AS (
SELECT *
FROM
ML.GENERATE_TEXT(
MODEL `[PROJECT_ID.DATASET_ID.MODEL_NAME]`,
(SELECT * FROM PROMPT),
STRUCT(
200 AS max_output_tokens,
0.5 AS temperature,
40 AS top_k,
1.0 AS top_p,
TRUE AS flatten_json_output))
)
SELECT ml_generate_text_llm_result, customer_id, customer_review_text, prompt, ml_generate_text_status FROM REVIEW_RESPONSE_GENERATION;
SELECT ml_generate_text_llm_result, customer_id, customer_review_text, prompt, ml_generate_text_status FROM `[PROJECT_ID.DATASET_ID].review_sentiment_analysis`;
3.结果:
在提示中,我们为模型提供了上下文以及两个示例,清晰地展示了我们期望的输出格式。您可以通过少量样本提示的方法,验证生成的输出是否与我们提供的示例保持一致。
少量样本提示中,包含一些带有相应情感标签的评论示例对于引导模型行为至关重要。为了确保模型在各种情况下都能有效工作,提供足够数量的结构良好的示例(涵盖各种评论场景)是必不可少的。
然后,通过对客户评论进行情感分析,我们可以深入了解他们对我们产品的偏好和痛点。通过识别评论中的关键主题,我们可以有效地将宝贵的反馈传达给产品团队,使他们能够做出数据驱动的明智决策并进行改进。
在上表中,您可以看到 ML.GENERATE_TEXT 的结果,其中包括输入表以及以下列:
-
ml_generate_text_result:这是 JSON 响应,生成的文本位于文本元素中。
-
ml_generate_text_llm_result:包含生成文本的 STRING 值。当 flatten_json_output 为 TRUE 时返回此列。
-
ml_generate_text_rai_result:包含安全属性的 STRING 值。当 flatten_json_output 为 TRUE 时返回此列。
-
ml_generate_text_status:一个字符串值,包含相应行的 API 响应状态。如果操作成功,则此值为空。
提取主题
接着,让我们使用上面创建的模型从评论中提取主题:
-
请替换
'
[PROJECT_ID.DATASET_ID]
'
为您的 project_id 和 dataset_id
CREATE OR REPLACE TABLE `[PROJECT_ID.DATASET_ID].extract_themes` AS
WITH PROMPT AS (
SELECT CONCAT(
"""
Classify the text as one or more of the following categories and return in the below json format.
- "trunk space small"
- "trunk space large"
- "driving too fast"
- "driving too slow"
- "clean car"
- "dirty car"
- "car too hot"
- "car too cold"
- "driver likes conversation"
- "driver likes no conversation"
- "driver likes music"
- "driver likes no music"
- "distracted driver"
JSON format: [ "value" ]
Sample JSON Response: [ "dirty car", "car too cold" ]
Text:
""", customer_review_text) AS prompt, customer_id, customer_review_text
FROM `[PROJECT_ID.DATASET_ID].customer_review`
LIMIT 10
),
EXTRACT_THEMES AS (
SELECT *
FROM
ML.GENERATE_TEXT(
MODEL `[PROJECT_ID.DATASET_ID.MODEL_NAME]`,
(SELECT * FROM PROMPT),
STRUCT(
1024 AS max_output_tokens,
0 AS temperature,
1 AS top_k,
0 AS top_p,
TRUE AS flatten_json_output))
)
SELECT ml_generate_text_llm_result, customer_id, customer_review_text, prompt, ml_generate_text_status FROM EXTRACT_THEMES;
SELECT ml_generate_text_llm_result, customer_id, customer_review_text, prompt, ml_generate_text_status FROM `[PROJECT_ID.DATASET_ID].extract_themes`;
结果:
使用 BigQuery 控制台中的 ML.GENERATE_TEXT 函数和 SQL,我们可以高效地识别客户评论中的关键主题。这让我们能够更深入地了解客户的看法,并提供可操作的数据来改进我们的产品。
分析主题
现在我们已经确定了评论的主题,让我们更深入地了解BigQuery 中的数据画布,这是我们在 Next '24 上推出的以AI 为中心的体验,旨在重新构想数据分析。BigQuery 数据画布可让您使用自然语言发现、转换、查询和可视化数据。它还提供了一个图形界面,可让您在有向无环图 (DAG) 中使用数据源、查询和可视化,从而让您可以查看映射到您的思维模型的分析工作流程。
鉴于我们的主题存储在“extract_themes”表中,让我们创建一个数据画布来进一步分析它们。单击“+”图标旁边的向下箭头,然后选择“创建数据画布”
您将进入以下图示的页面,在其中搜索“提取主题”表并开始操作:
选择一个表,您就会在画布上看到它,您可以在其中直接查询它或将其与其他表连接。
要创建主题条形图,请单击“查询”按钮并输入“最常见主题的条形图,删除空值并将结果限制为前 10 个值”。即使“主题”不在专用列中,AI 也能理解您的请求并自动生成正确的查询 - AI 识别出主题位于“ml_genertae_text_llm_result”列中。最后,单击“运行”以查看查询结果。
到这里,您的主题数据已准备就绪!单击“可视化”即可立即查看您的条形图。
最后,您就可以成功拥有从客户评论中提取的主题的条形图,以及基于数据和发现的解释自动生成的有用见解。
简而言之,BigQuery 数据画布可让您使用简单的自然语言命令从头到尾分析数据:发现相关数据、将其与客户信息合并、找到关键见解、与团队成员协作以及创建报告 - 所有这些都在一个地方完成。此外,您可以保存这些结果或将它们与其他数据合并以进行进一步分析,或将其提取到笔记本中。
总结
Gemini 模型与 BigQuery 的结合,为企业提供了强大的情感分析工具。借助 Gemini 模型,企业可以轻松解码客户评论中的情感,洞察市场趋势,从而更好地改进产品服务,提升客户满意度。
立即联系 Cloud Ace云一,解锁您的商业洞察力!
Cloud Ace云一,致力于为中国出海企业提供专业、高效的云服务,助力您实现数字化转型,成功掌握更多商机!