Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto článku se dozvíte, jak vytvořit model strojového učení pomocí SynapseML v poznámkovém bloku Microsoft Fabric. Vytvoříte trénovací proces, který využívá extrakci příznaků z textu a regresi LightGBM k předpovídání hodnocení knih z textu recenzí. Dozvíte se také, jak používat Nástroje Foundry k předem připravené analýze mínění.
- Vytvořit poznámkový blok Fabric a připojit lakehouse
- Import knihoven a načtení dat
- Sestavení a trénování pipeline pro vektorizaci textu a regresi LightGBM
- Generování předpovědí
- (Volitelné) Spuštění analýzy mínění v nástrojích Foundry
Požadavky
Získejte předplatné Microsoft Fabric. Nebo si zaregistrujte bezplatnou zkušební verzi Microsoft Fabricu.
Přihlaste se k Microsoft Fabric.
Přepněte na Fabric pomocí přepínače prostředí na levé dolní straně domovské stránky.
- Vytvoření nového poznámkového bloku v pracovním prostoru Fabric
- Připojte lakehouse k poznámkovému bloku. V podokně Průzkumník rozbalte položku Lakehouses a pak vyberte Přidat.
- (Volitelné) Pokud chcete spustit krok analýzy mínění, potřebujete:
- Klíč k nástrojům Foundry. Postupujte podle pokynů v rychlém startu: Vytvořte prostředek s více službami pro Foundry Tools.
- Instance služby Azure Key Vault s vaším klíčem Foundry Tools uloženým jako tajný kód.
Nastavení prostředí
V poznámkovém bloku importujte knihovny SynapseML a inicializujte relaci Sparku.
from pyspark.sql import SparkSession
from synapse.ml.core.platform import *
spark = SparkSession.builder.getOrCreate()
Ověření: Spuštěním následující buňky ověřte, že Spark běží:
print(f"Spark version: {spark.version}")
Výstup zobrazí číslo verze Sparku. Očekává se jakákoli verze 3.4 nebo novější. Přesná verze závisí na vašem prostředí Fabric runtime.
Načtení datové sady
Načtěte datovou sadu recenzí knih a rozdělte ji na tréninkovou a testovací sadu. Datová sada obsahuje dva sloupce: rating (celé číslo 1–5) a text (kontrola obsahu).
train, test = (
spark.read.parquet(
"wasbs://publicwasb@mmlspark.blob.core.windows.net/BookReviewsFromAmazon10K.parquet"
)
.limit(1000)
.cache()
.randomSplit([0.8, 0.2])
)
display(train)
Ověření: Spuštěním následující buňky potvrďte správné načtení dat:
print(f"Training rows: {train.count()}, Test rows: {test.count()}")
print(f"Columns: {train.columns}")
train.printSchema()
Výstup ukazuje přibližně 800 trénovacích řádků a 200 testovacích řádků se dvěma sloupci: rating (celé číslo) a text (řetězec). Přesný počet řádků se liší, protože randomSplit není deterministický.
Vytvořte tréninkovou pipeline
Vytvořte pipeline, která pomocí TextFeaturizer extrahuje příznaky z textu recenze a pomocí LightGBMRegressor předpovídá hodnocení.
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)
Ověření: Spuštěním následující buňky potvrďte natrénovaný kanál:
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__}")
Výstup zobrazuje dvě fáze pipeline: TextFeaturizerModel a LightGBMRegressionModel.
Predikce výstupu testovacích dat
transform Voláním metody v modelu můžete předpovědět hodnocení testovacích dat a zobrazit výsledky.
predictions = model.transform(test)
display(predictions)
Ověření: Spuštěním následující buňky potvrďte, že se vygenerovaly předpovědi:
print(f"Prediction columns: {predictions.columns}")
print(f"Prediction count: {predictions.count()}")
predictions.select("rating", "prediction").show(5)
Výstup obsahuje čtyři sloupce (rating, text, features, prediction) a přibližně 200 řádků. Sloupec prediction obsahuje predikované hodnocení modelu jako plovoucí. Porovnejte ho se skutečným rating sloupcem a vyhodnoťte výkon modelu.
(Volitelné) Použití nástrojů Foundry k analýze mínění
Pokud chcete analyzovat mínění recenzí knih, můžete použít integraci SynapseML s Nástroji Foundry. Tento krok používá předem vytvořený TextSentiment model ke klasifikaci mínění v textu, což je jiný úkol než předpověď hodnocení v předchozích krocích.
Important
Tento krok vyžaduje klíč Foundry Tools uložený v Azure Key Vault. Pokud jste tyto požadavky vynechali, nejprve je dokončete nebo tuto část přeskočte.
Spusťte následující kód s těmito nahrazeními:
- Nahraďte
<your-secret-name>názvem vašeho tajného klíče Foundry Tools ve službě Key Vault. - Nahraďte
<your-key-vault-name>názvem vaší instance Azure Key Vault.
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
Aktualizujte hodnotu setLocation, pokud je prostředek Foundry Tools v jiné oblasti Azure (například "westus2" nebo "westeurope").
Ověření: Spuštěním následující buňky potvrďte dokončení analýzy mínění:
print(f"Sentiment columns: {sentiment_results.columns}")
sentiment_results.select("text", "sentiment").show(3, truncate=50)
Výstup zobrazuje tři sloupce (rating, text, sentiment). Sloupec sentiment obsahuje strukturované výsledky s popisky, jako je positive, negative, neutralnebo mixed pro každou kontrolu.
Troubleshooting
| Problém | Příčina | Resolution |
|---|---|---|
JAVA_GATEWAY_EXITED chyba při vytváření SparkSession |
Spouštění kódu mimo notebook Fabric | Spusťte tento kód v Fabric poznámkovém bloku, kde je Spark předkonfigurovaný. Nespouštějte lokálně bez nainstalovaného Sparku. |
Could not find <secret> in keyvault <vault> |
Název služby Key Vault nebo název tajného klíče je nesprávný nebo identita notebooku nemá přístup | Ověřte, že názvy přesně odpovídají. Na portálu Azure ověřte, že identita pracovního prostoru Fabric má oprávnění Get pro tajné kódy v Key Vaultu. |
TextFeaturizer vrací prázdné prvky |
Vstupní textový sloupec má hodnotu null nebo je prázdný. | Zkontrolujte hodnoty null: train.filter(train.text.isNull()).count() – před trénováním odeberte hodnoty null. |
randomSplit vrátí neočekávané počty řádků. |
Náhodné rozdělení Sparku není deterministické. | Toto chování je očekávané. Nastavte počáteční hodnotu pro reprodukovatelnost: .randomSplit([0.8, 0.2], seed=42) |
AnalysisException: Path does not exist |
Problém se sítí při přístupu k ukázkovému objektu blob s daty | Ověřte síťové připojení. V Fabric ověřte, že váš pracovní prostor má přístup k externím adresám URL Azure Blob Storage. |
| Foundry Tools vrátí hodnotu 401 nebo 403 | Neplatný nebo prošlý klíč předplatného | Vygenerujte nový klíč v portálu Azure v části Klíče a koncový bod prostředku Foundry Tools. Aktualizujte tajný kód Key Vault. |
setLocation vrátí hodnotu 404 |
Neshoda oblastí | Nastavte umístění tak, aby odpovídalo oblasti Azure, ve které jste vytvořili prostředek Foundry Tools ve službě Azure. |
Vyčistěte zdroje
Pokud jste vytvořili prostředky Azure pro volitelný krok Nástroje Foundry a už je nepotřebujete, odstraňte je, abyste se vyhnuli poplatkům:
- Na portálu Azure odstraňte prostředek s více službami Foundry Tools.
- Na portálu Azure odstraňte instanci Key Vault.
- V pracovním prostoru Fabric odstraňte testovací poznámkový blok, pokud ho už nepotřebujete.