Öğretici: Power BI'da depolanan metinden anahtar ifadeleri ayıklama

Microsoft Power BI Desktop, verilerinize bağlanmanıza, verilerinizi dönüştürmenize ve görselleştirmenize olanak sağlayan ücretsiz bir uygulamadır. Azure AI Dili'nin özelliklerinden biri olan anahtar ifade ayıklama, doğal dil işleme sağlar. Ham yapılandırılmamış veriler olduğunda, en önemli ifadeleri ayıklayabilir, yaklaşımı analiz edebilir ve markalar gibi iyi bilindik varlıkları belirleyebilir. Birlikte bu araçlar, müşterilerinizin ne hakkında konuştuğunu ve bu konuda nasıl hissettiğini hızlıca görmenize yardımcı olabilir.

Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

  • Verileri içeri aktarmak ve dönüştürmek için Power BI Desktop’ı kullanma
  • Power BI Desktop’ta özel işlev oluşturma
  • Power BI Desktop'i Azure AI Dilinin Anahtar İfade Ayıklama özelliğiyle tümleştirme
  • Müşteri geri bildirimlerinden en önemli tümcecikleri almak için Anahtar İfade Ayıklamayı kullanma
  • Müşteri geri bildiriminden sözcük bulutu oluşturma

Önkoşullar

Müşteri verilerini yükleme

Başlamak için Power BI Desktop'ı açın ve önkoşulların bir parçası olarak indirdiğiniz virgülle ayrılmış değer (CSV) dosyasını yükleyin. Bu dosyada, kurgusal olarak oluşturulmuş küçük bir şirketin destek forumundaki bir günlük varsayımsal etkinlik yer almaktadır.

Dekont

Power BI, SQL veritabanları gibi çok çeşitli web tabanlı kaynaklardan verileri kullanabilir. Daha fazla bilgi için Power Query belgelerine bakın.

Ana Power BI Desktop penceresinde Ana Sayfa şeridini seçin. Şeridin Dış veri grubunda Veri Al açılır menüsünü açın ve Metin/CSV seçeneğini belirleyin.

The Get Data button

Aç iletişim kutusu görünür. İndirilenler klasörünüze veya CSV dosyasını indirdiğiniz klasöre gidin. Dosyanın adını ve ardından düğmesini seçin. CSV içeri aktarımı iletişim kutusu görünür.

The CSV Import dialog

CSV içeri aktarımı iletişim kutusu, Power BI Desktop'ın karakter kümesini, sınırlayıcıyı, üst bilgi satırlarını ve sütun türlerini doğru bir şekilde algıladığını doğrulamanıza olanak sağlar. Bu bilgilerin tümü doğru olduğundan Yükle'yi seçin.

Yüklenen verileri görmek için, Power BI çalışma alanının sol kenarındaki Veri Görünümü düğmesine tıklayın. Microsoft Excel’de olduğu gibi verileri içeren bir tablo açılır.

The initial view of the imported data

Verileri hazırlama

Anahtar İfade Ayıklama ile işlenmek üzere hazır olmadan önce Power BI Desktop'ta verilerinizi dönüştürmeniz gerekebilir.

Örnek veriler bir subject sütunu ve comment sütunu içerir. Power BI Desktop’ta Sütunları Birleştirme işleviyle, yalnızca comment sütunundaki değil, her iki sütundaki verilerden anahtar ifadeleri ayıklayabilirsiniz.

Power BI Desktop’ta Ana Sayfa şeridini seçin. Dış veri grubunda Sorguları Düzenle'yi seçin.

The External Data group in Home ribbon

Önceden seçilmediyse, pencerenin sol tarafındaki Sorgular listesinden FabrikamComments seçeneğini belirleyin.

Şimdi de tablodaki subject ve comment sütunlarının her ikisini de seçin. Bu sütunları görmek için yatay olarak kaydırma yapmanız gerekebilir. Öncelikle, subject sütun üst bilgisine tıklayın, ardından, Control tuşunu basılı tutarak comment sütun üst bilgisine tıklayın.

Selecting fields to be merged

Dönüştür şeridini seçin. Şeridin Metin Sütunları grubunda Sütunları Birleştir'i seçin. Sütunları Birleştir iletişim kutusu görünür.

