Büyük Veri için Bilişsel Hizmetler için Python Örnekleri
Aşağıdaki kod parçacıkları çalışmaya hazırdır ve Python ile Spark'ta Bilişsel Hizmetler'i kullanmaya başlamanıza yardımcı olur.
Bu makaledeki örnekler şu Bilişsel Hizmetleri kullanır:
- Dil hizmeti: Bir cümle kümesine yönelik yaklaşım (veya duygudurum) elde.
- Görüntü İşleme - bir görüntü kümesiyle ilişkili etiketleri (tek sözcük açıklamaları) elde edin.
- Bing Resim Arama : Doğal dil sorgusuyla ilgili görüntüleri web'de arama.
- Konuşmayı metne, metin tabanlı transkriptleri ayıklamak için ses dosyalarının dökümlerini alma.
- Anomali Algılayıcısı - zaman serisi verileri içindeki anomalileri algılama.
Önkoşullar
- Azure Databricks ve Bilişsel Hizmetler ortamınızı ayarlamaya başlama'daki adımları izleyin. Bu öğreticide, MMLSpark'ı yükleme ve Databricks'te Spark kümenizi oluşturma ile ilgili bilgiler ve bilgiler yer almaktadır.
- Yeni bir not defteri oluşturduk Azure Databricks aşağıdaki Paylaşılan kodu kopyalayıp not defterinize yeni bir hücreye yapıştırın.
- Aşağıdan bir hizmet örneği seçin ve kopyalayıp not defterinize ikinci bir yeni hücreye yapıştırın.
- Hizmet abonelik anahtarı yer tutucularının herhangi birini kendi anahtarınız ile değiştirin.
- Hücrenin sağ üst köşesindeki Çalıştır düğmesini (üçgen simgesi) ve ardından Hücreyi Çalıştır'ı seçin.
- Sonuçları hücrenin altındaki bir tabloda görüntüleme.
Paylaşılan kod
Çalışmaya başlamamız için bu kodu projeye eklememiz gerekir:
from mmlspark.cognitive import *
# A general Cognitive Services key for the Language service and Computer Vision (or use separate keys that belong to each service)
service_key = "ADD_YOUR_SUBSCRIPION_KEY"
# A Bing Search v7 subscription key
bing_search_key = "ADD_YOUR_SUBSCRIPION_KEY"
# An Anomaly Dectector subscription key
anomaly_key = "ADD_YOUR_SUBSCRIPION_KEY"
# Validate the key
assert service_key != "ADD_YOUR_SUBSCRIPION_KEY"
Dil hizmeti örneği
Dil hizmeti, metinden akıllı içgörüler ayıklamak için çeşitli algoritmalar sağlar. Örneğin, verilen giriş metninin yaklaşımlarını bulabilirsiniz. Hizmet 0,0 ile 1,0 arasında bir puan, düşük puanlar negatif yaklaşıma, yüksek puan ise pozitif yaklaşıma işaret ediyor olabilir. Bu örnek üç basit cümle kullanır ve her biri için yaklaşım döndürür.
from pyspark.sql.functions import col
# 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 cognitive services on spark aint bad", "en-US"),
], ["text", "language"])
# Run the Language service with options
sentiment = (TextSentiment()
.setTextCol("text")
.setLocation("eastus")
.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")[0].getItem("sentiment").alias("sentiment")))
Beklenen sonuç
| metin | Duyguları |
|---|---|
| Bugün çok seviyorum, güneşli! | pozitif |
| Bu yoğun saat trafiği beni hayal kırıklığına uğratıyor | negatif |
| Spark'ta bilişsel hizmetler kötü | pozitif |
Görüntü İşleme örneği
Görüntü İşleme, yüzler, nesneler ve doğal dil açıklamaları gibi yapıyı tanımlamak için görüntüleri analiz eder. Bu örnekte, görüntülerin bir listesini etiketleriz. Etiketler görüntüdeki nesnelerin tanınabilir nesneler, kişiler, sahneler ve eylemler gibi tek sözcük açıklamalarıdır.
# Create a dataframe with the image URLs
df = spark.createDataFrame([
("https://raw.githubusercontent.com/Azure-Samples/cognitive-services-sample-data-files/master/ComputerVision/Images/objects.jpg", ),
("https://raw.githubusercontent.com/Azure-Samples/cognitive-services-sample-data-files/master/ComputerVision/Images/dog.jpg", ),
("https://raw.githubusercontent.com/Azure-Samples/cognitive-services-sample-data-files/master/ComputerVision/Images/house.jpg", )
], ["image", ])
# Run the Computer Vision service. Analyze Image extracts infortmation from/about the images.
analysis = (AnalyzeImage()
.setLocation("eastus")
.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"))
Beklenen sonuç
| image | etiketler |
|---|---|
| https://raw.githubusercontent.com/Azure-Samples/cognitive-services-sample-data-files/master/ComputerVision/Images/objects.jpg | ['person' 'man' 'dış' 'dış' 'spor' 'bisiklet' 'bisiklet panosu' 'genç' 'board' 'shirt' 'air' 'black' 'park' 'boy' 'side' 'jumping' 'trick' 'ramp' 'doing' 'flying'] |
| https://raw.githubusercontent.com/Azure-Samples/cognitive-services-sample-data-files/master/ComputerVision/Images/dog.jpg | ['köpek' 'dış mekan' 'çit' 'deniz' 'küçük' 'kahverengi' 'bina' 'bina' 'ön' 'bench' 'duran' 'tablo' 'üzerinde' 'board' 'white' 'holding' 'bridge' 'track'] |
| https://raw.githubusercontent.com/Azure-Samples/cognitive-services-sample-data-files/master/ComputerVision/Images/house.jpg | ['dış mekan' 'dış mekan' 'ev' 'bina' 'eski' 'ev' 'ön' 'küçük' 'yer' 'büyük' 'yer' 'yer' 'yeşil' 'oturuyor' 'leading' 'yer' 'brick' 'bench' 'street' 'white' 'country' 'clock' 'sign' 'park' 'field' 'standing' 'garden' 'water' 'red' 'horse' 'man' 'tall' 'fire' 'group'] |
Bing Resim Arama örneği
Bing Resim Arama kullanıcının doğal dil sorgusuyla ilgili görüntüleri almak için web'de arama yaptı. Bu örnekte, tırnak içine alınan görüntülerin araması için bir metin sorgusu kullanıyoruz. Sorgumuzla ilgili fotoğrafları içeren görüntü URL'lerinin listesini döndürür.
from pyspark.ml import PipelineModel
# 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))
Beklenen sonuç
Konuşmayı Metne Değiştirme örneği
Konuşmayı metne dönüştürme hizmeti, konuşulan ses akışlarını veya dosyalarını metne dönüştürür. Bu örnekte iki ses dosyası yer alır. İlk dosyayı anlamak kolaydır, ikinci dosyası ise daha zordur.
# 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",),
("https://mmlspark.blob.core.windows.net/datasets/Speech/audio3.mp3",)
], ["url"])
# Run the Speech-to-text service to translate the audio into text
speech_to_text = (SpeechToTextSDK()
.setSubscriptionKey(service_key)
.setLocation("eastus")
.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"))
Beklenen sonuç
| url | DisplayText |
|---|---|
| https://mmlspark.blob.core.windows.net/datasets/Speech/audio2.wav | Özel konuşma, ses verilerini özel konuşma portalında elde edilen tanıma sonucuyla karşılaştırarak modelin tanıma kalitesini görsel olarak incelemenizi sağlayan araçlar sağlar. Karşıya yüklenen sesi kayıttan yürütecek ve sağlanan tanıma sonucun doğru olup olmadığını tespit edersiniz. Bu araç, herhangi bir ses verisi atamaya gerek kalmadan Microsoft'un temel konuşmayı metin modeline veya eğitilmiş özel modelin kalitesini hızla incelemenizi sağlar. |
| https://mmlspark.blob.core.windows.net/datasets/Speech/audio3.mp3 | Bir sir thinking görsel denetimi ekleyin. |
| https://mmlspark.blob.core.windows.net/datasets/Speech/audio3.mp3 | Beni duyuyor. |
| https://mmlspark.blob.core.windows.net/datasets/Speech/audio3.mp3 | Radyonun ben de duymasını istiyorum. |
Anomali Algılayıcısı örneği
Anomali Algılayıcısı zaman serisi verilerinizin düzensizliklerini algılamak için harikadır. Bu örnekte, tüm zaman serisinde anomalileri bulmak için hizmetini kullanacağız.
from pyspark.sql.functions import lit
# 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("eastus")
.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"))
Beklenen sonuç
| timestamp | değer | isAnomaly |
|---|---|---|
| 1972-01-01T00:00:00Z | 826 | Yanlış |
| 1972-02-01T00:00:00Z | 799 | Yanlış |
| 1972-03-01T00:00:00Z | 890 | Yanlış |
| 1972-04-01T00:00:00Z | 900 | Yanlış |
| 1972-05-01T00:00:00Z | 766 | Yanlış |
| 1972-06-01T00:00:00Z | 805 | Yanlış |
| 1972-07-01T00:00:00Z | 821 | Yanlış |
| 1972-08-01T00:00:00Z | 20000 | Doğru |
| 1972-09-01T00:00:00Z | 883 | Yanlış |
| 1972-10-01T00:00:00Z | 898 | Yanlış |
| 1972-11-01T00:00:00Z | 957 | Yanlış |
| 1972-12-01T00:00:00Z | 924 | Yanlış |
| 1973-01-01T00:00:00Z | 881 | Yanlış |
| 1973-02-01T00:00:00Z | 837 | Yanlış |
| 1973-03-01T00:00:00Z | 9000 | Doğru |
Rastgele web API'leri
Spark üzerinde HTTP ile büyük veri işlem hattında herhangi bir web hizmeti kullanılabilir. Bu örnekte, dünya üzerinde çeşitli ülkeler hakkında bilgi almak için Dünya Bankası API'sini kullanıyoruz.
from requests import Request
from mmlspark.io.http import HTTPTransformer, http_udf
from pyspark.sql.functions import udf, col
# 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 spcificies 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")))
Beklenen sonuç
| ülke | yanıt |
|---|---|
| Br | [{"page":1,"pages":1,"per_page":"50","total":1},[{"id":"BRA","iso2Code":"BR","name"::"Brezilya","region":{"id":"LCN","iso2code":"ZJ","value":"Latin Amerika & Tümen "},"adminregion":{"id":"LAC",, "iso2code":"XJ","value":"Latin Amerika & Code (yüksek gelir hariç)"},"incomeLevel":{"id":"UMC","iso2code":"XT","value":"Üst orta gelir"},"lendingType":{"id":"IBD","iso2code":"XF","value":"IBRD"},"capitalCity":"Brasilia", "boylam":"-47.9292","latitude":"-15.7801"}]] |
| Abd | [{"page":1,"pages":1,"per_page":"50","total":1},[{"id":"USA","iso2Code":"US","name":"Birleşik Devletler ","region":{"id":"NAC","iso2code":"XU","value":"Kuzey Amerika"},"adminregion":{"id":"","iso2code":","value ":""},"incomeLevel":{"id":"LN","iso2code":"XD","value":"High income"},"lendingType":{"id":"LNX","iso2code":"XX","value":"Not classified"},"capitalCity":"Washington D.C.","longitude":"-77.032","latitude":"38.8895"}]] |