Bagikan melalui


Layanan Azure AI

Layanan Azure AI membantu pengembang dan organisasi dengan cepat membuat aplikasi cerdas, mutakhir, siap pasar, dan bertanggung jawab dengan API dan model yang siap pakai dan dapat disesuaikan sebelumnya.

SynapseML memungkinkan Anda membangun model prediktif dan analitis yang kuat dan dapat diskalakan dengan sangat baik dari berbagai sumber data Spark. Synapse Spark menyediakan pustaka SynapseML bawaan termasuk synapse.ml.services.

Penting

Mulai tanggal 20 September 2023 Anda tidak akan dapat membuat sumber daya Detektor Anomali baru. Layanan Detektor Anomali dihentikan pada 1 Oktober 2026.

Prasyarat di Azure Synapse Analytics

Tutorial ini, Prasyarat untuk menggunakan layanan Azure AI di Azure Synapse, memandu Anda melalui beberapa langkah yang perlu Anda lakukan sebelum menggunakan layanan Azure AI di Synapse Analytics.

Layanan Azure AI adalah rangkaian API, SDK, dan layanan yang dapat digunakan pengembang untuk menambahkan fitur cerdas ke aplikasi mereka. Layanan AI memberdayakan pengembang bahkan ketika mereka tidak memiliki AI langsung atau keterampilan atau pengetahuan ilmu data. Layanan Azure AI membantu pengembang membuat aplikasi yang dapat melihat, mendengar, berbicara, memahami, dan bahkan mulai beralasan. Katalog layanan dalam layanan Azure AI dapat dikategorikan ke dalam lima pilar utama: Visi, Ucapan, Bahasa, Pencarian web, dan Keputusan.

Penggunaan

Vision

Visi Komputer

  • Jelaskan: memberikan deskripsi gambar dalam bahasa yang dapat dibaca manusia (Scala, Python)
  • Analisis (warna, jenis gambar, wajah, konten dewasa/cair): menganalisis fitur visual gambar (Scala, Python)
  • OCR: membaca teks dari gambar (Scala, Python)
  • Kenali Teks: membaca teks dari gambar (Scala, Python)
  • Gambar mini: menghasilkan gambar mini ukuran yang ditentukan pengguna dari gambar (Scala, Python)
  • Mengenali konten khusus domain: mengenali konten khusus domain (selebriti, tengara) (Scala, Python)
  • Tag: mengidentifikasi daftar kata yang relevan dengan gambar input (Scala, Python)

Wajah

  • Deteksi: mendeteksi wajah manusia dalam gambar (Scala, Python)
  • Verifikasi: memverifikasi apakah dua wajah milik orang yang sama, atau wajah milik seseorang (Scala, Python)
  • Identifikasi: menemukan kecocokan terdekat dari wajah orang kueri tertentu dari grup orang (Scala, Python)
  • Temukan yang serupa: menemukan wajah serupa dengan wajah kueri dalam daftar wajah (Scala, Python)
  • Grup: membagi sekelompok wajah menjadi kelompok terpisah berdasarkan kesamaan (Scala, Python)

Ucapan

Layanan Ucapan

  • Ucapan ke teks: mentranskripsikan aliran audio (Scala, Python)
  • Transkripsi Percakapan: mentranskripsikan aliran audio ke dalam transkrip langsung dengan pembicara yang diidentifikasi. (Scala, Python)
  • Teks ke Ucapan: Mengonversi teks menjadi audio realistis (Scala, Python)

Bahasa

Bahasa AI

  • Deteksi bahasa: mendeteksi bahasa teks input (Scala, Python)
  • Ekstraksi frasa kunci: mengidentifikasi poin pembicaraan utama dalam teks input (Scala, Python)
  • Pengenalan entitas bernama: mengidentifikasi entitas yang diketahui dan entitas bernama umum dalam teks input (Scala, Python)
  • Analisis sentimen: mengembalikan skor antara 0 dan 1 yang menunjukkan sentimen dalam teks input (Scala, Python)
  • Ekstraksi Entitas Layanan Kesehatan: Mengekstrak entitas medis dan hubungan dari teks. (Scala, Python)

Terjemahan

