הפונקציה ML.UNDERSTAND_TEXT מאפשרת לנתח טקסט לא מובנה ישירות ב-BigQuery. אתם יכולים להעריך את סנטימנט הלקוחות, לזהות ישויות עיקריות ולבדוק את תחביר הטקסט בלי ליצור צינורות נפרדים לעיבוד נתונים. הפונקציה משתמשת במודל מרוחק של BigQuery ML כדי לחבר את BigQuery ל-Cloud Natural Language API.
במדריך הזה תיצרו מודל מרוחק ב-Cloud Natural Language API ותבצעו ניתוח סנטימנטים וניתוח ישויות במערך נתונים ציבורי של ביקורות על סרטים.
מטרות
- יוצרים מערך נתונים וקישור למשאבים ב-Cloud.
- נותנים הרשאות לחשבון השירות של החיבור.
- יוצרים מודל מרוחק של BigQuery ML.
- לנתח את הסנטימנט בטקסט ולחלץ ישויות באמצעות הפונקציה
ML.UNDERSTAND_TEXT.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
- BigQuery: You incur costs for the data that you process in BigQuery.
- Cloud Natural Language API: You incur costs for calls to the Natural Language API service that's represented by the remote model.
בעזרת מחשבון העלויות אתם יכולים להעריך את העלויות בהתאם לשימוש הצפוי.
למידע נוסף, קראו את המאמרים התמחור ב-BigQuery והתמחור ב-Natural Language API.
לפני שמתחילים
המסוף
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the BigQuery, BigQuery Connection API, and Cloud Natural Language API APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
מוודאים שיש לכם את התפקידים הבאים בפרויקט: אדמין ב-BigQuery, אדמין IAM בפרויקט.
בדיקת התפקידים
-
נכנסים לדף IAM במסוף Google Cloud .
כניסה לדף IAM - בוחרים את הפרויקט.
-
בעמודה Principal, מחפשים את כל השורות שמזהות אתכם או קבוצה שאתם חברים בה. כדי לברר לאילו קבוצות אתם שייכים, פנו לאדמין.
- בכל השורות שבהן אתם מופיעים, בודקים בעמודה Role אם רשימת התפקידים כוללת את התפקידים הנדרשים.
מתן התפקידים
-
נכנסים לדף IAM במסוף Google Cloud .
כניסה לדף IAM - בוחרים את הפרויקט.
- לוחצים על Grant access.
-
בשדה New principals, מזינים את מזהה המשתמש. בדרך כלל זה המזהה של משתמש במאגר זהויות של כוח עבודה. למידע נוסף, קראו את המאמר ייצוג המשתמשים במאגרי כוח עבודה בכללי מדיניות IAM או פנו לאדמין שלכם.
- לוחצים על Select a role ומחפשים את התפקיד.
- כדי לתת עוד תפקידים, לוחצים על Add another role ומוסיפים אותם.
- לוחצים על Save.
-
gcloud
-
התקינו את ה-CLI של Google Cloud.
-
הגדירו שה-CLI של gcloud ישתמש בזהות המאוחדת שלכם.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
יוצרים או בוחרים פרויקט ב- Google Cloud .
התפקידים שנדרשים כדי לבחור או ליצור פרויקט
- בחירת פרויקט: כדי לבחור פרויקט לא נדרש תפקיד IAM ספציפי – אתם יכולים לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד "יצירת פרויקטים" (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים?
-
יוצרים פרויקט ב- Google Cloud :
gcloud projects create PROJECT_ID
מחליפים את
PROJECT_IDבשם של הפרויקט ב- Google Cloud שאתם יוצרים. -
בוחרים את הפרויקט שיצרתם ב- Google Cloud :
gcloud config set project PROJECT_ID
מחליפים את
PROJECT_IDבשם הפרויקט ב- Google Cloud .
מפעילים את BigQuery, את BigQuery Connection API ואת Cloud Natural Language API, אם הם עדיין לא מופעלים:
התפקידים שנדרשים כדי להפעיל ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). כך מקצים תפקידים.gcloud services enable bigquery.googleapis.com
bigqueryconnection.googleapis.com language.googleapis.com -
נותנים תפקידים לחשבון המשתמש. מריצים את הפקודה הבאה לכל אחד מהתפקידים הבאים ב-IAM:
roles/bigquery.admin, roles/resourcemanager.projectIamAdmingcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
USER_IDENTIFIER: המזהה של חשבון המשתמש שלכם. . דוגמאות מופיעות במאמר ייצוג המשתמשים במאגרי כוח עבודה בכללי מדיניות IAM. -
ROLE: התפקיד ב-IAM שאתם נותנים לחשבון המשתמש.
-
יצירת קבוצת נתונים
כדי ליצור מערך נתונים ב-BigQuery, בוחרים אחת מהאפשרויות הבאות:
המסוף
נכנסים לדף BigQuery במסוף Google Cloud .
בחלונית הימנית, לוחצים על Explorer:

