Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Azure AI-tjänster hjälper utvecklare och organisationer att skapa ansvarsfulla program med redo att använda och anpassningsbara API:er och modeller. I den här artikeln använder du Azure AI-tjänster för att utföra uppgifter som omfattar: textanalys, översättning, dokumentinformation, vision, bildsökning, tal till text och text till tal, avvikelseidentifiering och dataextrahering från webb-API:er.
Azure AI-tjänster hjälper utvecklare att skapa program som ser, hör, talar, förstår och börjar resonera. Azure AI-tjänstekatalogen innehåller fem grundpelare: Vision, Speech, Language, Web search och Decision.
Förutsättningar
Skaffa en Microsoft Fabric-prenumeration. Eller registrera dig för en kostnadsfri Microsoft Fabric-utvärderingsversion.
Logga in på Microsoft Fabric.
Växla till Fabric genom att använda upplevelseväxlaren längst ned till vänster på startsidan.
- Skapa en notebook-fil.
- Bifoga anteckningsboken till ett sjöhus. I notebook-filen väljer du Lägg till för att lägga till ett befintligt lakehouse eller skapa ett nytt.
- Hämta en Azure AI-tjänstnyckel. Följ snabbstart: Skapa en resurs med flera tjänster för Azure AI-tjänster. Kopiera nyckelvärdet som ska användas i kodexemplen nedan.
Förbereda systemet
Börja med att importera de bibliotek som krävs och initiera en Spark-session.
from pyspark.sql.functions import udf, col, lit
from synapse.ml.io.http import HTTPTransformer, http_udf
from requests import Request
from pyspark.ml import PipelineModel
import os
from pyspark.sql import SparkSession
# Start a Spark session.
spark = SparkSession.builder.getOrCreate()
Importera Azure AI-tjänstbiblioteken. I följande kod ersätter du platshållartexten <YOUR-KEY-VALUE> med dina egna nycklar och anger platsvärdena för varje tjänst.
from synapse.ml.cognitive import *
# A general Azure AI services key for Text Analytics, Vision, and Document Intelligence (or use separate keys for each service).
service_key = "<YOUR-KEY-VALUE>" # Replace `<YOUR-KEY-VALUE>` with your Azure AI services key. See prerequisites for details.
service_loc = "eastus"
# A Bing Search v7 subscription key.
bing_search_key = "<YOUR-KEY-VALUE>" # Replace `<YOUR-KEY-VALUE>` with your Bing Search v7 subscription key. See prerequisites for details.
# An Anomaly Detector subscription key.
anomaly_key = "<YOUR-KEY-VALUE>" # Replace `<YOUR-KEY-VALUE>` with your Anomaly Detector key. See prerequisites for details.
anomaly_loc = "westus2"
# A Translator subscription key.
translator_key = "<YOUR-KEY-VALUE>" # Replace `<YOUR-KEY-VALUE>` with your Translator key. See prerequisites for details.
translator_loc = "eastus"
# An Azure Search key.
search_key = "<YOUR-KEY-VALUE>" # Replace `<YOUR-KEY-VALUE>` with your Azure Search key. See prerequisites for details.
Analysera sentiment i text
Tjänsten TextAnalys innehåller flera algoritmer för att extrahera intelligenta insikter från text. Använd till exempel tjänsten för att analysera sentiment i indatatext. Tjänsten returnerar en poäng mellan 0,0 och 1,0: låga poäng indikerar negativt sentiment och höga poäng indikerar positivt sentiment.
Det här kodexemplet returnerar sentiment för tre meningar.
# Create a DataFrame that's tied to its column names
df = spark.createDataFrame(
[
("I am so happy today, it's sunny!", "en-US"),
("I am frustrated by this rush hour traffic", "en-US"),
("The cognitive services on Spark aren't bad", "en-US"),
],
["text", "language"],
)
# Run the Text Analytics service with options
sentiment = (
TextSentiment()
.setTextCol("text")
.setLocation(service_loc)
.setSubscriptionKey(service_key)
.setOutputCol("sentiment")
.setErrorCol("error")
.setLanguageCol("language")
)
# Show the results in a table.
display(
sentiment.transform(df).select(
"text", col("sentiment.document.sentiment").alias("sentiment")
)
)
Utföra textanalys för hälsodata
Textanalys för hälsoextrakt och etiketter medicinsk information från ostrukturerad text som läkaranteckningar, sammanfattningar av ansvarsfrihet, kliniska dokument och elektroniska hälsojournaler.
Det här kodexemplet analyserar text från läkarens anteckningar och returnerar strukturerade data.
df = spark.createDataFrame(
[
("20mg of ibuprofen twice a day",),
("1tsp of Tylenol every 4 hours",),
("6 drops of vitamin B-12 every evening",),
],
["text"],
)
healthcare = (
AnalyzeHealthText()
.setSubscriptionKey(service_key)
.setLocation(service_loc)
.setLanguage("en")
.setOutputCol("response")
)
display(healthcare.transform(df))
Översätta text till ett annat språk
Translator är en molnbaserad maskinöversättningstjänst som ingår i Azure AI-tjänstefamiljen med kognitiva API:er för att skapa intelligenta appar. Translator integreras enkelt i dina appar, webbplatser, verktyg och lösningar. Det gör att du kan lägga till flerspråkiga upplevelser på 90 språk och dialekter, och det fungerar på alla operativsystem för textöversättning.
Följande kodexempel översätter indatameningarna till målspråken.
from pyspark.sql.functions import col, flatten
# Create a DataFrame with the sentences to translate
df = spark.createDataFrame(
[(["Hello, what is your name?", "Bye"],)],
[
"text",
],
)
# Run the Translator service.
translate = (
Translate()
.setSubscriptionKey(translator_key)
.setLocation(translator_loc)
.setTextCol("text")
.setToLanguage(["zh-Hans"])
.setOutputCol("translation")
)
# Show the translation results.
display(
translate.transform(df)
.withColumn("translation", flatten(col("translation.translations")))
.withColumn("translation", col("translation.text"))
.select("translation")
)
Extrahera information från ett dokument till strukturerade data
Azure AI Document Intelligence är en del av Azure AI-tjänster och gör att du kan skapa automatiserad databehandlingsprogramvara med maskininlärning. Använd Azure AI Document Intelligence för att identifiera och extrahera text, nyckel/värde-par, markeringsmarkeringar, tabeller och struktur från dina dokument. Tjänsten matar ut strukturerade data som innehåller relationer från den ursprungliga filen, avgränsningsrutor, konfidenspoäng med mera.
Följande kod analyserar en visitkortsbild och extraherar dess information som strukturerade data.
from pyspark.sql.functions import col, explode
# Create a DataFrame with the source files
imageDf = spark.createDataFrame(
[
(
"https://mmlspark.blob.core.windows.net/datasets/FormRecognizer/business_card.jpg",
)
],
[
"source",
],
)
# Run Azure AI Document Intelligence
analyzeBusinessCards = (
AnalyzeBusinessCards()
.setSubscriptionKey(service_key)
.setLocation(service_loc)
.setImageUrlCol("source")
.setOutputCol("businessCards")
)
# Show recognition results.
display(
analyzeBusinessCards.transform(imageDf)
.withColumn(
"documents", explode(col("businessCards.analyzeResult.documentResults.fields"))
)
.select("source", "documents")
)
Analysera och tagga bilder
Azure AI Vision analyserar bilder för att identifiera ansikten, objekt och beskrivningar av naturligt språk.
Det här kodexemplet analyserar bilder och etiketterar dem med taggar. Taggar är enordsbeskrivningar av objekt, personer, landskap och åtgärder i en bild.
# Create a DataFrame with image URLs.
base_url = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-sample-data-files/master/ComputerVision/Images/"
df = spark.createDataFrame(
[
(base_url + "objects.jpg",),
(base_url + "dog.jpg",),
(base_url + "house.jpg",),
],
[
"image",
],
)
# Run Azure AI Vision to analyze images and extract information.
analysis = (
AnalyzeImage()
.setLocation(service_loc)
.setSubscriptionKey(service_key)
.setVisualFeatures(
["Categories", "Color", "Description", "Faces", "Objects", "Tags"]
)
.setOutputCol("analysis_results")
.setImageUrlCol("image")
.setErrorCol("error")
)
# Show the description tags.
display(analysis.transform(df).select("image", "analysis_results.description.tags"))
Sök efter bilder som är relaterade till en fråga med naturligt språk
bildsökning i Bing söker på webben för att hämta bilder relaterade till en användares fråga på naturligt språk.
Det här exemplet använder en textfråga för att hitta bilder av citattecken. Den matar ut en lista över bild-URL:er som är relaterade till frågan.
# Number of images Bing returns per query
imgsPerBatch = 10
# List of offsets to page through the search results
offsets = [(i * imgsPerBatch,) for i in range(100)]
# Create a DataFrame of offsets to page through results
bingParameters = spark.createDataFrame(offsets, ["offset"])
# Run Bing Image Search with the text query
bingSearch = (
BingImageSearch()
.setSubscriptionKey(bing_search_key)
.setOffsetCol("offset")
.setQuery("Martin Luther King Jr. quotes")
.setCount(imgsPerBatch)
.setOutputCol("images")
)
# Create a transformer that extracts and flattens the Bing Image Search output into a single URL column
getUrls = BingImageSearch.getUrlTransformer("images", "url")
# Display the full results. Uncomment to use
# display(bingSearch.transform(bingParameters))
# Put both services into a pipeline
pipeline = PipelineModel(stages=[bingSearch, getUrls])
# Show the image URLs returned by the search
display(pipeline.transform(bingParameters))
Konvertera tal till text
Azure AI Speech-tjänsten konverterar talade ljudströmmar eller filer till text. Följande kodexempel transkriberar en ljudfil.
# Create a DataFrame with the audio URL in the 'url' column
df = spark.createDataFrame(
[("https://mmlspark.blob.core.windows.net/datasets/Speech/audio2.wav",)], ["url"]
)
# Run Azure AI Speech to transcribe the audio
speech_to_text = (
SpeechToTextSDK()
.setSubscriptionKey(service_key)
.setLocation(service_loc)
.setOutputCol("text")
.setAudioDataCol("url")
.setLanguage("en-US")
.setProfanity("Masked")
)
# Show the transcription results
display(speech_to_text.transform(df).select("url", "text.DisplayText"))
Transformera text till tal
Text till tal är en tjänst där du kan skapa appar och tjänster som talar naturligt. Välj mellan fler än 270 neurala röster på 119 språk och varianter.
Följande kodexempel konverterar text till en ljudfil.
from synapse.ml.cognitive import TextToSpeech
fs = ""
if running_on_databricks():
fs = "dbfs:"
elif running_on_synapse_internal():
fs = "Files"
# Create a dataframe with text and an output file location
df = spark.createDataFrame(
[
(
"Reading out loud is fun! Check out aka.ms/spark for more information",
fs + "/output.mp3",
)
],
["text", "output_file"],
)
tts = (
TextToSpeech()
.setSubscriptionKey(service_key)
.setTextCol("text")
.setLocation(service_loc)
.setVoiceName("en-US-JennyNeural")
.setOutputFileCol("output_file")
)
# Check that there are no errors during audio creation
display(tts.transform(df))
Identifiera avvikelser i tidsseriedata
Avvikelseidentifiering identifierar oegentligheter i tidsseriedata. I det här exemplet används tjänsten Avvikelseidentifiering för att hitta avvikelser i en hel tidsserie.
# Create a DataFrame with the point data that Anomaly Detector requires
df = spark.createDataFrame(
[
("1972-01-01T00:00:00Z", 826.0),
("1972-02-01T00:00:00Z", 799.0),
("1972-03-01T00:00:00Z", 890.0),
("1972-04-01T00:00:00Z", 900.0),
("1972-05-01T00:00:00Z", 766.0),
("1972-06-01T00:00:00Z", 805.0),
("1972-07-01T00:00:00Z", 821.0),
("1972-08-01T00:00:00Z", 20000.0),
("1972-09-01T00:00:00Z", 883.0),
("1972-10-01T00:00:00Z", 898.0),
("1972-11-01T00:00:00Z", 957.0),
("1972-12-01T00:00:00Z", 924.0),
("1973-01-01T00:00:00Z", 881.0),
("1973-02-01T00:00:00Z", 837.0),
("1973-03-01T00:00:00Z", 9000.0),
],
["timestamp", "value"],
).withColumn("group", lit("series1"))
# Run Anomaly Detector to detect anomalies
anomaly_detector = (
SimpleDetectAnomalies()
.setSubscriptionKey(anomaly_key)
.setLocation(anomaly_loc)
.setTimestampCol("timestamp")
.setValueCol("value")
.setOutputCol("anomalies")
.setGroupbyCol("group")
.setGranularity("monthly")
)
# Show results with anomalies marked as True
display(
anomaly_detector.transform(df).select("timestamp", "value", "anomalies.isAnomaly")
)
Hämta information från godtyckliga webb-API:er
Använd valfri webbtjänst i din stora pipeline med HTTP på Spark. Följande kodexempel använder Världsbankens API för att hämta information om olika länder och regioner runt om i världen.
# Use any request from the Python requests library.
def world_bank_request(country):
return Request(
"GET", "http://api.worldbank.org/v2/country/{}?format=json".format(country)
)
# Create a DataFrame that specifies the countries to get data for.
df = spark.createDataFrame([("br",), ("usa",)], ["country"]).withColumn(
"request", http_udf(world_bank_request)(col("country"))
)
# Improve big data performance by using concurrency.
client = (
HTTPTransformer().setConcurrency(3).setInputCol("request").setOutputCol("response")
)
# Get the body of the response.
def get_response_body(resp):
return resp.entity.content.decode()
# Show country details from the response.
display(
client.transform(df).select(
"country", udf(get_response_body)(col("response")).alias("response")
)
)