Penerjemah

  • Terjemahkan: Menerjemahkan teks. (Scala, Python)
  • Transliterasi: Mengonversi teks dalam satu bahasa dari satu skrip ke skrip lain. (Scala, Python)
  • Deteksi: Mengidentifikasi bahasa teks. (Scala, Python)
  • BreakSentence: Mengidentifikasi penempatan batas kalimat dalam sepotong teks. (Scala, Python)
  • Pencarian Kamus: Menyediakan terjemahan alternatif untuk kata dan sejumlah kecil frasa idiomatik. (Scala, Python)
  • Contoh Kamus: Menyediakan contoh yang menunjukkan bagaimana istilah dalam kamus digunakan dalam konteks. (Scala, Python)
  • Terjemahan Dokumen: Menerjemahkan dokumen di semua bahasa dan dialek yang didukung sambil mempertahankan struktur dokumen dan format data. (Scala, Python)

Kecerdasan Dokumen

Kecerdasan Dokumen

  • Analisis Tata Letak: Mengekstrak informasi teks dan tata letak dari dokumen tertentu. (Scala, Python)
  • Analisis Tanda Terima: Mendeteksi dan mengekstrak data dari tanda terima menggunakan pengenalan karakter optik (OCR) dan model tanda terima kami, memungkinkan Anda untuk dengan mudah mengekstrak data terstruktur dari tanda terima seperti nama pedagang, nomor telepon pedagang, tanggal transaksi, total transaksi, dan banyak lagi. (Scala, Python)
  • Analisis Kartu Nama: Mendeteksi dan mengekstrak data dari kartu nama menggunakan pengenalan karakter optik (OCR) dan model kartu nama kami, memungkinkan Anda untuk dengan mudah mengekstrak data terstruktur dari kartu nama seperti nama kontak, nama perusahaan, nomor telepon, email, dan banyak lagi. (Scala, Python)
  • Analisis Faktur: Mendeteksi dan mengekstrak data dari faktur menggunakan pengenalan karakter optik (OCR) dan faktur kami memahami model pembelajaran mendalam, memungkinkan Anda untuk dengan mudah mengekstrak data terstruktur dari faktur seperti pelanggan, vendor, ID faktur, tanggal jatuh tempo faktur, total, jumlah faktur jatuh tempo, jumlah pajak, pengiriman ke, tagihan ke, item baris, dan banyak lagi. (Scala, Python)
  • Menganalisis Dokumen ID: Mendeteksi dan mengekstrak data dari dokumen identifikasi menggunakan pengenalan karakter optik (OCR) dan model dokumen ID kami, memungkinkan Anda untuk dengan mudah mengekstrak data terstruktur dari dokumen ID seperti nama depan, nama belakang, tanggal lahir, nomor dokumen, dan banyak lagi. (Scala, Python)
  • Analisis Formulir Kustom: Mengekstrak informasi dari formulir (PDF dan gambar) ke dalam data terstruktur berdasarkan model yang dibuat dari serangkaian formulir pelatihan perwakilan. (Scala, Python)
  • Dapatkan Model Kustom: Dapatkan informasi terperinci tentang model kustom. (Scala, Python)
  • Mencantumkan Model Kustom: Dapatkan informasi tentang semua model kustom. (Scala, Python)

Keputusan

Detektor Anomali

  • Status anomali titik terbaru: menghasilkan model menggunakan titik sebelumnya dan menentukan apakah titik terbaru anomali (Scala, Python)
  • Menemukan anomali: menghasilkan model menggunakan seluruh seri dan menemukan anomali dalam seri (Scala, Python)

Siapkan sistem Anda

Untuk memulai, impor pustaka yang diperlukan dan inisialisasi sesi Spark Anda.

from pyspark.sql.functions import udf, col
from synapse.ml.io.http import HTTPTransformer, http_udf
from requests import Request
from pyspark.sql.functions import lit
from pyspark.ml import PipelineModel
from pyspark.sql.functions import col

Impor pustaka layanan Azure AI dan ganti kunci dan lokasi dalam cuplikan kode berikut dengan kunci dan lokasi layanan Azure AI Anda.

from synapse.ml.services import *
from synapse.ml.core.platform import *