אם החלונית הימנית לא מוצגת, לוחצים על Expand left pane כדי לפתוח אותה.
ב-Explorer, מרחיבים את הפרויקט ולוחצים על Datasets.
בדף Datasets, לוחצים על Create dataset.
בחלונית Create dataset:
בשדה Dataset ID, מזינים
bqml_tutorial.בקטע Data location (מיקום הנתונים), בוחרים באפשרות US (ארה"ב).
משאירים את שאר הגדרות ברירת המחדל כמו שהן.
לוחצים על Create dataset.
BQ
כדי ליצור קבוצת נתונים חדשה, משתמשים בפקודה bq mk --dataset.
יוצרים מערך נתונים בשם
bqml_tutorialומגדירים את מיקום הנתונים ל-US:bq mk --dataset \ --location=US \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
מוודאים שמערך הנתונים נוצר:
bq ls
API
מפעילים את השיטה datasets.insert עם משאב של מערך נתונים מוגדר:
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
יצירת חיבור
יוצרים קישור למשאבים ב-Cloud באזור US שבו יצרתם את מערך הנתונים. ואז מקבלים את חשבון השירות של החיבור.
המסוף
נכנסים לדף BigQuery.
בחלונית הימנית, לוחצים על Explorer:

אם החלונית הימנית לא מוצגת, לוחצים על Expand left pane כדי לפתוח אותה.
בחלונית Explorer, מרחיבים את שם הפרויקט ולוחצים על Connections.
בדף Connections, לוחצים על Create connection.
בשדה Connection type, בוחרים באפשרות Vertex AI remote models, remote functions, BigLake and Spanner (Cloud Resource).
בשדה מזהה החיבור, נותנים שם לחיבור.
בקטע Location type, בוחרים מיקום לחיבור. החיבור צריך להיות באותו מיקום כמו המשאבים האחרים, למשל מערכי נתונים.
לוחצים על יצירת חיבור.
לוחצים על מעבר לחיבור.
בחלונית Connection info, מעתיקים את מזהה חשבון השירות כדי להשתמש בו בשלב מאוחר יותר.
SQL
משתמשים בהצהרה CREATE CONNECTION:
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מזינים את ההצהרה הבאה:
CREATE CONNECTION [IF NOT EXISTS] `CONNECTION_NAME` OPTIONS ( connection_type = "CLOUD_RESOURCE", friendly_name = "FRIENDLY_NAME", description = "DESCRIPTION" );
מחליפים את מה שכתוב בשדות הבאים:
-
CONNECTION_NAME: שם החיבור בפורמטPROJECT_ID.LOCATION.CONNECTION_ID,LOCATION.CONNECTION_IDאוCONNECTION_ID. אם לא מציינים את הפרויקט או המיקום, הם נגזרים מהפרויקט ומהמיקום שבהם ההצהרה מופעלת. -
FRIENDLY_NAME(אופציונלי): שם תיאורי לחיבור. -
DESCRIPTION(אופציונלי): תיאור של החיבור.
-
לוחצים על Run.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
BQ
בסביבה של שורת הפקודה, יוצרים חיבור:
bq mk --connection --location=REGION --project_id=PROJECT_ID \ --connection_type=CLOUD_RESOURCE CONNECTION_ID
הפרמטר
--project_idמבטל את פרויקט ברירת המחדל.מחליפים את מה שכתוב בשדות הבאים:
-
REGION: אזור החיבור שלכם -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud -
CONNECTION_ID: מזהה לחיבור
כשיוצרים משאב חיבור, BigQuery יוצר חשבון שירות ייחודי של המערכת ומשייך אותו לחיבור.
פתרון בעיות: אם מופיעה שגיאת החיבור הבאה, עדכנו את Google Cloud SDK:
Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
-
מאחזרים ומעתיקים את מזהה חשבון השירות כדי להשתמש בו בשלב מאוחר יותר:
bq show --connection PROJECT_ID.REGION.CONNECTION_ID
הפלט אמור להיראות כך:
name properties 1234.REGION.CONNECTION_ID {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel."}
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Python במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Node.js במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Node.js API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Java במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Terraform
משתמשים במשאב google_bigquery_connection.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
בדוגמה הבאה נוצר קישור למשאבים ב-Cloud בשם my_cloud_resource_connection באזור US:
כך מחילים את ההגדרות של Terraform בפרויקט ב- Google Cloud :
הכנת Cloud Shell
- מפעילים את Cloud Shell.
-
מגדירים את פרויקט ברירת המחדל ב- Google Cloud שבו רוצים להחיל את ההגדרות של Terraform.
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
אם תגדירו ערכים ספציפיים בקובץ התצורה של Terraform, הם יבטלו את ערכי ברירת המחדל של משתני הסביבה.
הכנת הספרייה
לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).
-
יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת
.tf, למשלmain.tf. במדריך הזה, הקובץ נקראmain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.
מעתיקים את הקוד לדוגמה בקובץ
main.tfהחדש שיצרתם.לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.
- בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
- שומרים את השינויים.
-
מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
terraform init
אופציונלי: תוכלו לכלול את האפשרות
-upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:terraform init -upgrade
החלה של השינויים
-
בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
terraform plan
מתקנים את ההגדרות לפי הצורך.
-
מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה, כדי להחיל את הגדרות Terraform:terraform apply
ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!".
- פותחים את הפרויקט ב- Google Cloud כדי להציג את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.
מתן הרשאות לחשבון השירות של החיבור
בוחרים באחת מהאפשרויות הבאות:
המסוף
נכנסים לדף IAM & Admin.
לוחצים על הוספה.
תיבת הדו-שיח Add principals נפתחת.
בשדה New principals, מזינים את מזהה חשבון השירות שהעתקתם קודם.
בשדה Select a role, בוחרים באפשרות Service Usage ואז באפשרות Service Usage Consumer.
לוחצים על הוספת תפקיד.
בשדה Select a role, בוחרים באפשרות BigQuery ואז באפשרות BigQuery Connection User.
לוחצים על Save.
gcloud
משתמשים בפקודה gcloud projects add-iam-policy-binding:
gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/serviceusage.serviceUsageConsumer' --condition=None gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/bigquery.connectionUser' --condition=None
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_NUMBER: מספר הפרויקט. -
MEMBER: מזהה חשבון השירות שהעתקתם קודם.
אם לא תתנו את ההרשאה, תופיע הודעת שגיאה.
יצירת המודל המרוחק
משתמשים בהצהרה CREATE MODEL כדי ליצור מודל מרוחק שמייצג את Cloud Natural Language API המארח:
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מריצים את ההצהרה הבאה:
CREATE OR REPLACE MODEL `bqml_tutorial.nlp_model` REMOTE WITH CONNECTION `LOCATION.CONNECTION_ID` OPTIONS (REMOTE_SERVICE_TYPE = 'CLOUD_AI_NATURAL_LANGUAGE_V1');
מחליפים את מה שכתוב בשדות הבאים:
-
LOCATION: מיקום החיבור -
CONNECTION_ID: המזהה של החיבור ל-BigQueryכשמציגים את פרטי החיבור במסוף Google Cloud , זה הערך בקטע האחרון של מזהה החיבור המלא שמוצג ב-Connection ID, לדוגמה
projects/myproject/locations/connection_location/connections/myconnection
השאילתה מסתיימת תוך כמה שניות, ואז המודל
nlp_modelמופיע במערך הנתוניםbqml_tutorial. אין תוצאות לשאילתה.-
הבנת טקסט
משתמשים בפונקציה ML.UNDERSTAND_TEXT ובמודל המרוחק כדי לנתח טקסט ממערך נתונים ציבורי של ביקורות על סרטים:
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מריצים את ההצהרה הבאה כדי לבצע ניתוח סנטימנטים על חמש ביקורות של סרטים:
SELECT * FROM ML.UNDERSTAND_TEXT( MODEL `bqml_tutorial.nlp_model`, ( SELECT review AS text_content FROM `bigquery-public-data.imdb.reviews` LIMIT 5 ), STRUCT('ANALYZE_SENTIMENT' AS nlu_option));
הפלט אמור להיראות כך:
+------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------+ | text_content | ml_understand_text_result | ml_understand_text_status | +------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------+ | Once again Mr. Costner has dragged out | {"document_sentiment":{"magnitude":0.8,"score":-0.7},"language":"en","sentences":[{"sentiment":{"magnitude":0.8,"score":-0.7},"text":{...}}]} | | | This movie is amazing because the fact...| {"document_sentiment":{"magnitude":0.9,"score":0.8},"language":"en","sentences":[{"sentiment":{"magnitude":0.9,"score":0.8},"text":{...}}]} | | | ... | ... | ... | +------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------+ציון חיובי מציין סנטימנט חיובי, וציון שלילי מציין סנטימנט שלילי. העוצמה מציינת את חוזק הסנטימנט.
בעורך השאילתות, מריצים את ההצהרה הבאה כדי לבצע ניתוח ישויות בחמש ביקורות על סרטים:
SELECT * FROM ML.UNDERSTAND_TEXT( MODEL `bqml_tutorial.nlp_model`, ( SELECT review AS text_content FROM `bigquery-public-data.imdb.reviews` LIMIT 5 ), STRUCT('ANALYZE_ENTITIES' AS nlu_option));
הפלט אמור להיראות כך:
+------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------+ | text_content | ml_understand_text_result | ml_understand_text_status | +------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------+ | Once again Mr. Costner has dragged out...| {"entities":[{"mentions":[{"text":{"begin_offset":-1,"content":"Costner"},"type":"PROPER"},{"text":{"begin_offset":-1,"content":"Mr."},"type"...] | | | This movie is amazing because the fact...| {"entities":[{"mentions":[{"text":{"begin_offset":-1,"content":"people"},"type":"COMMON"}],"name":"people","salience":0.37163052,"type":...] | | | ... | ... | ... | +------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------+בפלט מוצגות הישויות שזוהו בטקסט, סוג הישות והחשיבות (salience) של הישות. החשיבות מציינת עד כמה הישות חשובה לטקסט.
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים הנפרדים.
מחיקת הפרויקט
כדי למחוק פרויקט ב- Google Cloud :
gcloud projects delete PROJECT_ID
מחיקת משאבים ספציפיים
אם אתם רוצים להשתמש בפרויקט שוב, אתם צריכים למחוק את המשאבים שיצרתם בשביל המדריך.
המסוף
מוחקים את מערך הנתונים. מחיקת מערך הנתונים מוחקת גם את המודל המרוחק:
בחלונית Explorer, מרחיבים את הפרויקט ולוחצים על Datasets.
ברשימה Datasets, לוחצים על מערך הנתונים
bqml_tutorial.בחלונית הפרטים, לוחצים על מחיקה.
בתיבת הדו-שיח Delete dataset, לוחצים על Delete.
מחיקת החיבור:
בחלונית Explorer, מרחיבים את הפרויקט ולוחצים על Connections.
ברשימה Connections, לוחצים על החיבור שיצרתם.
בחלונית הפרטים, לוחצים על מחיקה.
בתיבת הדו-שיח Delete connection, מזינים את הערך
deleteכדי לאשר את המחיקה.לוחצים על Delete.
gcloud
מוחקים את מערך הנתונים
bqml_tutorialואת המודל המרוחק:bq rm --dataset --recursive bqml_tutorialמחיקת החיבור:
bq rm --connection <var>PROJECT_ID</var>.<var>LOCATION</var>.<var>CONNECTION_ID</var>מחליפים את מה שכתוב בשדות הבאים:
-
<var>PROJECT_ID</var>: מזהה הפרויקט ב- Google Cloud -
<var>LOCATION</var>: מיקום החיבור -
<var>CONNECTION_ID</var>: מזהה החיבור
-
המאמרים הבאים
- מידע נוסף על הפונקציה
ML.UNDERSTAND_TEXT - סקירה כללית על הסקת מסקנות ממודלים ב-BigQuery ML
- למידע נוסף על השימוש בממשקי API של AI ב-Cloud לביצוע משימות AI, ראו סקירה כללית על אפליקציות AI.
- במאמר תהליכים מקצה לקצה של משתמשים במודלים של AI גנרטיבי מפורט מידע על פונקציות והצהרות SQL שנתמכות במודלים של AI גנרטיבי.
- נסו את ה-Notebook Unstructured data analytics with BigQuery ML and Gemini Enterprise Agent Platform pre-trained models.