ברוב השיטות של שפה טבעית, המערכת מנתחת על מה הטקסט, אבל בשיטת analyzeSyntax המערכת בודקת את המבנה של השפה עצמה.
ניתוח תחבירי מפרק את הטקסט הנתון לסדרת משפטים וטוקנים (בדרך כלל מילים) ומספק מידע לשוני על הטוקנים האלה.
במאמר Morphology & Dependency Trees מפורטות פרטים על הניתוח הבלשני, ובמאמר Language Support מופיעה רשימה של השפות שה-Natural Language API יכול לנתח את התחביר שלהן.
בקטע הזה מוצגות כמה דרכים לזיהוי תחביר במסמך. צריך לשלוח בקשה נפרדת לכל מסמך.
ניתוח תחביר במחרוזת
דוגמה לביצוע ניתוח תחבירי במחרוזת טקסט שנשלחה ישירות אל Natural Language API:
פרוטוקול
כדי לנתח את התחביר במסמך, שולחים בקשת POST אל שיטת ה-REST documents:analyzeSyntax ומספקים את תוכן הבקשה המתאים, כמו בדוגמה הבאה.
בדוגמה נעשה שימוש בפקודה gcloud auth application-default print-access-token כדי לקבל אסימון גישה לחשבון שירות שהוגדר לפרויקט באמצעות CLI של gcloud ב-Google Cloud Platform.
הוראות להתקנת ה-CLI של gcloud ולהגדרת פרויקט עם חשבון שירות מופיעות במדריך למתחילים.
curl -X POST \ -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'encodingType': 'UTF8', 'document': { 'type': 'PLAIN_TEXT', 'content': 'Google, headquartered in Mountain View, unveiled the new Android phone at the Consumer Electronic Show. Sundar Pichai said in his keynote that users love their new Android phones.' } }" "https://language.googleapis.com/v1/documents:analyzeSyntax"
אם לא מציינים את document.language, השפה תזוהה באופן אוטומטי. מידע על השפות שנתמכות ב-Natural Language API זמין במאמר תמיכה בשפות. מידע נוסף על הגדרת גוף הבקשה מופיע בDocumentמאמרי העזרה.
אם הבקשה מצליחה, השרת מחזיר קוד סטטוס 200 OK של HTTP ואת התשובה בפורמט JSON:
{
"sentences": [
{
"text": {
"content": "Google, headquartered in Mountain View, unveiled the new Android phone at the Consumer Electronic Show.",
"beginOffset": 0
}
},
{
"text": {
"content": "Sundar Pichai said in his keynote that users love their new Android phones.",
"beginOffset": 105
}
}
],
"tokens": [
{
"text": {
"content": "Google",
"beginOffset": 0
},
"partOfSpeech": {
"tag": "NOUN",
"aspect": "ASPECT_UNKNOWN",
"case": "CASE_UNKNOWN",
"form": "FORM_UNKNOWN",
"gender": "GENDER_UNKNOWN",
"mood": "MOOD_UNKNOWN",
"number": "SINGULAR",
"person": "PERSON_UNKNOWN",
"proper": "PROPER",
"reciprocity": "RECIPROCITY_UNKNOWN",
"tense": "TENSE_UNKNOWN",
"voice": "VOICE_UNKNOWN"
},
"dependencyEdge": {
"headTokenIndex": 7,
"label": "NSUBJ"
},
"lemma": "Google"
},
...
{
"text": {
"content": ".",
"beginOffset": 179
},
"partOfSpeech": {
"tag": "PUNCT",
"aspect": "ASPECT_UNKNOWN",
"case": "CASE_UNKNOWN",
"form": "FORM_UNKNOWN",
"gender": "GENDER_UNKNOWN",
"mood": "MOOD_UNKNOWN",
"number": "NUMBER_UNKNOWN",
"person": "PERSON_UNKNOWN",
"proper": "PROPER_UNKNOWN",
"reciprocity": "RECIPROCITY_UNKNOWN",
"tense": "TENSE_UNKNOWN",
"voice": "VOICE_UNKNOWN"
},
"dependencyEdge": {
"headTokenIndex": 20,
"label": "P"
},
"lemma": "."
}
],
"language": "en"
}
מערך tokens מכיל אובייקטים מסוג Token שמייצגים את הטוקנים של המשפט שזוהו, כולל מידע כמו חלק הדיבור של הטוקן והמיקום שלו במשפט.
gcloud
פרטים נוספים זמינים בפקודה analyze-syntax.
כדי לבצע ניתוח תחבירי, משתמשים ב-CLI של gcloud ובדגל --content כדי לזהות את התוכן לניתוח:
gcloud ml language analyze-syntax --content="Google, headquartered in Mountain View, unveiled the new Android phone at the Consumer Electronic Show. Sundar Pichai said in his keynote that users love their new Android phones."
אם הבקשה מצליחה, השרת מחזיר תגובה בפורמט JSON:
{
"sentences": [
{
"text": {
"content": "Google, headquartered in Mountain View, unveiled the new Android phone at the Consumer Electronic Show.",
"beginOffset": 0
}
},
{
"text": {
"content": "Sundar Pichai said in his keynote that users love their new Android phones.",
"beginOffset": 105
}
}
],
"tokens": [
{
"text": {
"content": "Google",
"beginOffset": 0
},
"partOfSpeech": {
"tag": "NOUN",
"aspect": "ASPECT_UNKNOWN",
"case": "CASE_UNKNOWN",
"form": "FORM_UNKNOWN",
"gender": "GENDER_UNKNOWN",
"mood": "MOOD_UNKNOWN",
"number": "SINGULAR",
"person": "PERSON_UNKNOWN",
"proper": "PROPER",
"reciprocity": "RECIPROCITY_UNKNOWN",
"tense": "TENSE_UNKNOWN",
"voice": "VOICE_UNKNOWN"
},
"dependencyEdge": {
"headTokenIndex": 7,
"label": "NSUBJ"
},
"lemma": "Google"
},
...
{
"text": {
"content": ".",
"beginOffset": 179
},
"partOfSpeech": {
"tag": "PUNCT",
"aspect": "ASPECT_UNKNOWN",
"case": "CASE_UNKNOWN",
"form": "FORM_UNKNOWN",
"gender": "GENDER_UNKNOWN",
"mood": "MOOD_UNKNOWN",
"number": "NUMBER_UNKNOWN",
"person": "PERSON_UNKNOWN",
"proper": "PROPER_UNKNOWN",
"reciprocity": "RECIPROCITY_UNKNOWN",
"tense": "TENSE_UNKNOWN",
"voice": "VOICE_UNKNOWN"
},
"dependencyEdge": {
"headTokenIndex": 20,
"label": "P"
},
"lemma": "."
}
],
"language": "en"
}
מערך tokens מכיל אובייקטים מסוג Token שמייצגים את הטוקנים של המשפט שזוהו, כולל מידע כמו חלק הדיבור של הטוקן והמיקום שלו במשפט.
Go
מידע על התקנת ספריית הלקוח של Natural Language ושימוש בה מופיע במאמר ספריות הלקוח של Natural Language. מידע נוסף מופיע במאמרי העזרה של Natural Language Go API.
כדי לבצע אימות ב-Natural Language, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Java
מידע על התקנת ספריית הלקוח של Natural Language ושימוש בה מופיע במאמר ספריות הלקוח של Natural Language. מידע נוסף מופיע במאמרי העזרה של Natural Language Java API.
כדי לבצע אימות ב-Natural Language, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Node.js
מידע על התקנת ספריית הלקוח של Natural Language ושימוש בה מופיע במאמר ספריות הלקוח של Natural Language. מידע נוסף מופיע במאמרי העזרה של Natural Language Node.js API.
כדי לבצע אימות ב-Natural Language, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Python
מידע על התקנת ספריית הלקוח של Natural Language ושימוש בה מופיע במאמר ספריות הלקוח של Natural Language. מידע נוסף מופיע במאמרי העזרה של Natural Language Python API.
כדי לבצע אימות ב-Natural Language, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
שפות נוספות
C#: פועלים לפי הוראות ההגדרה של C# בדף של ספריות הלקוח, ואז עוברים אל מאמרי העזרה בנושא Natural Language ל- .NET.
PHP: פועלים לפי הוראות ההגדרה של PHP בדף של ספריות הלקוח ואז עוברים אל מסמכי העזר של Natural Language ל-PHP.
Ruby: צריך לפעול לפי הוראות ההגדרה של Ruby בדף של ספריות הלקוח ואז לעיין במאמרי העזרה בנושא שפה טבעית ל-Ruby.
ניתוח תחביר מ-Cloud Storage
לנוחותכם, Natural Language API יכול לבצע ניתוח תחבירי ישירות על קובץ שנמצא ב-Cloud Storage, בלי שתצטרכו לשלוח את תוכן הקובץ בגוף הבקשה.
הנה דוגמה לביצוע ניתוח תחבירי בקובץ שנמצא ב-Cloud Storage.
פרוטוקול
כדי לנתח את התחביר במסמך שמאוחסן ב-Cloud Storage, שולחים בקשת POST לשיטת ה-REST documents:analyzeSyntax ומספקים את תוכן הבקשה המתאים עם הנתיב למסמך, כמו בדוגמה הבאה.
curl -X POST \ -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'encodingType': 'UTF8', 'document': { 'type': 'PLAIN_TEXT', 'gcsContentUri': 'gs://<bucket-name>/<object-name>' } }" "https://language.googleapis.com/v1/documents:analyzeSyntax"
אם לא מציינים את document.language, השפה תזוהה באופן אוטומטי. מידע על השפות שנתמכות ב-Natural Language API זמין במאמר תמיכה בשפות. מידע נוסף על הגדרת גוף הבקשה מופיע בDocumentמאמרי העזרה.
אם הבקשה מצליחה, השרת מחזיר קוד סטטוס 200 OK של HTTP ואת התשובה בפורמט JSON:
{
"sentences": [
{
"text": {
"content": "Hello, world!",
"beginOffset": 0
}
}
],
"tokens": [
{
"text": {
"content": "Hello",
"beginOffset": 0
},
"partOfSpeech": {
"tag": "X",
// ...
},
"dependencyEdge": {
"headTokenIndex": 2,
"label": "DISCOURSE"
},
"lemma": "Hello"
},
{
"text": {
"content": ",",
"beginOffset": 5
},
"partOfSpeech": {
"tag": "PUNCT",
// ...
},
"dependencyEdge": {
"headTokenIndex": 2,
"label": "P"
},
"lemma": ","
},
// ...
],
"language": "en"
}מערך tokens מכיל אובייקטים מסוג Token שמייצגים את הטוקנים של המשפט שזוהו, כולל מידע כמו חלק הדיבור של הטוקן והמיקום שלו במשפט.
gcloud
פרטים נוספים זמינים בפקודהanalyze-syntax.
כדי לבצע ניתוח תחביר בקובץ ב-Cloud Storage, משתמשים בכלי gcloud של שורת הפקודה ובדגל --content-file כדי לזהות את נתיב הקובץ שמכיל את התוכן לניתוח:
gcloud ml language analyze-syntax --content-file=gs://YOUR_BUCKET_NAME/YOUR_FILE_NAME
אם הבקשה מצליחה, השרת מחזיר תגובה בפורמט JSON:
{
"sentences": [
{
"text": {
"content": "Hello, world!",
"beginOffset": 0
}
}
],
"tokens": [
{
"text": {
"content": "Hello",
"beginOffset": 0
},
"partOfSpeech": {
"tag": "X",
// ...
},
"dependencyEdge": {
"headTokenIndex": 2,
"label": "DISCOURSE"
},
"lemma": "Hello"
},
{
"text": {
"content": ",",
"beginOffset": 5
},
"partOfSpeech": {
"tag": "PUNCT",
// ...
},
"dependencyEdge": {
"headTokenIndex": 2,
"label": "P"
},
"lemma": ","
},
// ...
],
"language": "en"
}מערך tokens מכיל אובייקטים מסוג Token שמייצגים את הטוקנים של המשפט שזוהו, כולל מידע כמו חלק הדיבור של הטוקן והמיקום שלו במשפט.
Go
מידע על התקנת ספריית הלקוח של Natural Language ושימוש בה מופיע במאמר ספריות הלקוח של Natural Language. מידע נוסף מופיע במאמרי העזרה של Natural Language Go API.
כדי לבצע אימות ב-Natural Language, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Java
מידע על התקנת ספריית הלקוח של Natural Language ושימוש בה מופיע במאמר ספריות הלקוח של Natural Language. מידע נוסף מופיע במאמרי העזרה של Natural Language Java API.
כדי לבצע אימות ב-Natural Language, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Node.js
מידע על התקנת ספריית הלקוח של Natural Language ושימוש בה מופיע במאמר ספריות הלקוח של Natural Language. מידע נוסף מופיע במאמרי העזרה של Natural Language Node.js API.
כדי לבצע אימות ב-Natural Language, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Python
מידע על התקנת ספריית הלקוח של Natural Language ושימוש בה מופיע במאמר ספריות הלקוח של Natural Language. מידע נוסף מופיע במאמרי העזרה של Natural Language Python API.
כדי לבצע אימות ב-Natural Language, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
שפות נוספות
C#: פועלים לפי הוראות ההגדרה של C# בדף של ספריות הלקוח, ואז עוברים אל מאמרי העזרה בנושא Natural Language ל- .NET.
PHP: פועלים לפי הוראות ההגדרה של PHP בדף של ספריות הלקוח ואז עוברים אל מסמכי העזר של Natural Language ל-PHP.
Ruby: צריך לפעול לפי הוראות ההגדרה של Ruby בדף של ספריות הלקוח ואז לעיין במאמרי העזרה בנושא שפה טבעית ל-Ruby.