หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
สําคัญ
คุณลักษณะนี้อยู่ใน แสดงตัวอย่าง
Azure AI Language เป็น บริการ Azure AI ที่ช่วยให้คุณสามารถทําเหมืองข้อความและการวิเคราะห์ข้อความด้วยคุณสมบัติการประมวลผลภาษาธรรมชาติ (NLP)
ในบทความนี้ คุณจะได้เรียนรู้วิธีใช้บริการ Azure AI Language โดยตรงใน Microsoft Fabric เพื่อวิเคราะห์ข้อความ ในตอนท้ายของบทความนี้ คุณจะสามารถ:
- ตรวจหาป้ายกํากับความรู้สึกในระดับประโยคหรือเอกสาร
- ระบุภาษาสําหรับการป้อนข้อความที่กําหนด
- แยกวลีสําคัญจากข้อความ
- ระบุเอนทิตีต่างๆ ในข้อความและจัดหมวดหมู่เป็นคลาสหรือประเภทที่กําหนดไว้ล่วงหน้า
ข้อกําหนดเบื้องต้น
รับการสมัครใช้งาน Microsoft Fabric หรือลงทะเบียนเพื่อทดลองใช้งาน Microsoft Fabric ฟรี
ลงชื่อเข้าใช้ Microsoft Fabric
สลับไปยัง Fabric โดยใช้ตัวสลับประสบการณ์ที่ด้านซ้ายล่างของโฮมเพจของคุณ
- สร้าง สมุดบันทึกใหม่
- แนบสมุดบันทึกของคุณเข้ากับเลคเฮ้าส์ ทางด้านซ้ายของสมุดบันทึกของคุณ ให้เลือก เพิ่ม เพื่อเพิ่มเลคเฮ้าส์ที่มีอยู่แล้ว หรือสร้างขึ้นใหม่
หมายเหตุ
บทความนี้ใช้บริการ AI ที่สร้างไว้ล่วงหน้าในตัวของ Microsoft Fabric ซึ่งจัดการการรับรองความถูกต้องโดยอัตโนมัติ คุณไม่จําเป็นต้องขอรับคีย์บริการ Azure AI แยกต่างหาก - การรับรองความถูกต้องได้รับการจัดการผ่านพื้นที่ทํางาน Fabric ของคุณ สําหรับข้อมูลเพิ่มเติม โปรดดู โมเดล AI ที่สร้างไว้ล่วงหน้าใน Fabric (พรีวิว)
ตัวอย่างรหัสในบทความนี้ใช้ไลบรารีที่ติดตั้งไว้ล่วงหน้าในสมุดบันทึก Microsoft Fabric:
- SynapseML: ติดตั้งไว้ล่วงหน้าในโน้ตบุ๊ก Fabric สําหรับความสามารถของแมชชีนเลิร์นนิง
- PySpark: พร้อมใช้งานตามค่าเริ่มต้นในการประมวลผล Fabric Spark
-
ไลบรารี Python มาตรฐาน:
jsonเป็นส่วนหนึ่งของuuidไลบรารีมาตรฐาน Python
หมายเหตุ
โน้ตบุ๊ก Microsoft Fabric มาพร้อมกับไลบรารีทั่วไปที่ติดตั้งไว้ล่วงหน้ามากมาย ไลบรารี SynapseML ซึ่งให้การรวม MLflow และความสามารถในการวิเคราะห์ข้อความ จะพร้อมใช้งานโดยอัตโนมัติในสภาพแวดล้อม Spark
เลือกแนวทางของคุณ
บทความนี้มีสองวิธีในการใช้บริการภาษา Azure AI ใน Fabric:
- แนวทาง REST API: การเรียก HTTP โดยตรงไปยังบริการ (แนะนําสําหรับผู้เริ่มต้น)
- แนวทาง SynapseML: การใช้ Spark DataFrames สําหรับการประมวลผลขนาดใหญ่ขึ้น
เคล็ดลับ
ผู้ใช้ใหม่ควรเริ่มต้นด้วยแนวทาง REST API เนื่องจากเข้าใจและแก้ไขข้อบกพร่องได้ง่ายกว่า แนวทาง SynapseML ดีกว่าสําหรับการประมวลผลชุดข้อมูลขนาดใหญ่ด้วย Spark
ตั้งค่าการรับรองความถูกต้องและปลายทาง
คัดลอกและวางรหัสนี้ลงในเซลล์แรกของสมุดบันทึก Fabric ของคุณเพื่อตั้งค่าการเชื่อมต่อกับบริการ Azure AI Language:
หมายเหตุ
รหัสนี้ใช้การรับรองความถูกต้องในตัวของ Fabric ฟังก์ชันนี้จะ get_fabric_env_config ดึงข้อมูลประจําตัวพื้นที่ทํางานของคุณโดยอัตโนมัติและเชื่อมต่อกับบริการ AI ที่สร้างไว้ล่วงหน้า ไม่จําเป็นต้องใช้คีย์ API
# Get workload endpoints and access token
from synapse.ml.fabric.service_discovery import get_fabric_env_config
from synapse.ml.fabric.token_utils import TokenUtils
import json
import requests
fabric_env_config = get_fabric_env_config().fabric_env_config
auth_header = TokenUtils().get_openai_auth_header()
# Make a RESful request to AI service
prebuilt_AI_base_host = fabric_env_config.ml_workload_endpoint + "cognitive/textanalytics/"
print("Workload endpoint for AI service: \n" + prebuilt_AI_base_host)
service_url = prebuilt_AI_base_host + "language/:analyze-text?api-version=2022-05-01"
print("Service URL: \n" + service_url)
auth_headers = {
"Authorization" : auth_header
}
def print_response(response):
if response.status_code == 200:
print(json.dumps(response.json(), indent=2))
else:
print(f"Error: {response.status_code}, {response.content}")
การวิเคราะห์ความคิดเห็น
คุณลักษณะการวิเคราะห์ความคิดเห็นเป็นวิธีในการตรวจจับป้ายกํากับความคิดเห็น (เช่น "เชิงลบ" "เป็นกลาง" และ "เชิงบวก") และคะแนนความเชื่อมั่นในระดับประโยคและเอกสาร คุณลักษณะนี้ยังส่งคืนคะแนนความเชื่อมั่นระหว่าง 0 ถึง 1 สําหรับแต่ละเอกสารและประโยคภายในสําหรับความรู้สึกเชิงบวก เป็นกลาง และเชิงลบ ดูการสนับสนุนภาษาการวิเคราะห์ความคิดเห็น และการขุดความคิดเห็น สําหรับรายการของภาษาที่เปิดใช้งาน
วิเคราะห์ความรู้สึกของข้อความ
คัดลอกรหัสนี้ลงในเซลล์ใหม่ในสมุดบันทึกของคุณเพื่อวิเคราะห์ความรู้สึกของข้อความตัวอย่าง:
payload = {
"kind": "SentimentAnalysis",
"parameters": {
"modelVersion": "latest",
"opinionMining": "True"
},
"analysisInput":{
"documents":[
{
"id":"1",
"language":"en",
"text": "The food and service were unacceptable. The concierge was nice, however."
}
]
}
}
response = requests.post(service_url, json=payload, headers=auth_headers)
# Output all information of the request process
print_response(response)
เคล็ดลับ
คุณสามารถแทนที่ข้อความในช่อง "ข้อความ" ด้วยเนื้อหาของคุณเองเพื่อวิเคราะห์ บริการจะส่งคืนคะแนนความคิดเห็นและระบุว่าส่วนใดของข้อความเป็นบวก เชิงลบ หรือเป็นกลาง
ผลผลิตที่คาดหวัง
เมื่อคุณเรียกใช้รหัสต่อไปนี้สําเร็จ คุณจะเห็นผลลัพธ์ที่คล้ายกับนี้:
{
"kind": "SentimentAnalysisResults",
"results": {
"documents": [
{
"id": "1",
"sentiment": "negative",
"confidenceScores": {
"positive": 0.0,
"neutral": 0.0,
"negative": 1.0
},
"sentences": [
{
"sentiment": "negative",
"confidenceScores": {
"positive": 0.0,
"neutral": 0.0,
"negative": 1.0
},
"offset": 0,
"length": 40,
"text": "The food and service were unacceptable. ",
"targets": [
{
"sentiment": "negative",
"confidenceScores": {
"positive": 0.01,
"negative": 0.99
},
"offset": 4,
"length": 4,
"text": "food",
"relations": [
{
"relationType": "assessment",
"ref": "#/documents/0/sentences/0/assessments/0"
}
]
},
{
"sentiment": "negative",
"confidenceScores": {
"positive": 0.01,
"negative": 0.99
},
"offset": 13,
"length": 7,
"text": "service",
"relations": [
{
"relationType": "assessment",
"ref": "#/documents/0/sentences/0/assessments/0"
}
]
}
],
"assessments": [
{
"sentiment": "negative",
"confidenceScores": {
"positive": 0.01,
"negative": 0.99
},
"offset": 26,
"length": 12,
"text": "unacceptable",
"isNegated": false
}
]
},
{
"sentiment": "neutral",
"confidenceScores": {
"positive": 0.22,
"neutral": 0.75,
"negative": 0.04
},
"offset": 40,
"length": 32,
"text": "The concierge was nice, however.",
"targets": [
{
"sentiment": "positive",
"confidenceScores": {
"positive": 1.0,
"negative": 0.0
},
"offset": 44,
"length": 9,
"text": "concierge",
"relations": [
{
"relationType": "assessment",
"ref": "#/documents/0/sentences/1/assessments/0"
}
]
}
],
"assessments": [
{
"sentiment": "positive",
"confidenceScores": {
"positive": 1.0,
"negative": 0.0
},
"offset": 58,
"length": 4,
"text": "nice",
"isNegated": false
}
]
}
],
"warnings": []
}
],
"errors": [],
"modelVersion": "2025-01-01"
}
}
ตัวตรวจหาภาษา
ตัวตรวจหาภาษาจะประเมินการป้อนข้อความสําหรับแต่ละเอกสาร และส่งกลับตัวระบุภาษาที่มีคะแนนที่ระบุความเข้มของการวิเคราะห์ ความสามารถนี้มีประโยชน์สําหรับร้านค้าเนื้อหาที่รวบรวมข้อความตามอําเภอใจที่ไม่รู้จักภาษา ดู ภาษาที่รองรับสําหรับการตรวจหาภาษา สําหรับรายการของภาษาที่เปิดใช้งาน
payload = {
"kind": "LanguageDetection",
"parameters": {
"modelVersion": "latest"
},
"analysisInput":{
"documents":[
{
"id":"1",
"text": "This is a document written in English."
}
]
}
}
response = requests.post(service_url, json=payload, headers=auth_headers)
# Output all information of the request process
print_response(response)
ผลิตภัณฑ์
{
"kind": "LanguageDetectionResults",
"results": {
"documents": [
{
"id": "1",
"warnings": [],
"detectedLanguage": {
"name": "English",
"iso6391Name": "en",
"confidenceScore": 0.95
}
}
],
"errors": [],
"modelVersion": "2024-11-01"
}
}
ตัวแยกวลีหลัก
การแยกวลีหลักจะประเมินข้อความที่ไม่มีโครงสร้างและส่งกลับรายการของวลีหลัก ความสามารถนี้มีประโยชน์ถ้าคุณต้องการระบุจุดหลักในคอลเลกชันของเอกสารอย่างรวดเร็ว ดู ภาษาที่รองรับสําหรับการแยกวลีหลัก สําหรับรายการของภาษาที่เปิดใช้งาน
payload = {
"kind": "KeyPhraseExtraction",
"parameters": {
"modelVersion": "latest"
},
"analysisInput":{
"documents":[
{
"id":"1",
"language":"en",
"text": "Dr. Smith has a very modern medical office, and she has great staff."
}
]
}
}
response = requests.post(service_url, json=payload, headers=auth_headers)
# Output all information of the request process
print_response(response)
ผลิตภัณฑ์
{
"kind": "KeyPhraseExtractionResults",
"results": {
"documents": [
{
"id": "1",
"keyPhrases": [
"modern medical office",
"Dr. Smith",
"great staff"
],
"warnings": []
}
],
"errors": [],
"modelVersion": "2022-10-01"
}
}
การจดจําเอนทิตีที่มีชื่อ (NER)
การรู้จําเอนทิตี้ที่มีชื่อ (NER) คือความสามารถในการระบุเอนทิตี้ที่แตกต่างกันในข้อความและจัดประเภทลงในคลาสหรือประเภทที่กําหนดไว้ล่วงหน้า เช่น บุคคล ตําแหน่งที่ตั้ง เหตุการณ์ ผลิตภัณฑ์ และองค์กร ดูภาษา NER รองรับ สําหรับรายการของภาษาที่เปิดใช้งาน
payload = {
"kind": "EntityRecognition",
"parameters": {
"modelVersion": "latest"
},
"analysisInput":{
"documents":[
{
"id":"1",
"language": "en",
"text": "I had a wonderful trip to Seattle last week."
}
]
}
}
response = requests.post(service_url, json=payload, headers=auth_headers)
# Output all information of the request process
print_response(response)
ผลิตภัณฑ์
{
"kind": "EntityRecognitionResults",
"results": {
"documents": [
{
"id": "1",
"entities": [
{
"text": "trip",
"category": "Event",
"offset": 18,
"length": 4,
"confidenceScore": 0.66
},
{
"text": "Seattle",
"category": "Location",
"subcategory": "City",
"offset": 26,
"length": 7,
"confidenceScore": 1.0
},
{
"text": "last week",
"category": "DateTime",
"subcategory": "DateRange",
"offset": 34,
"length": 9,
"confidenceScore": 1.0
}
],
"warnings": []
}
],
"errors": [],
"modelVersion": "2025-02-01"
}
}
การเชื่อมโยงเอนทิตี
ไม่มีขั้นตอนสําหรับ REST API ในส่วนนี้
เนื้อหาที่เกี่ยวข้อง
- ใช้การวิเคราะห์ข้อความจัดทําสําเร็จใน Fabric with SynapseML
- ใช้ Azure AI Translator ที่สร้างไว้ล่วงหน้าใน Fabric กับ REST API
- ใช้ตัวแปล Azure AI จัดทําสําเร็จใน Fabric ที่มี SynapseML
- ใช้ Azure OpenAI จัดทําสําเร็จใน Fabric กับ REST API
- ใช้ Azure OpenAI จัดทําสําเร็จในผ้าด้วย Python SDK
- ใช้ Azure OpenAI จัดทําสําเร็จใน Fabric ที่มี SynapseML
- ที่เก็บ SynapseML GitHub - ซอร์สโค้ดและเอกสารประกอบสําหรับ SynapseML
- เอกสาร Azure AI Language - ข้อมูลอ้างอิงที่สมบูรณ์สําหรับบริการ Azure AI Language