Döküm Araçları

Döküm Araçları, geliştiricilerin ve kuruluşların kullanıma hazır, önceden oluşturulmuş ve özelleştirilebilir API'ler ve modeller ile hızlı bir şekilde akıllı, son teknoloji, pazara hazır ve sorumlu uygulamalar oluşturmalarına yardımcı olur.

SynapseML, çeşitli Spark veri kaynaklarından güçlü ve yüksek oranda ölçeklenebilir tahmine dayalı ve analitik modeller oluşturmanıza olanak tanır. Synapse Spark, synapse.ml.services gibi yerleşik SynapseML kitaplıkları sağlar.

Önemli

20 Eylül 2023'te yeni Anomali Algılayıcısı kaynakları oluşturamayacaksınız. Anomali Algılayıcısı hizmeti 1 Ekim 2026'da kullanımdan kaldırılıyor.

Azure Synapse Analytics önkoşulları

Azure Synapse'te Döküm Araçları'nı kullanma önkoşulları adlı öğretici, Synapse Analytics'te Döküm Araçları'nı kullanmadan önce gerçekleştirmeniz gereken birkaç adımda size yol gösterir.

Foundry Tools , geliştiricilerin uygulamalarına akıllı özellikler eklemek için kullanabileceği api'ler, SDK'lar ve hizmetlerden oluşan bir pakettir. Döküm Araçları, doğrudan yapay zekaya veya veri bilimi becerilerine veya bilgilerine sahip olmasalar bile geliştiricileri güçlendirmektedir. Döküm Araçları geliştiricilerin görebilen, duyabilen, konuşabilen, anlayan ve hatta mantık yürütmeye başlayan uygulamalar oluşturmasına yardımcı olur. Döküm Araçları'nın içindeki hizmet kataloğu beş ana yapıya ayırılabilir: Görüntü İşleme, Konuşma, Dil, Web araması ve Karar.

Kullanım

Vizyon

Görüntü İşleme

  • Açıklama: bir görüntünün okunabilir dilde açıklamasını sağlar (Scala, Python)
  • Analiz etme (renk, görüntü türü, yüz, yetişkinlere yönelik/müstehcen içerik): Görüntünün görsel özelliklerini analiz eder (Scala, Python)
  • OCR: Görüntüden metin okur (Scala, Python)
  • Metni Tanıma: Görüntüden metin okur (Scala, Python)
  • Küçük resim: Görüntüden kullanıcı tarafından belirtilen boyutun küçük resmini oluşturur (Scala, Python)
  • Etki alanına özgü içeriği tanıma: Etki alanına özgü içeriği (ünlü, yer işareti) tanır (Scala, Python)
  • Etiket: Giriş görüntüsüyle ilgili sözcüklerin listesini tanımlar (Scala, Python)

Yüz Tanıma

  • Algılama: Bir görüntüdeki insan yüzlerini algılar (Scala, Python)
  • Doğrulama: İki yüzün aynı kişiye mi yoksa bir yüze mi ait olduğunu doğrular (Scala, Python)
  • Tanımla: Bir kişi grubundan belirli bir sorgu kişisinin en yakın eşleşmelerini bulur (Scala, Python)
  • Benzerini bul: Yüz listesindeki sorgu yüzüyle benzer yüzleri bulur (Scala, Python)
  • Grup: Bir yüz grubunu benzerlik temelinde kopuk gruplara böler (Scala, Python)

Konuşma

Konuşma Hizmetleri

  • Konuşmayı metne dönüştürme: Ses akışlarının dökümünü alır (Scala, Python)
  • Konuşma Transkripsiyonu: Ses akışlarını, konuşmacıları tanımlayarak canlı transkriptlere dönüştürür. (Scala, Python)
  • Metinden Konuşmaya: Metni gerçekçi sese dönüştürür (Scala, Python)

Dil

Yapay Zeka Dili

  • Dil algılama: Giriş metninin dilini algılar (Scala, Python)
  • Anahtar ifade ayıklama: Giriş metnindeki önemli konuşma noktalarını tanımlar (Scala, Python)
  • Adlandırılmış varlık tanıma: Giriş metnindeki bilinen varlıkları ve genel adlandırılmış varlıkları tanımlar (Scala, Python)
  • Yaklaşım analizi: Giriş metnindeki yaklaşımı belirten 0 ile 1 arasında bir puan döndürür (Scala, Python)
  • Sağlık Varlık Ayıklama: Metinden tıbbi varlıkları ve ilişkileri ayıklar. (Scala, Python)

Çeviri