# A general AI services key for AI Language, Computer Vision and Document Intelligence (or use separate keys that belong to each service)
service_key = find_secret(
    secret_name="ai-services-api-key", keyvault="mmlspark-build-keys"
)  # Replace the call to find_secret with your key as a python string. e.g. service_key="27snaiw..."
service_loc = "eastus"

# A Bing Search v7 subscription key
bing_search_key = find_secret(
    secret_name="bing-search-key", keyvault="mmlspark-build-keys"
)  # Replace the call to find_secret with your key as a python string.

# An Anomaly Detector subscription key
anomaly_key = find_secret(
    secret_name="anomaly-api-key", keyvault="mmlspark-build-keys"
)  # Replace the call to find_secret with your key as a python string. If you don't have an anomaly detection resource created before Sep 20th 2023, you won't be able to create one.
anomaly_loc = "westus2"

# A Translator subscription key
translator_key = find_secret(
    secret_name="translator-key", keyvault="mmlspark-build-keys"
)  # Replace the call to find_secret with your key as a python string.
translator_loc = "eastus"

# An Azure search key
search_key = find_secret(
    secret_name="azure-search-key", keyvault="mmlspark-build-keys"
)  # Replace the call to find_secret with your key as a python string.

Melakukan analisis sentimen pada teks

Layanan Bahasa AI menyediakan beberapa algoritma untuk mengekstrak wawasan cerdas dari teks. Misalnya, kita dapat menemukan sentimen teks input tertentu. Layanan ini akan menampilkan skor antara 0,0 dan 1,0. Dalam hal ini skor rendah menunjukkan sentimen negatif dan skor tinggi menunjukkan sentimen positif. Sampel ini menggunakan tiga kalimat sederhana dan menampilkan sentimen untuk masing-masing kalimat.

# Create a dataframe that's tied to it's column names
df = spark.createDataFrame(
    [
        ("I am so happy today, its sunny!", "en-US"),
        ("I am frustrated by this rush hour traffic", "en-US"),
        ("The AI services on spark aint bad", "en-US"),
    ],
    ["text", "language"],
)

# Run the Text Analytics service with options
sentiment = (
    AnalyzeText()
    .setKind("SentimentAnalysis")
    .setTextCol("text")
    .setLocation(service_loc)
    .setSubscriptionKey(service_key)
    .setOutputCol("sentiment")
    .setErrorCol("error")
    .setLanguageCol("language")
)

# Show the results of your text query in a table format
display(
    sentiment.transform(df).select(
        "text", col("sentiment.documents.sentiment").alias("sentiment")
    )
)

Melakukan analitik teks untuk data kesehatan

Text Analytics untuk Layanan Kesehatan mengekstrak dan melabeli informasi medis yang relevan dari teks yang tidak terstruktur seperti catatan dokter, ringkasan pelepasan, dokumen klinis, dan catatan kesehatan elektronik.

Sampel kode berikut menganalisis dan mengubah teks dari catatan dokter menjadi data terstruktur.

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))

Menerjemahkan teks ke bahasa lain

Penerjemah adalah layanan terjemahan mesin berbasis cloud dan merupakan bagian dari rangkaian layanan Azure AI API AI yang digunakan untuk membangun aplikasi cerdas. Penerjemah ini mudah diintegrasikan di aplikasi, situs web, alat, dan solusi Anda. Ini memungkinkan Anda untuk menambahkan pengalaman pengguna multi-bahasa dalam bahasa dan dialek 90 dan dapat digunakan untuk menerjemahkan teks tanpa menghosting algoritma Anda sendiri.

Sampel kode berikut melakukan terjemahan teks sederhana dengan memberikan kalimat yang ingin Anda terjemahkan dan bahasa target yang ingin Anda terjemahkan.

from pyspark.sql.functions import col, flatten

# Create a dataframe including sentences you want to translate
df = spark.createDataFrame(
    [(["Hello, what is your name?", "Bye"],)],
    [
        "text",
    ],
)

# Run the Translator service with options
translate = (
    Translate()
    .setSubscriptionKey(translator_key)
    .setLocation(translator_loc)
    .setTextCol("text")
    .setToLanguage(["zh-Hans"])
    .setOutputCol("translation")
)