Merging fields using the Merge Columns dialog

Sütunları Birleştir iletişim kutusunda ayırıcı olarak seçin Tab ve ardından Tamam'ı seçin .

Boş Olanı Kaldır filtresinden yararlanarak veya yazdırılamayan karakterleri Temizle dönüşümü ile kaldırarak boş iletileri de filtreleyebilirsiniz. Verileriniz, örnek dosyadaki spamscore sütunu gibi bir sütun içeriyorsa Sayı Filtresi kullanarak "istenmeyen" yorumları atlayabilirsiniz.

API’yi anlama

Anahtar İfade Ayıklama , HTTP isteği başına en fazla bin metin belgesini işleyebilir. Power BI, kayıtları tek tek işler. Bu nedenle, API’ye yönelik çağrılarınızın her biri yalnızca tek bir belge içerir. Anahtar İfadeler API’si, işlenen her belge için aşağıdaki alanları gerektirir.

Alan Açıklama
id İstekte bu belge için yer alan benzersiz tanımlayıcı. Yanıtta da bu alan bulunur. Böylece, birden fazla belge işlemeniz halinde, ayıklanan anahtar ifadeleri bu ifadelerin kaynağı olan belge ile kolayca eşleyebilirsiniz. Bu öğreticide, istek başına yalnızca bir belge işlediğinizden, id değerini, her bir istek için aynı olacak şekilde doğrudan yazabilirsiniz.
text İşlenecek metin. Bu alanın değeri, önceki bölümde oluşturduğunuz ve konu satırını ve yorum metnini birlikte içeren Merged sütunundan gelir. Anahtar İfadeler API'sinde bu verilerin yaklaşık 5.120 karakterden uzun olmaması gerekir.
language Belgenin yazıldığı doğal dilin kodu. Örnek verilerdeki tüm iletiler İngilizce’dir, bu nedenle bu alan için en değerini doğrudan yazabilirsiniz.

Özel işlev oluşturma

Artık Power BI ve Anahtar İfade Ayıklamayı tümleştirecek özel işlevi oluşturmaya hazırsınız. İşlev, işlenecek metni bir parametre olarak alır. Verileri gerekli JSON biçimine/biçiminden dönüştürür ve Anahtar İfadeler API’sine HTTP isteğinde bulunur. Daha sonra işlev, API’deki yanıtı ayrıştırır ve ayıklanan anahtar ifadelerin virgülle ayrılmış bir listesini içerir.

Dekont

Power BI Desktop özel işlevleri Power Query M formül dilinde (veya kısaca "M") yazılır. M, F# temelindeki işlevsel bir programlama dilidir. Bu öğreticiyi tamamlamanız için programcı olmanız gerekmese de gerekli kod aşağıda verilmiştir.

Power BI Desktop’ta, halen Sorgu Düzenleyicisi penceresinde bulunduğunuzdan emin olun. Değilseniz Giriş şeridini seçin ve Dış veri grubunda Sorguları Düzenle'yi seçin.

Şimdi Ana Sayfa şeridindeki Yeni Sorgu grubunda Yeni Kaynak açılır menüsünü açın ve Boş Sorgu’yu seçin.

Sorgular listesinde, başlangıçta Query1 olarak adlandırılan yeni bir sorgu görüntülenir. Söz konusu girişe çift tıklayın ve girişi KeyPhrases olarak adlandırın.

Şimdi Giriş şeridindeki Sorgu grubunda Gelişmiş Düzenleyici'ı seçerek Gelişmiş Düzenleyici penceresini açın. Pencerede bulunan kodu silin ve aşağıdaki kodu yapıştırın.

Dekont

Aşağıdaki örnek uç noktayı (içeren <your-custom-subdomain>) Dil kaynağınız için oluşturulan uç noktayla değiştirin. Azure portalında oturum açarak, kaynağınıza gidip Anahtar ve uç nokta'yı seçerek bu uç noktayı bulabilirsiniz.