Translator

  • Çevir: Metni çevirir. (Scala, Python)
  • Transliterate: Bir dildeki metni bir betikten başka bir betike dönüştürür. (Scala, Python)
  • Algıla: Bir metin parçasının dilini tanımlar. (Scala, Python)
  • BreakSentence: Bir metin parçasındaki cümle sınırlarının konumlandırılmasını tanımlar. (Scala, Python)
  • Sözlük Arama: Bir sözcük ve az sayıda deyimsel ifade için alternatif çeviriler sağlar. (Scala, Python)
  • Sözlük Örnekleri: Sözlükteki terimlerin bağlamda nasıl kullanıldığını gösteren örnekler sağlar. (Scala, Python)
  • Belge Çevirisi: Belge yapısını ve veri biçimini korurken belgeleri desteklenen tüm diller ve diyalektler arasında çevirir. (Scala, Python)

Belge Analitiği

Belge Yönetim Bilgileri

  • Düzeni Analiz Etme: Belirli bir belgeden metin ve düzen bilgilerini ayıklayın. (Scala, Python)
  • Makbuzları Analiz Etme: Optik karakter tanıma (OCR) ve makbuz modelimizi kullanarak makbuzlardan verileri algılar ve ayıklar, böylece satıcı adı, satıcı telefon numarası, işlem tarihi, işlem toplamı ve daha fazlası gibi makbuzlardan yapılandırılmış verileri kolayca ayıklayabilirsiniz. (Scala, Python)
  • Kartvizitleri Analiz Etme: Optik karakter tanıma (OCR) ve kartvizit modelimizi kullanarak kartvizitlerdeki verileri algılar ve ayıklar, böylece kartvizitlerden kişi adları, şirket adları, telefon numaraları, e-postalar ve daha fazlası gibi yapılandırılmış verileri kolayca ayıklayabilirsiniz. (Scala, Python)
  • Faturaları Analiz Etme: Optik karakter tanıma (OCR) ve fatura anlama derin öğrenme modellerimizi kullanarak faturalardan verileri algılar ve ayıklar; böylece müşteri, satıcı, fatura kimliği, fatura son tarihi, toplam, fatura tutarı, vergi tutarı, sevkiyat yeri, fatura adresi, satır öğeleri ve daha fazlası gibi faturalardan yapılandırılmış verileri kolayca ayıklayabilirsiniz. (Scala, Python)
  • Kimlik Belgelerini Analiz Etme: Optik karakter tanıma (OCR) ve kimlik belge modelimizi kullanarak tanımlama belgelerindeki verileri algılar ve ayıklar, böylece ad, soyadı, doğum tarihi, belge numarası ve daha fazlası gibi kimlik belgelerinden yapılandırılmış verileri kolayca ayıklayabilirsiniz. (Scala, Python)
  • Özel Formu Analiz Etme: Bir dizi temsili eğitim formundan oluşturulan bir modeli temel alarak formlardan (PDF'ler ve görüntüler) bilgileri yapılandırılmış verilere ayıklar. (Scala, Python)
  • Özel Model Alma: Özel model hakkında ayrıntılı bilgi edinin. (Scala, Python)
  • Özel Modelleri Listeleme: Tüm özel modeller hakkında bilgi edinin. (Scala, Python)

Karar

Anomali Algılayıcısı

  • En son noktanın anomali durumu: Önceki noktaları kullanarak bir model oluşturur ve en son noktanın anormal olup olmadığını belirler (Scala, Python)
  • Anomalileri bulma: Serinin tamamını kullanarak bir model oluşturur ve serideki anomalileri bulur (Scala, Python)

Sisteminizi hazırlama

Başlamak için gerekli kitaplıkları içeri aktarıp Spark oturumunuzu başlatın.

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

Döküm Araçları kitaplıklarını içeri aktarın ve aşağıdaki kod parçacığındaki anahtarları ve konumları Döküm Araçları anahtarınız ve konumunuzla değiştirin.

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

# A general Foundry Tools key for Azure Language in Foundry Tools, Computer Vision and Azure Document Intelligence in Foundry Tools (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.

Metin üzerinde yaklaşım analizi gerçekleştirme

Yapay Zeka Dili hizmeti, metinden akıllı içgörüler ayıklamak için çeşitli algoritmalar sağlar. Örneğin, verilen metnin duygusunu bulabiliriz. Hizmet 0,0 ile 1,0 arasında bir puan döndürür; burada düşük puanlar negatif yaklaşımı, yüksek puan ise pozitif yaklaşımı gösterir. Bu örnek üç basit cümle kullanır ve her biri için duyguyu verir.

# 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 Foundry Tools 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")
    )
)

Sağlık verileri için metin analizi yapın

Sistem Sağlığı Hizmeti için Metin Analizi, doktor notları, taburcu özetleri, klinik belgeler ve elektronik sağlık kayıtları gibi yapılandırılmamış metinlerden ilgili tıbbi bilgileri ayıklar ve etiketler.

