Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
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.
Skift til Fabric ved at bruge experience-switcheren nederst til venstre på din startside.
- Opret en ny notesbog i dit Fabric arbejdsområde.
- Sæt et søhus fast på notesbogen. I Explorer-panelet udvid Lakehouses, og vælg derefter Tilføje.
- (Valgfrit) For at køre sentimentanalyse-trinnet skal du:
- En nøgle til Foundry Tools. Følg instruktionerne i Quickstart: Opret en multi-service ressource til Foundry Tools.
- En Azure Key Vault instans med din Foundry Tools-nøgle gemt som en hemmelighed.
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:
- I Azure-portalen skal du slette Foundry Tools multi-service resource.
- I Azure-portalen skal du slette Key Vault-instansen.
- Slet testnotesbogen i dit Fabric-arbejdsområde, hvis du ikke længere har brug for den.