# Show the results of the translation.
display(
    translate.transform(df)
    .withColumn("translation", flatten(col("translation.translations")))
    .withColumn("translation", col("translation.text"))
    .select("translation")
)

Mengekstrak informasi dari dokumen ke dalam data terstruktur

Azure AI Document Intelligence adalah bagian dari Azure Applied AI Services yang memungkinkan Anda membangun perangkat lunak pemrosesan data otomatis menggunakan teknologi pembelajaran mesin. Dengan Kecerdasan Dokumen Azure AI, Anda dapat mengidentifikasi dan mengekstrak teks, pasangan kunci/nilai, tanda pilihan, tabel, dan struktur dari dokumen Anda. Layanan menghasilkan data terstruktur yang mencakup hubungan dalam file asli, kotak batas, keyakinan, dan banyak lagi.

Sampel kode berikut menganalisis gambar kartu nama dan mengekstrak informasinya ke dalam data terstruktur.

from pyspark.sql.functions import col, explode

# Create a dataframe containing the source files
imageDf = spark.createDataFrame(
    [
        (
            "https://mmlspark.blob.core.windows.net/datasets/FormRecognizer/business_card.jpg",
        )
    ],
    [
        "source",
    ],
)

# Run the Form Recognizer service
analyzeBusinessCards = (
    AnalyzeBusinessCards()
    .setSubscriptionKey(service_key)
    .setLocation(service_loc)
    .setImageUrlCol("source")
    .setOutputCol("businessCards")
)

# Show the results of recognition.
display(
    analyzeBusinessCards.transform(imageDf)
    .withColumn(
        "documents", explode(col("businessCards.analyzeResult.documentResults.fields"))
    )
    .select("source", "documents")
)

Sampel Visi Komputer

Azure AI Vision menganalisis gambar untuk mengidentifikasi struktur seperti wajah, objek, dan deskripsi bahasa alami.

Sampel kode berikut menganalisis gambar dan melabelinya dengan tag. Tag adalah deskripsi satu kata tentang hal-hal dalam gambar, seperti objek, orang, pemandangan, dan tindakan yang dapat dikenali.

# Create a dataframe with the 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 the Computer Vision service. Analyze Image extracts information from/about the images.
analysis = (
    AnalyzeImage()
    .setLocation(service_loc)
    .setSubscriptionKey(service_key)
    .setVisualFeatures(
        ["Categories", "Color", "Description", "Faces", "Objects", "Tags"]
    )
    .setOutputCol("analysis_results")
    .setImageUrlCol("image")
    .setErrorCol("error")
)

# Show the results of what you wanted to pull out of the images.
display(analysis.transform(df).select("image", "analysis_results.description.tags"))

Bing Image Search menelusuri web untuk mengambil gambar yang terkait dengan kueri bahasa alami pengguna.

Sampel kode berikut menggunakan kueri teks yang mencari gambar dengan tanda kutip. Output kode adalah daftar URL gambar yang berisi foto yang terkait dengan kueri.

# Number of images Bing will return per query
imgsPerBatch = 10
# A list of offsets, used to page into the search results
offsets = [(i * imgsPerBatch,) for i in range(100)]
# Since web content is our data, we create a dataframe with options on that data: offsets
bingParameters = spark.createDataFrame(offsets, ["offset"])

# Run the Bing Image Search service with our text query
bingSearch = (
    BingImageSearch()
    .setSubscriptionKey(bing_search_key)
    .setOffsetCol("offset")
    .setQuery("Martin Luther King Jr. quotes")
    .setCount(imgsPerBatch)
    .setOutputCol("images")
)

# Transformer that extracts and flattens the richly structured output of Bing Image Search into a simple URL column
getUrls = BingImageSearch.getUrlTransformer("images", "url")

# This displays the full results returned, uncomment to use
# display(bingSearch.transform(bingParameters))

# Since we have two services, they are put into a pipeline
pipeline = PipelineModel(stages=[bingSearch, getUrls])

# Show the results of your search: image URLs
display(pipeline.transform(bingParameters))

Mengubah ucapan menjadi teks

Layanan Ucapan ke teks mengonversi stream atau file audio lisan menjadi teks. Sampel kode berikut mentranskripsikan satu file audio ke teks.