Aşağıdaki kod örneği, doktorların notlarından alınan metinleri analiz eder ve yapılandırılmış verilere dönüştürür.

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

Metni farklı bir dile çevirme

Foundry Tools'ta Azure Translator , bulut tabanlı bir makine çevirisi hizmetidir ve akıllı uygulamalar oluşturmak için kullanılan Foundry Tools yapay zeka API'leri ailesinin bir parçasıdır. Translator uygulamalarınızla, web sitelerinizle, araçlarınızla ve çözümlerinizle kolayca tümleştirilebilir. 90 dilde ve diyalektte çok dilli kullanıcı deneyimleri eklemenize olanak tanır ve kendi algoritmanızı barındırmadan metin çevirmek için kullanılabilir.

Aşağıdaki kod örneği, çevirmek istediğiniz tümceleri sağlayarak ve bunları çevirmek istediğiniz dilleri hedefleyerek basit bir metin çevirisi yapar.

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

Bir belgeden bilgi çıkartarak yapılandırılmış veri oluşturma

Belge Zekası , makine öğrenmesi teknolojisini kullanarak otomatik veri işleme yazılımı oluşturmanıza olanak tanıyan Azure Uygulamalı Yapay Zeka Hizmetleri'nin bir parçasıdır. Belge Yönetim Bilgileri ile belgelerinizdeki metinleri, anahtar/değer çiftlerini, seçim işaretlerini, tabloları ve yapıyı tanımlayıp ayıklayabilirsiniz. Hizmet, özgün dosyadaki ilişkileri, sınırlayıcı kutuları, güveni ve daha fazlasını içeren yapılandırılmış veriler oluşturur.

Aşağıdaki kod örneği kartvizit görüntüsünü analiz eder ve bilgilerini yapılandırılmış verilere ayıklar.

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

Görüntü İşleme örneği

Foundry Araçları'nda Azure Vision , yüzler, nesneler ve doğal dil açıklamaları gibi yapıları tanımlamak için görüntüleri analiz eder.

Aşağıdaki kod örneği, görüntüleri analiz eder ve etiketler ile tanımlar. Etiketler, görüntüdeki nesnelerin tanınabilir nesneler, kişiler, manzara ve eylemler gibi tek sözcüklü açıklamalarıdır.

# 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 Resim Arama , kullanıcının doğal dil sorgusuyla ilgili görüntüleri almak için web'de aramalar.

Aşağıdaki kod örneği, tırnak işaretleri içeren görüntülerin arandığı bir metin sorgusu kullanır. Kodun çıktısı, sorguyla ilgili fotoğrafları içeren görüntü URL'lerinin listesidir.

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

Konuşmayı metne dönüştürme

Konuşmayı metne dönüştürme hizmeti, konuşulan ses akışlarını veya dosyalarını metne dönüştürür. Aşağıdaki kod örneği, bir ses dosyasını metne yazar.

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

Metni konuşmaya dönüştürme

Metin okuma , 119 dilde ve değişkende 270'ten fazla nöral ses arasından seçim yaparak doğal olarak konuşan uygulamalar ve hizmetler oluşturmanıza olanak tanıyan bir hizmettir.

Aşağıdaki kod örneği, metni içeriğini içeren bir ses dosyasına dönüştürür.

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

Zaman serisi verilerindeki anomalileri algılama

20 Eylül 2023'e kadar oluşturulmuş bir anomali algılama kaynağınız yoksa bir tane oluşturamazsınız. Bu bölümü atlamak isteyebilirsiniz.

Anomali Algılayıcısı, zaman serisi verilerinizdeki düzensizlikleri algılamak için mükemmeldir. Aşağıdaki kod örneği, bir zaman serisindeki anomalileri bulmak için Anomali Algılayıcısı hizmetini kullanır.

# 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
anomaly_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(
    anomaly_detector.transform(df).select("timestamp", "value", "anomalies.isAnomaly")
)

Rastgele web API'lerinden bilgi alma

Spark üzerinde HTTP ile tüm web hizmetleri büyük veri işlem hattınızda kullanılabilir. Bu örnekte, dünya çapındaki çeşitli ülkeler/bölgeler hakkında bilgi almak için Dünya Bankası API'sini kullanıyoruz.

# 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/regions 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/region data returned
display(
    client.transform(df).select(
        "country", udf(get_response_body)(col("response")).alias("response")
    )
)

Azure AI arama örneği

Bu örnekte, Bilişsel Beceriler'i kullanarak verileri nasıl zenginleştirebileceğinizi ve SynapseML kullanarak Azure Search Dizinine nasıl yazabileceğinizi göstereceğiz.

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