Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Denne artikkelen viser deg hvordan du bygger en maskinlæringsmodell med SynapseML i en Microsoft Fabric-bærbar PC. Du lager en treningspipeline som bruker tekstfunksjoner og LightGBM-regresjon for å forutsi bokvurderinger ut fra anmeldelsestekst. Du lærer også hvordan du bruker Foundry Tools for forhåndsbygd sentimentanalyse.
- Lag en Fabric-notatbok og fest en hytte ved innsjøen
- Importer biblioteker og last inn data
- Bygg og tren en tekstutviklings- og LightGBM-regresjonspipeline
- Generer prediksjoner
- (Valgfritt) Kjør Foundry Tools sentimentanalyse
Forutsetning
Få et Microsoft Fabric-abonnement. Eller registrer deg for en gratis prøveversjon av Microsoft Fabric.
Logg på Microsoft Fabric.
Bytt til Fabric ved å bruke erfaringsbryteren nederst til venstre på hjemmesiden din.
- Opprett en ny notatbok i ditt Fabric arbeidsområde.
- Fest en hytte ved innsjøen til notatboken. I Utforsker-panelet , utvid Lakehouses, og velg deretter Legg til.
- (Valgfritt) For å kjøre sentimentanalyse-steget trenger du:
- En nøkkel til støperiverktøy. Følg instruksjonene i Quickstart: Lag en multi-service ressurs for Foundry Tools.
- En Azure Key Vault instans med nøkkelen til Foundry Tools lagret som en hemmelighet.
Konfigurere miljøet
Importer SynapseML-biblioteker i notatblokken, og initialiser Spark-økten.
from pyspark.sql import SparkSession
from synapse.ml.core.platform import *
spark = SparkSession.builder.getOrCreate()
Verifikasjon: Kjør følgende celle for å bekrefte at Spark kjører:
print(f"Spark version: {spark.version}")
Utgangen viser Spark-versjonsnummeret. Enhver versjon 3.4 eller nyere forventes. Den eksakte versjonen avhenger av din Fabric-kjøretid.
Laste inn et datasett
Last inn bokanmeldelsesdatasettet og del det opp i trenings- og testsett. Datasettet inneholder to kolonner: rating (heltall 1-5) og text (gjennomgangsinnhold).
train, test = (
spark.read.parquet(
"wasbs://publicwasb@mmlspark.blob.core.windows.net/BookReviewsFromAmazon10K.parquet"
)
.limit(1000)
.cache()
.randomSplit([0.8, 0.2])
)
display(train)
Verifikasjon: Kjør følgende celle for å bekrefte at dataene er lastet riktig:
print(f"Training rows: {train.count()}, Test rows: {test.count()}")
print(f"Columns: {train.columns}")
train.printSchema()
Utdataene viser omtrent 800 treningsrader og 200 testrader, med to kolonner: rating (heltall) og text (streng). De eksakte radtellingene varierer fordi randomSplit det er ikke-deterministisk.
Opprett opplæringssamlebåndet
Lag en pipeline som fremhever anmeldelsesteksten med TextFeaturizer og forutsier 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)
Verifikasjon: Kjør følgende celle for å bekrefte at rørledningen er trent:
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__}")
Utgangen viser to pipeline-faser: TextFeaturizerModel og LightGBMRegressionModel.
Forutsi utdataene for testdataene
Kall metoden transform på modellen for å forutsi vurderinger for testdataene og vise resultatene.
predictions = model.transform(test)
display(predictions)
Verifikasjon: Kjør følgende celle for å bekrefte at prediksjoner ble generert:
print(f"Prediction columns: {predictions.columns}")
print(f"Prediction count: {predictions.count()}")
predictions.select("rating", "prediction").show(5)
Utdataene viser fire kolonner (rating, text, features, ) predictionog omtrent 200 rader. Kolonnen prediction inneholder modellens forventede vurdering som en flyt. Sammenlign det med den faktiske rating kolonnen for å vurdere modellens ytelse.
(Valgfritt) Bruk Foundry Tools for sentimentanalyse
Hvis du vil analysere stemningen i bokanmeldelsene dine, kan du bruke SynapseMLs integrasjon med Foundry Tools. Dette steget bruker den forhåndsbygde TextSentiment modellen for å klassifisere tekstsentiment, noe som er en annen oppgave enn vurderingsprediksjonen i de forrige stegene.
Important
Dette steget krever en Foundry Tools-nøkkel lagret i Azure Key Vault. Hvis du hoppet over disse forutsetningene, fullfør dem først eller hopp over denne delen.
Kjør følgende kode med disse erstatningene:
- Erstatt
<your-secret-name>med navnet på nøkkelhemmeligheten i Foundry Tools i Key Vault. - Erstatt
<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)
Note
Oppdater setLocation-verdien hvis Foundry Tools-ressursen din er i en annen Azure region (for eksempel "westus2" eller "westeurope").
Verifikasjon: Kjør følgende celle for å bekrefte at sentimentanalysen er fullført:
print(f"Sentiment columns: {sentiment_results.columns}")
sentiment_results.select("text", "sentiment").show(3, truncate=50)
Utgangen viser tre kolonner (rating, text, ). sentiment Kolonnen sentiment inneholder strukturerte resultater med etiketter som positive, negative, neutral, eller mixed for hver gjennomgang.
Feilsøking
| Problem | Årsak | Løsning |
|---|---|---|
JAVA_GATEWAY_EXITED feil ved opprettelse av SparkSession |
Kjøre kode utenfor en Fabric-notebook | Kjør denne koden i en Fabric-notebook hvor Spark er forhåndskonfigurert. Ikke kjør lokalt uten en Spark-installasjon. |
Could not find <secret> in keyvault <vault> |
Key Vault-navn eller hemmelig navn er feil, eller notatbokens identitet mangler tilgang | Bekreft at navnene stemmer nøyaktig. I Azure-portalen, bekreft at din Fabric arbeidsområdeidentitet har Get tillatelse på Key Vault hemmeligheter. |
TextFeaturizer returnerer tomme funksjoner |
Inndatatekstkolonnen er null eller tom | Sjekk nullverdier: train.filter(train.text.isNull()).count() - fjern nullverdier før trening. |
randomSplit returnerer uventede radteller |
Sparks tilfeldige splitting er ikke-deterministisk | Dette er forventet adferd. Sett et frø for reproduserbarhet: .randomSplit([0.8, 0.2], seed=42) |
AnalysisException: Path does not exist |
Nettverksproblem med tilgang til eksempeldatablobben | Sjekk nettverkstilkoblingen. I Fabric, bekreft at arbeidsområdet ditt kan få tilgang til eksterne Azure Blob Storage-URL-er. |
| Foundry Tools returnerer 401 eller 403 | Ugyldig eller utløpt abonnementsnøkkel | Generer en ny nøkkel i Azure-portalen under Foundry Tools-ressursen din Keys and Endpoint-seksjonen. Oppdater Key Vault-hemmeligheten. |
setLocation Returer 404 |
Regionmismatch | Sett lokasjonen til å matche Azure-regionen der du opprettet Foundry Tools-ressursen din. |
Rydd opp ressurser
Hvis du opprettet Azure-ressurser for det valgfrie steget Foundry Tools og ikke lenger trenger dem, slett dem for å unngå kostnader:
- I Azure-portalen, slett Foundry Tools multi-service resource.
- I Azure-portalen, slett Key Vault-instansen.
- I Fabric-arbeidsområdet ditt, slett testnotatboken hvis du ikke lenger trenger den.