# Create a dataframe with our audio URLs, tied to the column called "url"
df = spark.createDataFrame(
    [("https://mmlspark.blob.core.windows.net/datasets/Speech/audio2.wav",)], ["url"]
)

# Run the Speech-to-text service to translate the audio into text
speech_to_text = (
    SpeechToTextSDK()
    .setSubscriptionKey(service_key)
    .setLocation(service_loc)
    .setOutputCol("text")
    .setAudioDataCol("url")
    .setLanguage("en-US")
    .setProfanity("Masked")
)

# Show the results of the translation
display(speech_to_text.transform(df).select("url", "text.DisplayText"))

Mengubah teks menjadi ucapan

Teks ke ucapan adalah layanan yang memungkinkan Anda membangun aplikasi dan layanan yang berbicara secara alami, memilih dari lebih dari 270 suara saraf di 119 bahasa dan varian.

Sampel kode berikut mengubah teks menjadi file audio yang berisi konten teks.

from synapse.ml.services.speech 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 to make sure there were no errors during audio creation
display(tts.transform(df))

Mendeteksi anomali dalam data rangkaian waktu

Jika Anda tidak memiliki sumber daya deteksi anomali yang dibuat sebelum 20 Sep 2023, Anda tidak akan dapat membuatnya. Anda mungkin ingin melewati bagian ini.

Pendeteksi Anomali merupakan cara ampuh untuk mendeteksi penyimpangan dalam data rangkaian waktu Anda. Sampel kode berikut menggunakan layanan Detektor Anomali untuk menemukan anomali dalam rangkaian waktu.

# 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 the Anomaly Detector service to look for irregular data
anamoly_detector = (
    SimpleDetectAnomalies()
    .setSubscriptionKey(anomaly_key)
    .setLocation(anomaly_loc)
    .setTimestampCol("timestamp")
    .setValueCol("value")
    .setOutputCol("anomalies")
    .setGroupbyCol("group")
    .setGranularity("monthly")
)

# Show the full results of the analysis with the anomalies marked as "True"
display(
    anamoly_detector.transform(df).select("timestamp", "value", "anomalies.isAnomaly")
)

Mendapatkan informasi dari API web arbitrer

Dengan HTTP di Spark, layanan web apa pun dapat digunakan dalam alur big data Anda. Dalam contoh ini, kami menggunakan API Bank Dunia untuk mendapatkan informasi tentang berbagai negara di seluruh dunia.

# Use any requests 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 with specifies which countries we want data on
df = spark.createDataFrame([("br",), ("usa",)], ["country"]).withColumn(
    "request", http_udf(world_bank_request)(col("country"))
)

# Much faster for big data because of the 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 the details of the country data returned
display(
    client.transform(df).select(
        "country", udf(get_response_body)(col("response")).alias("response")
    )
)

Sampel pencarian Azure AI

Dalam contoh ini, kami menunjukkan bagaimana Anda dapat memperkaya data menggunakan Cognitive Skills dan menulis ke Indeks Pencarian Azure menggunakan SynapseML.

search_service = "mmlspark-azure-search"
search_index = "test-33467690"

df = spark.createDataFrame(
    [
        (
            "upload",
            "0",
            "https://mmlspark.blob.core.windows.net/datasets/DSIR/test1.jpg",
        ),
        (
            "upload",
            "1",
            "https://mmlspark.blob.core.windows.net/datasets/DSIR/test2.jpg",
        ),
    ],
    ["searchAction", "id", "url"],
)

tdf = (
    AnalyzeImage()
    .setSubscriptionKey(service_key)
    .setLocation(service_loc)
    .setImageUrlCol("url")
    .setOutputCol("analyzed")
    .setErrorCol("errors")
    .setVisualFeatures(
        ["Categories", "Tags", "Description", "Faces", "ImageType", "Color", "Adult"]
    )
    .transform(df)
    .select("*", "analyzed.*")
    .drop("errors", "analyzed")
)

tdf.writeToAzureSearch(
    subscriptionKey=search_key,
    actionCol="searchAction",
    serviceName=search_service,
    indexName=search_index,
    keyCol="id",
)