Byg en model med SynapseML

Denne artikel viser dig, hvordan du bygger en maskinlæringsmodel med SynapseML i en Microsoft Fabric-notebook. Du opretter en træningspipeline, der bruger tekstfremhævning og LightGBM-regression til at forudsige bogvurderinger ud fra anmeldelsestekst. Du lærer også, hvordan du bruger Foundry Tools til forudbygget sentimentanalyse.

  • Lav en Fabric-notesbog og sæt et søhus fast
  • Importer biblioteker og indlæs data
  • Byg og træn en tekstfremhævning og LightGBM-regressionspipeline
  • Generer forudsigelser
  • (Valgfrit) Kør Foundry Tools sentimentanalyse

Forudsætninger

  • Få et Microsoft Fabric-abonnement. Du kan også tilmelde dig en gratis Prøveversion af Microsoft Fabric.

  • Log på Microsoft Fabric.

  • Skift til Fabric ved at bruge experience-switcheren nederst til venstre på din startside.

    Skærmbillede, der viser valget af Fabric i oplevelsesskifter-menuen.

Konfigurer miljøet

Importér SynapseML-biblioteker i din notesbog, og initialiser din Spark-session.

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

spark = SparkSession.builder.getOrCreate()

Verifikation: Kør følgende celle for at bekræfte, at Spark kører:

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

Udgangen viser Spark-versionsnummeret. Enhver version 3.4 eller nyere forventes. Den præcise version afhænger af din Fabric-runtime.

Indlæs et datasæt

Indlæs boganmeldelsesdatasættet og opdel det i trænings- og testsæt. Datasættet indeholder to kolonner: rating (heltal 1-5) og text (anmeldelsesindhold).

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

display(train)

Verifikation: Kør følgende rute for at bekræfte, at dataene er indlæst korrekt:

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

Outputtet viser cirka 800 træningsrækker og 200 testrækker, med to kolonner: rating (heltals) og text (streng). De præcise rækkeantal varierer, fordi randomSplit det er ikke-deterministisk.

Opret træningspipeline

Lav en pipeline, der fremhæver anmeldelsesteksten med TextFeaturizer og forudsiger vurderingen med LightGBMRegressor.

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)

Verifikation: Kør følgende celle for at bekræfte den trænede pipeline:

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

Outputtet viser to pipeline-faser: TextFeaturizerModel og LightGBMRegressionModel.

Forudsig resultatet af testdataene

Kald transform metoden på modellen for at forudsige vurderinger af testdataene og vise resultaterne.

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

Verifikation: Kør følgende celle for at bekræfte, at forudsigelser er genereret:

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

Outputtet viser fire kolonner (rating, text, features, ) predictionog cirka 200 rækker. Kolonnen prediction indeholder modellens forudsagte vurdering som en float. Sammenlign det med den faktiske rating kolonne for at vurdere modellens ydeevne.

(Valgfrit) Brug Foundry Tools til sentimentanalyse

Hvis du vil analysere stemningen i dine boganmeldelser, kan du bruge SynapseMLs integration med Foundry Tools. Dette trin bruger den forudbyggede TextSentiment model til at klassificere tekstsentiment, hvilket er en anden opgave end vurderingsforudsigelsen i de tidligere trin.

Vigtigt!

Dette trin kræver en Foundry Tools-nøgle, der er gemt i Azure Key Vault. Hvis du sprang disse forudsætninger over, så gennemfør dem først eller spring denne sektion over.

Kør følgende kode med disse erstatninger:

  • Erstat <your-secret-name> med navnet på din Foundry Tools nøglehemmelighed i Key Vault.
  • Erstat <your-key-vault-name> med navnet på din Azure Key Vault instans.
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)

Bemærkning

Opdater værdien setLocation, hvis din Foundry Tools-ressource er i en anden Azure region (for eksempel "westus2" eller "westeurope").

Verifikation: Kør følgende celle for at bekræfte, at sentimentanalysen er gennemført:

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

Outputtet viser tre kolonner (rating, text, ). sentiment Kolonnen sentiment indeholder strukturerede resultater med etiketter som positive, negative, , neutraleller mixed for hver gennemgang.

Troubleshooting

Problem Årsag Opløsning
JAVA_GATEWAY_EXITED fejl ved oprettelse af SparkSession Kørsel af kode uden for en Fabric-notebook Kør denne kode i en Fabric-notebook, hvor Spark er forudkonfigureret. Kør ikke lokalt uden en Spark-installation.
Could not find <secret> in keyvault <vault> Key Vault-navnet eller hemmelige navn er forkert, eller notesbogens identitet mangler adgang Bekræft navnene præcist. I Azure-portalen skal du bekræfte, at din Fabric workspace-identitet har Get tilladelse på Key Vault hemmeligheder.
TextFeaturizer Returnerer tomme funktioner Inputtekstkolonnen er null eller tom Tjek for nullværdier: train.filter(train.text.isNull()).count() - fjern nullværdier før træning.
randomSplit returnerer uventede rækkeoptællinger Sparks tilfældige splitting er ikke-deterministisk Dette er den forventede funktionsmåde. Sæt et frø for reproducerbarhed: .randomSplit([0.8, 0.2], seed=42)
AnalysisException: Path does not exist Netværksproblem med adgang til eksempeldatablobben Verificér netværksforbindelsen. I Fabric, bekræft at dit arbejdsområde kan tilgå eksterne Azure Blob Storage URL'er.
Foundry Tools returnerer 401 eller 403 Ugyldig eller udløbet abonnementsnøgle Generer en ny nøgle i Azure-portalen under din Foundry Tools-ressource Keys and Endpoint sektion. Opdater Key Vault-hemmeligheden.
setLocation Tilbagevender 404 Regionsuoverensstemmelse Indstil lokationen, så den matcher Azure-regionen, hvor du har oprettet din Foundry Tools-ressource.

Ryd op i ressourcer

Hvis du har oprettet Azure-ressourcer til det valgfrie trin Foundry Tools og ikke længere har brug for dem, så slet dem for at undgå gebyrer:

  1. I Azure-portalen skal du slette Foundry Tools multi-service resource.
  2. I Azure-portalen skal du slette Key Vault-instansen.
  3. Slet testnotesbogen i dit Fabric-arbejdsområde, hvis du ikke længere har brug for den.