我們在上一篇有提到 BigQuery Gemini 的新功能,接下來這篇將為您帶來解析顧客評論中的情緒密碼,如何利用情緒分析,帶來更理性及精確的商業分析。情緒分析是一種強大的工具,它使用自然語言處理 (NLP) 來檢視文字(例如客戶評論)中的​​潛在情緒(正面、負面、中性)。此分析可以提供有關客戶如何看待您的產品、服務和品牌的寶貴見解。此外,透過主題建模和關鍵字擷取等技術,您可以識別重複出現的主題。這些主題可以突出顯示特定的產品功能、客戶服務的各個方面或一般痛點,進而提供精準商業報告,針對客戶需求提供有效解決方案。

在 BigQuery 中,您可以使用 ML.GENERATE_TEXT 函數,該函數可讓您在 SQL 查詢中直接利用來自 Google Vertex AI 的強大大型語言模型 ( LLM ) 來分析 BigQuery 表中的文字。這意味著您可以對 BigQuery 中儲存的資料執行複雜的文字分析,更無需在 BigQuery 環境之外,移動資料或編寫複雜的程式碼。 ML.GENERATE_TEXT 函數也可用於使用基於 Gemini-Pro-Vision 多模態模型可通過遠端生成文字來描述視覺內容。以下為功能優勢說明:

  1. 易於使用:BigQuery 的 SQL 整合,可讓您利用高階語言模型功能,無需單獨的機器學習管道或專門的編碼專業知識。
  2. 可擴展性:BigQuery 在處理海量資料集方面的優勢與法學碩士完美結合,可以大規模處理客戶評論或其他文字來源。
  3. 洞察力生成:ML.GENERATE_TEXT 有助於完成以下任務:
  • 情緒分析:確定客戶回饋中的整體情緒基調(正面、負面、中性)。
  • 主題提取:識別評論中的共同主題和趨勢
  • 總結:將冗長的評論濃縮為要點。
  • 文字完成與產生:根據現有評論取得回應、廣告文案或創意寫作的協助。

ML.GENERATE_TEXT 的實際應用

我們手把手地利用三步驟,帶領你從情緒分析中提取主題,並分析主題。以一家假設的共享汽車公司為例,看看如何使用 ML.GENERATE_TEXT 。

設定說明:

  1. 在開始之前,選擇您的 GCP 項目、關聯結算帳戶並啟用必要的 API;完整說明請參閱此處
  2. 建立雲端資源連線並取得該連線的服務帳號;完整指南在這裡
  3. 請依照此處的步驟授予對服務帳戶的存取權限。 
  4. 載入數據。若要從公共儲存帳戶加載,請使用以下命令:
    • 請將「[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 基礎模型的遠端模型。

Syntax:

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 函數的所有參數。

Syntax:

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. 結果:

在 prompt 中,我們為模型提供了上下文和兩個範例,清楚地演示了我們所需的輸出格式。您可以驗證生成的輸出,是否與我們作為 few-shot prompting 方法提供給模型的範例一致。

在少量提示中,提供評論範例及其對應的情緒標籤,對於指導模型的行為至關重要。為了確保模型在各種情境下的有效性,需要提供充足且結構良好的範例,涵蓋多種審查情境。

最後,透過客戶評論進行情感分析,可以深入了解客戶對產品的偏好和痛點。透過確定評論中的關鍵主題,可以更有效地向產品團隊傳達有價值的回饋,使他們能夠做出明智的、數據驅動的決策和改進。

在上表中,您可以看到 ML.GENERATE_TEXT 的結果,包括輸入表以及以下列:

  1. ml_generate_text_result:這是 JSON 回應,產生的文字位於文字元素中。
  2. ml_generate_text_llm_result:包含產生文字的 STRING 值。當 flatten_json_output 為 TRUE 時,傳回此欄位。
  3. ml_generate_text_rai_result:包含安全屬性的 STRING 值。當 flatten_json_output 為 TRUE 時,傳回此欄位。
  4. ml_generate_text_status:一個 STRING 值,包含對應行的 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,我們可以有效地識別客戶評論中的關鍵主題。這使我們能夠更深入地了解客戶的看法,並可以提供可操作的數據來改進我們的產品。

ML.GENERATE_TEXT 與 Gemini 模型緊密整合,該模型提高各種任務的輸入/輸出規模和更好的結果質量,例如文字處理(包括分類和摘要)、情緒分析和程式碼產生。 

分析主題

現在已經確定了評論中的主題,讓我們更深入地了解 BigQuery 中的資料畫布,這是一種以 AI 為中心的體驗, BigQuery 資料畫布可讓您使用自然語言發現、轉換、查詢和視覺化資料,提供了一個圖形介面,讓您在有向無環圖 (DAG) 中處理資料來源、查詢和視覺化,從而為您提供映射到心智模型的分析工作流程視圖。

鑑於我們的主題儲存在「extract_themes」表中,建立一個資料畫布來進一步分析它們。點「+」圖示旁的向下箭頭,然後選擇「建立資料畫布」,如下圖所示:

進入一個螢幕,您可以在其中搜尋「extract themes」表並開始使用。

選擇表後,您將在畫布上看到它,可以在其中直接查詢或與其他表格、數據連接。

若要建立主題長條圖,請按一下「Query」按鈕並輸入「最常見主題的長條圖並刪除空值並將結果限制為前 10 個值」。即使「themes」不在專用列中,AI 也會理解您的要求並自動產生正確的查詢 — AI 會識別出主題位於「ml_genertae_text_llm_result」列中。最後點選「Run」即可看到查詢結果。

您的主題資料已準備好!點擊「Visualize」即可立即查看您的長條圖。

現在,您擁有從客戶評論中提取的主題的條形圖,以及根據發現的數據和洞察自動生成有用的見解。 

簡而言之,BigQuery 資料畫布可讓您使用簡單的自然語言命令。從頭到尾分析資料:發現相關資料、將其與客戶資訊合併、查找關鍵見解、與團隊成員協作以及建立報告— 一切都在一個地方完成。另外,可以保存這些結果或是與其他資料組合,以進行進一步分析或將其提取到筆記本中。

想了解更多嗎?官方 ML.GENERATE_TEXT 文件 包含所有詳細資訊。

 

本文內容翻譯並改寫自 Google Cloud 官方部落格,為您提供最前沿的科技趨勢與應用實例。宏庭科技一直致力於利用 AI 技術,幫助企業挖掘和分析數據,進而實現卓越的商業效益。我們深知,在這個數位化與人工智能快速發展的時代,持續掌握最新的科技資訊至關重要。近期,宏庭科技更協助台灣某知名連鎖餐飲品牌,運用 Google Maps 輿情分析技術,深入剖析周圍商家的情緒與外觀表現,為該品牌制定精準的商業策略。如果您對這些技術感興趣或希望瞭解更多如何應用於企業的具體案例,歡迎隨時與宏庭科技聯繫。我們期待成為您的數位轉型合作夥伴,並為您帶來最新、最熱門的科技話題,助力企業在競爭中脫穎而出。