SynapseML ile model oluşturma

Bu makalede, Microsoft Fabric not defterinde SynapseML ile makine öğrenmesi modeli oluşturma gösterilmektedir. Yorum metinlerinden kitap puanlarını tahmin etmek için metin öznitelik çıkarımı ve LightGBM regresyonu kullanan bir eğitim işlem hattı oluşturursunuz. Ayrıca, hazır duygu analizi için Foundry Tools'u nasıl kullanacağınızı da öğrenirsiniz.

  • Fabric not defteri oluşturun ve Lakehouse ekleyin
  • Kitaplıkları içeri aktarma ve verileri yükleme
  • Metin öznitelik çıkarımı ve LightGBM regresyon işlem hattı oluşturun ve eğitin
  • Tahmin oluşturma
  • (İsteğe bağlı) Foundry Tools duygu analizini çalıştırın

Önkoşullar

Ortamı ayarlama

Not defterinizde SynapseML kitaplıklarını içeri aktarın ve Spark oturumunuzu başlatın.

from pyspark.sql import SparkSession
from synapse.ml.core.platform import *

spark = SparkSession.builder.getOrCreate()

Doğrulama: Spark'ın çalıştığını onaylamak için aşağıdaki hücreyi çalıştırın:

print(f"Spark version: {spark.version}")

Çıktıda Spark sürüm numarası görüntülenir. Herhangi bir sürüm 3.4 veya üstü beklenir. Tam sürüm, Fabric çalışma zamanınıza bağlıdır.

Veri kümesi yükleme

Kitap incelemeleri veri kümesini yükleyin ve eğitim ile test kümelerine ayırın. Veri kümesi iki sütun içerir: rating (tamsayı 1-5) ve text (içeriği gözden geçirme).

train, test = (
    spark.read.parquet(
        "wasbs://publicwasb@mmlspark.blob.core.windows.net/BookReviewsFromAmazon10K.parquet"
    )
    .limit(1000)
    .cache()
    .randomSplit([0.8, 0.2])
)

display(train)

Doğrulama: Doğru yüklenen verileri onaylamak için aşağıdaki hücreyi çalıştırın:

print(f"Training rows: {train.count()}, Test rows: {test.count()}")
print(f"Columns: {train.columns}")
train.printSchema()

Çıktıda yaklaşık 800 eğitim satırı ve 200 test satırı gösterilir ve iki sütun bulunur: rating (tamsayı) ve text (dize). Kesin satır sayıları belirleyici olmadığından farklılık gösterir randomSplit .

Eğitim işlem hattını oluşturma

İnceleme metnini TextFeaturizer ile özelliklendiren ve puanı LightGBMRegressor ile tahmin eden bir işlem hattı oluşturun.

from pyspark.ml import Pipeline
from synapse.ml.featurize.text import TextFeaturizer
from synapse.ml.lightgbm import LightGBMRegressor

model = Pipeline(
    stages=[
        TextFeaturizer(inputCol="text", outputCol="features"),
        LightGBMRegressor(featuresCol="features", labelCol="rating", dataTransferMode="bulk")
    ]
).fit(train)

Doğrulama: İşlem hattının eğitilmiş olduğunu onaylamak için aşağıdaki hücreyi çalıştırın:

print(f"Pipeline stages: {len(model.stages)}")
print(f"Stage 1: {type(model.stages[0]).__name__}")
print(f"Stage 2: {type(model.stages[1]).__name__}")

Çıktıda iki işlem hattı aşaması gösterilir: TextFeaturizerModel ve LightGBMRegressionModel.

Test verilerinin çıkışını tahmin edin

Test verileri için derecelendirmeleri tahmin etmek ve sonuçları görüntülemek üzere modelde transform yöntemini çağırın.

predictions = model.transform(test)
display(predictions)

Doğrulama: Tahminlerin oluşturulduğunu onaylamak için aşağıdaki hücreyi çalıştırın:

print(f"Prediction columns: {predictions.columns}")
print(f"Prediction count: {predictions.count()}")
predictions.select("rating", "prediction").show(5)

Çıktıda dört sütun (rating, text, features, prediction) ve yaklaşık 200 satır listelenir. prediction sütunu, modelin float olarak tahmin edilen derecelendirmesini içerir. Model performansını değerlendirmek için gerçek rating sütunla karşılaştırın.