// Returns key phrases from the text in a comma-separated list
(text) => let
    apikey      = "YOUR_API_KEY_HERE",
    endpoint    = "https://<your-custom-subdomain>.cognitiveservices.azure.com/text/analytics" & "/v3.0/keyPhrases",
    jsontext    = Text.FromBinary(Json.FromValue(Text.Start(Text.Trim(text), 5000))),
    jsonbody    = "{ documents: [ { language: ""en"", id: ""0"", text: " & jsontext & " } ] }",
    bytesbody   = Text.ToBinary(jsonbody),
    headers     = [#"Ocp-Apim-Subscription-Key" = apikey],
    bytesresp   = Web.Contents(endpoint, [Headers=headers, Content=bytesbody]),
    jsonresp    = Json.Document(bytesresp),
    keyphrases  = Text.Lower(Text.Combine(jsonresp[documents]{0}[keyPhrases], ", "))
in  keyphrases

değerini Dil kaynak anahtarınız ile değiştirin YOUR_API_KEY_HERE . Azure portalında oturum açarak, Dil kaynağınıza gidip Anahtar ve uç nokta sayfasını seçerek de bu anahtarı bulabilirsiniz. Anahtarın önündeki ve arkasındaki tırnak işaretlerini kaldırmadığınızdan emin olun. Ardından Bitti'yi seçin.

Özel işlevi kullanma

Artık her bir müşteri yorumundan anahtar ifadeleri ayıklamak ve tablodaki yeni bir sütunda depolamak için özel işlevi kullanabiliriz.

Power BI Desktop’ta Sorgu Düzenleyicisi penceresinde FabrikamComments sorgusuna geri dönün. Sütun Ekle şeridini seçin. Genel grubunda Özel İşlev Çağır'ı seçin.

Invoke Custom Function button

Özel İşlev Çağır iletişim kutusu görüntülenir. Yeni sütun adı bölümüne keyphrases girin. İşlev sorgusu bölümünde, oluşturduğunuz özel işlevi (KeyPhrases) seçin.

İletişim kutusunda yeni bir alan görüntülenir: metin (isteğe bağlı). Bu alan, Anahtar İfadeler API’sinin text parametresi için değer sağlamak amacıyla hangi sütunu kullanmak istediğimizi sorar. (ve id parametreleri için language değerleri önceden sabit kodlamış olduğunuzu unutmayın.) Açılan menüden (konu ve ileti alanlarını birleştirerek daha önce oluşturduğunuz sütunu) seçin Merged .

Invoking a custom function

Son olarak Tamam'ı seçin .

Her şey hazırsa Power BI, tablodaki her bir satır için bir kez özel işlevinizi çağırır. Anahtar İfadeler API’sine sorgular gönderir ve sonuçları depolamak için tabloya yeni bir sütun ekler. Ancak bundan önce kimlik doğrulaması ve gizlilik ayarlarını belirtmeniz gerekebilir.

Kimlik doğrulaması gizlilik

Özel İşlev Çağır iletişim kutusunu kapatmanızın ardından, Anahtar İfadeler API’sine nasıl bağlanılacağını belirtmenizin istendiği bir bant görüntülenebilir.

credentials banner

Kimlik Bilgilerini Düzenle'yi seçin, iletişim kutusunda seçili olduğundan emin olun Anonymous ve Bağlan seçin.

Dekont

Anahtar İfade Ayıklama, erişim anahtarınızı kullanarak isteklerin kimliğini doğrular, bu nedenle Power BI'ın HTTP isteğinin kendisi için kimlik bilgileri sağlaması gerekmediğinden bunu seçersiniz Anonymous .

setting authentication to anonymous

Anonim erişimi seçtikten sonra bile Kimlik Bilgilerini Düzenle başlığını görüyorsanız Dil kaynak anahtarınızı özel işlevdeki KeyPhraseskoda yapıştırmayı unutmuş olabilirsiniz.

Ardından, veri kaynaklarınızın gizliliği hakkında bilgiler sunmanızın istendiği bir bant görüntülenebilir.

privacy banner

Devam'ı seçin ve iletişim kutusundaki veri kaynaklarının her biri için seçinPublic. Ardından Kaydet'i seçin.

setting data source privacy

Sözcük bulutunu oluşturma

Görüntülenen tüm başlıklarla ilgilendikten sonra, Sorgu Düzenleyicisi kapatmak için Giriş şeridinde Kapat ve Uygula'yı seçin.

Power BI Desktop kısa bir süre içinde gerekli HTTP isteklerini yapar. Tablodaki her bir satır için yeni keyphrases sütunu, Anahtar İfade Ayıklama API'si tarafından metinde algılanan anahtar ifadeleri içerir.

Şimdi sözcük bulutu oluşturmak için bu sütunu kullanacaksınız. Başlamak için, ana Power BI Desktop penceresinde çalışma alanının sol tarafında yer alan Rapor düğmesine tıklayın.

Dekont

Kelime bulutu oluşturmak için her bir yorumun tam metni yerine neden ayıklanan anahtar ifadeleri kullanmalı? Anahtar ifadeler bize yalnızca müşteri yorumlarında yer alan en sık kullanılan sözcükleri değil, önemli sözcükleri de sunar. Ayrıca sonuçta elde edilen buluttaki sözcük boyutlandırması, bir kelimenin nispeten az sayıda yorumda sık olarak kullanılmasına göre şekillenmez.

Henüz yapmadıysanız, Word Cloud özel görselini yükleyin. Çalışma alanının sağındaki Görselleştirmeler panelinde üç noktaya (...) tıklayın ve Marketten İçeri Aktar'ı seçin. Listede görüntülenen görselleştirme araçları arasında "bulut" sözcüğü yoksa, "bulut" araması yapabilir ve Word Cloud görselinin yanındaki Ekle düğmesine tıklayabilirsiniz. Power BI, Sözcük Bulutu görselini yükler ve başarıyla yüklendiğini size bildirir.

adding a custom visual

İlk olarak, Görsel Öğeler bölmesindeki Word Cloud simgesine tıklayın.

Word Cloud icon in visualizations panel

Çalışma alanında yeni bir rapor görünür. Alanlar bölmesindeki keyphrases alanını Görsel Öğeler bölmesindeki Kategori alanına sürükleyin. Kelime bulutu raporda görünür.

Şimdi de Görsel Öğeler bölmesinin Biçim sayfasına geçin. Durdurma Sözcükleri kategorisinde, "of" gibi kısa ve sık kullanılan sözcükleri buluttan kaldırmak için Varsayılan Durdurma Sözcükleri'ni etkinleştirin. Ancak, anahtar ifadeleri görselleştirdiğimiz için bunlar durdurma sözcükleri içermeyebilir.

activating default stop words

Bu bölmenin biraz daha alt kısmında, Metni Döndür ve Başlık'ı kapatın.

activate focus mode

Sözcük bulutumuza daha iyi bakmak için rapordaki Odak Modu aracını seçin. Araç, aşağıda gösterildiği gibi çalışma alanının tamamını dolduracak şekilde kelime bulutunu genişletir.

A Word Cloud

Diğer özellikleri kullanma

Azure Yapay Zeka Dili, yaklaşım analizi ve dil algılama da sağlar. Dil algılama özellikle de müşteri geri bildirimi tamamen İngilizce dilinde değilse faydalıdır.

Bu diğer API’lerin her ikisi de Anahtar İfadeler API’sine oldukça benzerdir. Başka bir deyişle, bu öğreticide oluşturduğunuza neredeyse benzer özel işlevleri kullanarak bunları Power BI Desktop ile tümleştirebilirsiniz. Boş bir sorgu oluşturup aşağıdaki uygun kodu daha önce yaptığınız gibi Gelişmiş Düzenleyici'ye yapıştırmanız yeterlidir. (Erişim anahtarınızı unutmayın!) Ardından, daha önce olduğu gibi, işlevi kullanarak tabloya yeni bir sütun ekleyin.

Aşağıdaki Yaklaşım Analizi işlevi, metinde ifade edilen yaklaşımın ne kadar olumlu olduğunu gösteren bir etiket döndürür.

// Returns the sentiment label of the text, for example, positive, negative or mixed.
(text) => let
    apikey = "YOUR_API_KEY_HERE",
    endpoint = "<your-custom-subdomain>.cognitiveservices.azure.com" & "/text/analytics/v3.1/sentiment",
    jsontext = Text.FromBinary(Json.FromValue(Text.Start(Text.Trim(text), 5000))),
    jsonbody = "{ documents: [ { language: ""en"", id: ""0"", text: " & jsontext & " } ] }",
    bytesbody = Text.ToBinary(jsonbody),
    headers = [#"Ocp-Apim-Subscription-Key" = apikey],
    bytesresp = Web.Contents(endpoint, [Headers=headers, Content=bytesbody]),
    jsonresp = Json.Document(bytesresp),
    sentiment   = jsonresp[documents]{0}[sentiment] 
    in sentiment

Dil Algılama işlevine ilişkin iki sürüm aşağıda verilmiştir. İlk sürüm, ISO dil kodunu (örneğin, İngilizce için en), ikinci sürüm ise "kolay" adı (örneğin, English) döndürür. Bu iki sürüm arasında yalnızca gövdenin son satırının değişiklik gösterdiğine dikkat edin.

// Returns the two-letter language code (for example, 'en' for English) of the text
(text) => let
    apikey      = "YOUR_API_KEY_HERE",
    endpoint    = "https://<your-custom-subdomain>.cognitiveservices.azure.com" & "/text/analytics/v3.1/languages",
    jsontext    = Text.FromBinary(Json.FromValue(Text.Start(Text.Trim(text), 5000))),
    jsonbody    = "{ documents: [ { id: ""0"", text: " & jsontext & " } ] }",
    bytesbody   = Text.ToBinary(jsonbody),
    headers     = [#"Ocp-Apim-Subscription-Key" = apikey],
    bytesresp   = Web.Contents(endpoint, [Headers=headers, Content=bytesbody]),
    jsonresp    = Json.Document(bytesresp),
    language    = jsonresp [documents]{0}[detectedLanguage] [name] in language 
// Returns the name (for example, 'English') of the language in which the text is written
(text) => let
    apikey      = "YOUR_API_KEY_HERE",
    endpoint    = "https://<your-custom-subdomain>.cognitiveservices.azure.com" & "/text/analytics/v3.1/languages",
    jsontext    = Text.FromBinary(Json.FromValue(Text.Start(Text.Trim(text), 5000))),
    jsonbody    = "{ documents: [ { id: ""0"", text: " & jsontext & " } ] }",
    bytesbody   = Text.ToBinary(jsonbody),
    headers     = [#"Ocp-Apim-Subscription-Key" = apikey],
    bytesresp   = Web.Contents(endpoint, [Headers=headers, Content=bytesbody]),
    jsonresp    = Json.Document(bytesresp),
    language    =jsonresp [documents]{0}[detectedLanguage] [name] in language 

Son olarak, sunulmuş olan Anahtar İfade Ayıklama işlevinin, virgülle ayrılan ifadelerden oluşan tek bir dize yerine ifadeleri liste nesnesi olarak döndüren bir değişkeni aşağıda verilmiştir.

Dekont

Tek bir dize döndürülmesi kelime bulutu örneğimizi kolaylaştırmıştır. Diğer yandan listeler, Power BI'da döndürülen ifadelerle çalışmak için daha esnek bir biçimdir. Sorgu Düzenleyicisi'nin Dönüştür şeridindeki Yapılandırılmış Sütun grubunu kullanarak Power BI Desktop'taki liste nesnelerini denetleyebilirsiniz.

// Returns key phrases from the text as a list object
(text) => let
    apikey      = "YOUR_API_KEY_HERE",
    endpoint    = "https://<your-custom-subdomain>.cognitiveservices.azure.com" & "/text/analytics/v3.1/keyPhrases",
    jsontext    = Text.FromBinary(Json.FromValue(Text.Start(Text.Trim(text), 5000))),
    jsonbody    = "{ documents: [ { language: ""en"", id: ""0"", text: " & jsontext & " } ] }",
    bytesbody   = Text.ToBinary(jsonbody),
    headers     = [#"Ocp-Apim-Subscription-Key" = apikey],
    bytesresp   = Web.Contents(endpoint, [Headers=headers, Content=bytesbody]),
    jsonresp    = Json.Document(bytesresp),
    keyphrases  = jsonresp[documents]{0}[keyPhrases]
in  keyphrases

Sonraki adımlar

Azure AI Dili, Power Query M formül dili veya Power BI hakkında daha fazla bilgi edinin.