השפה Azure Cognitive Service מספק API עבור טכניקות ניתוח טקסט נפוצות שבאפשרותך לשלב בקלות בקוד היישום שלך.
במודול זה, תלמד כיצד להשתמש בשירות השפה כדי:
- זיהוי שפה
- חילוץ ביטויי מפתח
- ניתוח סנטימנט
- חילוץ ישויות
- חילוץ ישויות מקושרות
הקצאת משאב שפה
שירות השפה נועד לסייע לך לחלץ מידע מטקסט. הוא מספק פונקציונליות שבה באפשרותך להשתמש עבור:
- זיהוי שפה – קביעת השפה שבה נכתב הטקסט.
- חילוץ ביטויי מפתח – זיהוי מילים וביטויים חשובים בטקסט המציינים את הנקודות העיקריות.
- ניתוח סנטימנט – כימות עד כמה הטקסט חיובי או שלילי.
- זיהוי ישויות בעלות שם – זיהוי הפניות לישויות, כולל אנשים, מיקומים, תקופות זמן, ארגונים ועוד.
- קישור ישויות – זיהוי ישויות ספציפיות על ידי מתן קישורי הפניה לערכים בוויקיפדיה.
משאבי Azure לניתוח טקסט
כדי להשתמש בשירות השפה לניתוח טקסט, עליך להקצות עבורו משאב במנוי Azure שלך. באפשרותך להקצות משאב שפה בשירות יחיד , או להשתמש במשאב שירותים קוגניטיביים מרובה שירותים .
לאחר שהקצית משאב מתאים במנוי Azure שלך, באפשרותך להשתמש בנקודת הקצה שלו ובאחד ממפתחות המנוי שלו כדי להתקשר לממשקי ה- API של השפה מהקוד שלך. באפשרותך להתקשר לממשקי ה- API של השפה על-ידי שליחת בקשות בתבנית JSON לממשק REST, או על-ידי שימוש בכל אחד מערכות ה- SDK הספציפיות לשפת התיכנות הזמינות.
זיהוי שפה
ה- API של זיהוי השפה מעריך קלט טקסט, ועבור כל מסמך שנשלח, מחזיר מזהי שפה עם ניקוד המציין את עוצמת הניתוח. שירות השפה מזהה עד 120 שפות.
יכולת זו שימושית עבור מאגרי תוכן האוספים טקסט שרירותי, כאשר השפה אינה ידועה. תרחיש אחר יכול לכלול בוט צ'אט. אם משתמש מתחיל הפעלה עם בוט הצ'אט, ניתן להשתמש בזיהוי שפה כדי לקבוע באיזו שפה הוא משתמש ולאפשר לך להגדיר את תגובות הבוט שלך בשפה המתאימה.
באפשרותך לנתח את התוצאות של ניתוח זה כדי לקבוע באיזו שפה נעשה שימוש במסמך הקלט. התגובה גם מחזירה ניקוד, המשקף את הביטחון של המודל (ערך בין 0 ל-1).
זיהוי שפה יכול לעבוד עם מסמכים או ביטויים בודדים. חשוב לציין שגודל המסמך חייב להיות מתחת ל-5,120 תווים. מגבלת הגודל היא לכל מסמך וכל אוסף מוגבל ל- 1,000 פריטים (מזהים). דוגמה של מטען JSON מעוצב כראוי שאתה עשוי לשלוח לשירות בגוף הבקשה מוצגת כאן, כולל אוסף של מסמכים, שכל אחד מהם מכיל מזהה ייחודי והטקסט שיש לנתח. לחלופין, באפשרותך לספק מדינהHint כדי לשפר את ביצועי החיזוי.
JSON
{
"Documents": [
{
"countryHint": "USA",
"ID": "1",
"Text": "Hello world"
},
{
"ID": "2",
"Text": "Hello everyone"
}
]
}
השירות יחזיר תגובת JSON המכילה תוצאה עבור כל מסמך בגוף הבקשה, כולל השפה החזויה וערך המציין את רמת הביטחון של החיזוי. רמת הביטחון היא ערך הנע בין 0 ל-1 כאשר ערכים קרובים יותר ל-1 הם רמת ביטחון גבוהה יותר. הנה דוגמה לתגובת JSON סטנדרטית שממפה לבקשה הנ"ל JSON.
JSON
{
"Documents": [
{
"ID": "1",
"detectedLanguage": {
"Name": "English",
"iso6391Name": "en",
"Self-confidence": 1
},
"Warnings": []
},
{
"ID": "2",
"detectedLanguage": {
"Name": "French",
"iso6391Name": "fr",
"Self-confidence": 1
},
"Warnings": []
}
],
"Errors": [],
"modelVersion": "2020-04-01"
}
במדגם שלנו, כל השפות מראות ביטחון של 1, בעיקר משום שהטקסט פשוט יחסית וקל לזהות את השפה.
אם תעביר מסמך הכולל תוכן רב-לשוני, השירות יפעל באופן שונה במקצת. תוכן בשפות מעורבות באותו מסמך מחזיר את השפה עם הייצוג הגדול ביותר בתוכן, אך עם דירוג חיובי נמוך יותר, המשקף את העוצמה השולית של הערכה זו. בדוגמה הבאה, הקלט הוא שילוב של אנגלית, ספרדית וצרפתית. המנתח משתמש בניתוח סטטיסטי של הטקסט כדי לקבוע את השפה השלטת .
JSON
{
"Documents": [
{
"ID": "1",
"Text": "Hello, I want to take a class at your university. Do you offer Spanish lessons? It's my first language and easiest to write. Que diriez-vous des cours en français?"
}
]
}
הדוגמה הבאה מציגה תגובה עבור דוגמה מרובת שפות זו.
JSON
{
"Documents": [
{
"ID": "1",
"Recognized languages": [
{
"Name": "Spanish",
"iso6391Name": "It",
"Score": 0.9375
}
]
}
],
"Errors": []
}
התנאי האחרון שיש לקחת בחשבון הוא כאשר קיימת עמימות לגבי תוכן השפה. התרחיש עשוי להתרחש אם תשלח תוכן טקסטואלי שהמנתח אינו יכול לנתח, לדוגמה עקב בעיות בקידוד תווים בעת המרת הטקסט למשתנה מחרוזת. כתוצאה מכך, התגובה עבור שם השפה וקוד ISO תציין (לא ידוע) וערך הניקוד יוחזר כ- NaN, או Not a Number. הדוגמה הבאה מראה כיצד תיראה התגובה.
JSON
{
"ID": "5",
"Recognized languages": [
{
"Name": "(Unknown)",
"iso6391Name": "(Unknown)",
"Score"": """NaN"
}
]
חילוץ ביטויי מפתח
חילוץ ביטויי מפתח הוא התהליך של הערכת הטקסט של מסמך, או מסמכים, ולאחר מכן זיהוי הנקודות העיקריות סביב ההקשר של המסמכים.
חילוץ ביטויי מפתח פועל בצורה הטובה ביותר עבור מסמכים גדולים יותר (הגודל המרבי שניתן לנתח הוא 5,120 תווים).
כמו בזיהוי שפה, ממשק REST מאפשר לך לשלוח מסמך אחד או יותר לניתוח.
JSON
{
"Documents": [
{
"ID": "1",
"שפה": "in",
"Text": "You must have the change you want
to see in the world."
},
{
"ID": "2",
"שפה": "in",
"Text": "A journey of a thousand miles
Starts with one step."
}
]
}
התגובה מכילה רשימה של ביטויי מפתח שזוהו בכל מסמך.
Jason
{
"Documents": [
{
"ID": "1",
"Key phrases": [
"Change",
"World"
],
"Warnings": []
},
{
"ID": "2",
"Key phrases": [
"Miles",
"One step,"
"Journey"
],
"Warnings": []
}
],
"Errors": [],
"modelVersion": "2020-04-01"
}
ניתוח סנטימנט
ניתוח סנטימנט משמש כדי להעריך עד כמה מסמך טקסט הוא חיובי או שלילי, אשר יכול להיות שימושי בעומסי עבודה שונים, כגון:
- הערכת סרט, ספר או מוצר על ידי כימות סנטימנט על סמך ביקורות.
- מתן עדיפות לתגובות שירות לקוחות להתכתבויות המתקבלות באמצעות הודעות דוא"ל או מדיה חברתית.
בעת שימוש בשירות השפה להערכת סנטימנט, התגובה כוללת סנטימנט מסמך כולל וסנטימנט משפט בודד עבור כל מסמך שנשלח לשירות.
לדוגמה, באפשרותך לשלוח מסמך יחיד לניתוח סנטימנט כך:
Jason
{
"Documents": [
{
"שפה": "in",
"ID": "1",
"Text": "Smile! Life is good!"
}
]
}
The response from the service may look like this:
Jason
{
"Documents": [
{
"ID": "1",
"Sentiment": "Positive",
"Self-confidence": {
"Positive": 0.99,
"Neutral": 0.01,
"Negative": 0.00
},
"Sentences": [
{
"Text": "Smile!",
"Sentiment": "Positive",
"Self-confidence": {
"Positive": 0.97,
"Neutral": 0.02,
"Negative": 0.01
},
"Offset": 0,
"Length": 6
},
{
"Text": "Life is good!",
"Sentiment": "Positive",
"Self-confidence": {
"Positive": 0.98,
"Neutral": 0.02,
"Negative": 0.00
},
"Offset": 7,
"Length": 13
}
],
"Warnings": []
}
],
"Errors": [],
"modelVersion": "2020-04-01"
}
סנטימנט משפטים מבוסס על ציוני ביטחון עבור ערכי סיווג חיוביים, שליליים וניטרליים בין 0 ל-1.
הסנטימנט הכללי של המסמך מבוסס על משפטים:
- אם כל המשפטים הם ניטרליים, הסנטימנט הכללי הוא נייטרלי.
- אם סיווגי משפטים כוללים רק חיובי וניטרלי, הסנטימנט הכללי הוא חיובי.
- אם סיווגי המשפטים כוללים רק שלילי וניטרלי, הסנטימנט הכללי הוא שלילי.
- אם סיווגי המשפטים כוללים חיוביים ושליליים, הסנטימנט הכללי מעורבב.
חילוץ ישויות
זיהוי ישות בשם מזהה ישויות המוזכרות בטקסט. ישויות מקובצות לקטגוריות ולקטגוריות משנה, לדוגמה:
- אדם
- מקום
- תאריך שעה
- ארגון
- כתובת
- דואר אלקטרוני
- כתובת URL
קלט עבור זיהוי ישות דומה לקלט עבור פונקציות API אחרות של שפה:
Jason
{
"Documents": [
{
"Language": "in",
"ID": "1",
"Text": "Joe went to London on Saturday"
}
]
}
התשובה כוללת רשימה של ישויות המסווגות לקטגוריות הנמצאות בכל מסמך:
Jason
{
"Documents":[
{
"ID":"1",
"Entities":[
{
"Text":"Joe",
"Category":"Person",
"Offset":0,
"Length":3,
"SecurityScore":0.62
},
{
"Text":"London",
"Category":"Location",
"Subcategory":"GPE",
"Offset":12,
"Length":6,
"SecurityScore":0.88
},
{
"Text":"Shabbat",
"Category":"DateTime",
"Subcategory":"Date",
"Offset":22,
"Length":8,
"SecurityScore":0.8
}
],
"Warnings":[]
}
],
"Errors":[],
"modelVersion":"2021-01-15"
}
חילוץ ישויות מקושרות
במקרים מסוימים, אותו שם עשוי לחול על יותר מישות אחת. לדוגמה, האם מופע של המילה "נוגה" מתייחס לכוכב הלכת או לאלה היוונית?
ניתן להשתמש בקישור ישויות כדי לנטרל ישויות בעלות אותו שם על-ידי הפניה למאמר במאגר ידע. ויקיפדיה מספקת את בסיס הידע עבור שירות ניתוח טקסט. קישורים ספציפיים למאמרים נקבעים על סמך הקשר הישות בתוך הטקסט.
לדוגמה, "ראיתי את ונוס זורחת בשמיים" קשורה לקישור https://en.wikipedia.org/wiki/Venus; ואילו "ונוס, אלת היופי" קשורה ל https://en.wikipedia.org/wiki/Venus_(מיתולוגיה).
כמו בכל פונקציות שירות השפה, באפשרותך לשלוח מסמך אחד או יותר לניתוח:
Jason
{
"Documents": [
{
"שפה": "in",
"ID": "1",
"Text": "I saw Venus shining in the sky"
}
]
}
התגובה כוללת את הישויות המזוהות בטקסט יחד עם קישורים למאמרים משויכים:
Jason
{
"Documents":
[
{
"ID":"1",
"Entities":[
{
"Name":"Venus",
"Adjustments":[
{
"Text":"Venus",
"Offset":6,
"Length":5,
"SecurityScore":0.01
}
],
"שפה":"in",
"id":"נוגה",
"url":"https://en.wikipedia.org/wiki/Venus",
"Data source":"Wikipedia"
}
],
"Warnings":[]
}
],
"Errors":[],
"modelVersion":"2020-02-01"
}