(İsteğe bağlı) Duygu analizi için Foundry Tools'u kullanın

Kitap incelemelerinizin yaklaşımını analiz etmek istiyorsanız SynapseML'nin Döküm Araçları ile tümleştirmesini kullanabilirsiniz. Bu adım, önceki adımlardaki derecelendirme tahmininden farklı bir görev olan metin yaklaşımını sınıflandırmak için önceden oluşturulmuş TextSentiment modeli kullanır.

Important

Bu adım, Azure Key Vault depolanan bir Döküm Araçları anahtarı gerektirir. Bu önkoşulları atladıysanız, önce bunları tamamlayın veya bu bölümü atlayın.

Bu değiştirmelerle aşağıdaki kodu çalıştırın:

  • <your-secret-name> yerine Key Vault’daki Foundry Tools gizli anahtarınızın adını yazın.
  • <your-key-vault-name> değerini Azure Key Vault örneğinizin adıyla değiştirin.
from synapse.ml.services import TextSentiment
from synapse.ml.core.platform import find_secret

sentiment_model = TextSentiment(
    textCol="text",
    outputCol="sentiment",
    subscriptionKey=find_secret("<your-secret-name>", "<your-key-vault-name>")
).setLocation("eastus")

sentiment_results = sentiment_model.transform(test)
display(sentiment_results)

Note

Döküm Araçları kaynağınız farklı bir Azure bölgesindeyse (örneğin, setLocation veya "westus2") "westeurope" değerini güncelleştirin.

Doğrulama: Yaklaşım analizinin tamamlandığını onaylamak için aşağıdaki hücreyi çalıştırın:

print(f"Sentiment columns: {sentiment_results.columns}")
sentiment_results.select("text", "sentiment").show(3, truncate=50)

Çıktıda üç sütun (rating, text, sentiment) gösterilir. sentiment sütunu, her inceleme için positive, negative, neutral veya mixed gibi etiketler içeren yapılandırılmış sonuçlar içerir.

Sorun giderme

Sorun Nedeni Çözünürlük
JAVA_GATEWAY_EXITED SparkSession oluştururken hata oluştu Fabric not defterinin dışında kod çalıştırma Bu kodu Spark'ın önceden yapılandırıldığı bir Fabric not defterinde çalıştırın. Spark yüklemesi olmadan yerel olarak çalıştırmayın.
Could not find <secret> in keyvault <vault> Key Vault adı veya gizli anahtar adı yanlış ya da not defteri kimliği erişime sahip değil Adların tam olarak eşleştiğinden emin olun. Azure portalında, Fabric çalışma alanı kimliğinizin Key Vault gizli anahtarları için Get iznine sahip olduğunu onaylayın.
TextFeaturizer boş özellikler döndürür Giriş metin sütunu null veya boş Null değerleri denetleyin: train.filter(train.text.isNull()).count() - eğitimden önce null değerleri kaldırın.
randomSplit beklenmeyen satır sayıları döndürür Spark'ın rastgele bölünmesi belirleyici değildir Bu beklenen bir davranıştır. Yeniden üretilebilirlik için bir tohum ayarlayın: .randomSplit([0.8, 0.2], seed=42)
AnalysisException: Path does not exist Örnek veri blob'una erişim ağ sorunu Ağ bağlantısını doğrulayın. Fabric'da çalışma alanınızın dış Azure Blob Depolama URL'lerine erişebildiğini onaylayın.
Foundry Tools 401 veya 403 hatası döndürür Geçersiz veya süresi dolmuş abonelik anahtarı Azure portalında, Foundry Tools kaynağınızın Keys and Endpoint bölümünde yeni bir anahtar oluşturun. Key Vault gizli anahtarını güncelleyin.
setLocation 404 döndürür Bölge uyuşmazlığı Konumu, Döküm Araçları kaynağınızı oluşturduğunuz Azure bölgeyle eşleşecek şekilde ayarlayın.

Kaynakları temizle

İsteğe bağlı Döküm Araçları adımı için Azure kaynakları oluşturduysanız ve artık bunlara ihtiyacınız yoksa, ücretlerden kaçınmak için bunları silin:

  1. Azure portalında Foundry Tools çok hizmetli kaynağını silin.
  2. Azure portalında Key Vault örneğini silin.
  3. Fabric çalışma alanınızda, artık ihtiyacınız yoksa test not defterini silin.