Aracılığıyla paylaş


REST API ve SynapseML ile Fabric'de Azure AI Dil metin analizi kullanma (önizleme)

Önemli

Bu özellik önizlemesürümündedir.

Azure AI Dili , Doğal Dil İşleme (NLP) özellikleriyle metin madenciliği ve metin analizi gerçekleştirmenizi sağlayan bir Azure yapay zeka hizmetidir .

Bu makalede, metni analiz etmek için azure yapay zeka dil hizmetlerini doğrudan Microsoft Fabric'te kullanmayı öğreneceksiniz. Bu makalenin sonunda şunları yapabileceksiniz:

  • Tümce veya belge düzeyinde yaklaşım etiketlerini algılama
  • Belirli bir metin girişi için dili tanımlama
  • Metinden anahtar ifadeleri ayıklama
  • Metindeki farklı varlıkları tanımlama ve bunları önceden tanımlanmış sınıflara veya türlere kategorilere ayırma

Önkoşullar

  • yeni bir not defteri oluşturun.
  • Dizüstü bilgisayarınızı bir Lakehouse'a bağlayın. Not defterinizin sol tarafındaki Ekle'yi seçerek mevcut bir göl evi ekleyin veya yeni bir tane oluşturun.

Uyarı

Bu makalede, kimlik doğrulamasını otomatik olarak yapan Microsoft Fabric'in yerleşik önceden oluşturulmuş yapay zeka hizmetleri kullanılır. Ayrı bir Azure AI hizmetleri anahtarı almanız gerekmez; kimlik doğrulaması Doku çalışma alanınız aracılığıyla yönetilir. Daha fazla bilgi için bkz: Fabric'deki önyapılmış yapay zeka modelleri (önizleme).

Bu makaledeki kod örnekleri, Microsoft Fabric not defterlerinde önceden yüklenmiş kitaplıkları kullanır:

  • SynapseML: Makine öğrenimi özellikleri için Fabric not defterlerinde önceden yüklenmiş
  • PySpark: Fabric Spark işlemde varsayılan olarak kullanılabilir
  • Standart Python kitaplıkları: json, uuid Python standart kitaplığının bir parçasıdır

Uyarı

Microsoft Fabric not defterleri önceden yüklenmiş birçok ortak kitaplıkla birlikte gelir. MLflow tümleştirmesi ve metin analizi özellikleri sağlayan SynapseML kitaplığı Spark ortamında otomatik olarak kullanılabilir.

Yaklaşımınızı seçin

Bu makale, Fabric'de Azure AI Dil hizmetlerini kullanmanın iki yolunu sunmaktadır.

  • REST API yaklaşımı: Hizmete doğrudan HTTP çağrıları (yeni başlayanlar için önerilir)
  • SynapseML yaklaşımı: Daha büyük ölçekli işleme için Spark DataFrame'leri kullanma

Tavsiye

Anlaşılması ve hata ayıklaması daha kolay olduğundan yeni kullanıcılar REST API yaklaşımıyla başlamalıdır. SynapseML yaklaşımı, Spark ile büyük veri kümelerini işlemek için daha iyidir.

Kimlik doğrulama ve uç noktaları ayarlama

Azure AI Dil hizmetlerine bağlantıyı ayarlamak için bu kodu kopyalayıp Doku not defterinizin ilk hücresine yapıştırın:

Uyarı

Bu kod, Fabric'in yerleşik kimlik doğrulamasını kullanır. İşlev, get_fabric_env_config çalışma alanı kimlik bilgilerinizi otomatik olarak alır ve önceden oluşturulmuş yapay zeka hizmetlerine bağlanır. API anahtarı gerekmez.

# 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}")

Yaklaşım analizi

Yaklaşım Analizi özelliği, yaklaşım etiketlerini ("negatif", "nötr" ve "pozitif" gibi) ve tümce ve belge düzeyinde güvenilirlik puanlarını algılamak için bir yol sağlar. Bu özellik ayrıca pozitif, nötr ve negatif yaklaşım için her belge ve içindeki tümceler için 0 ile 1 arasında güvenilirlik puanları döndürür. Etkinleştirilen dillerin listesi için bkz. Yaklaşım Analizi ve Görüş Madenciliği dil desteği.

Metnin duygusunu analiz et

Örnek bir metnin yaklaşımını analiz etmek için bu kodu not defterinizdeki yeni bir hücreye kopyalayın:

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)

Tavsiye

Analiz etmek için "metin" alanındaki metni kendi içeriğinizle değiştirebilirsiniz. Hizmet yaklaşım puanlarını döndürür ve metnin hangi bölümlerinin pozitif, negatif veya nötr olduğunu belirler.

Beklenen çıkış

Aşağıdaki kodu başarıyla çalıştırdığınızda şuna benzer bir çıkış görmeniz gerekir:

{
  "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"
  }
}

Dil algılayıcısı

Dil Algılayıcısı her belge için metin girişini değerlendirir ve dil tanımlayıcılarını çözümlemenin gücünü gösteren bir puanla döndürür. Bu özellik, dilin bilinmediği rastgele metinleri toplayan içerik depoları için kullanışlıdır. Etkinleştirilmiş dillerin listesi için bkz. Dil algılama için desteklenen diller.

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)

Çıktı

{
  "kind": "LanguageDetectionResults",
  "results": {
    "documents": [
      {
        "id": "1",
        "warnings": [],
        "detectedLanguage": {
          "name": "English",
          "iso6391Name": "en",
          "confidenceScore": 0.95
        }
      }
    ],
    "errors": [],
    "modelVersion": "2024-11-01"
  }
}

Anahtar İfade Ayıklayıcı

Anahtar İfade Ayıklama yapılandırılmamış metni değerlendirir ve anahtar ifadelerin listesini döndürür. Bu özellik, bir belge koleksiyonundaki ana noktaları hızlı bir şekilde tanımlamanız gerekiyorsa kullanışlıdır. Etkinleştirilmiş dillerin listesi için anahtar ifade ayıklama için desteklenen diller bakın.

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)

Çıktı

{
  "kind": "KeyPhraseExtractionResults",
  "results": {
    "documents": [
      {
        "id": "1",
        "keyPhrases": [
          "modern medical office",
          "Dr. Smith",
          "great staff"
        ],
        "warnings": []
      }
    ],
    "errors": [],
    "modelVersion": "2022-10-01"
  }
}

Adlandırılmış Varlık Tanıma (NER)

Adlandırılmış Varlık Tanıma (NER), metindeki farklı varlıkları tanımlama ve bunları önceden tanımlanmış sınıflara veya türlere (kişi, konum, olay, ürün ve kuruluş gibi) kategorilere ayırma özelliğidir. Etkin dillerin listesi için bkz. NER dil desteği.

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)

Çıktı

{
  "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"
  }
}


Varlık bağlama

Bu bölümde REST API için adım yoktur.