Kurz: Extrakce klíčových frází z textu uloženého v Power BI

Microsoft Power BI Desktop je bezplatná aplikace, se kterou se můžete připojit k datům abyste je mohli transformovat a vizualizovat. Extrakce klíčových frází, jednou z funkcí jazyka Azure AI, je zpracování přirozeného jazyka. Služba dokáže z nezpracovaného a nestrukturovaného textu extrahovat nejdůležitější fráze, analyzovat mínění a identifikovat známé prvky, jako jsou značky. Společně vám tyto služby můžou pomoct rychle zjistit, o čem mluví vaši zákazníci a jak se při tom cítí.

V tomto kurzu se naučíte:

  • Používat Power BI Desktop k importu a transformaci dat
  • Vytvořit vlastní funkce v Power BI Desktopu
  • Integrace Power BI Desktopu s funkcí extrakce klíčových frází jazyka Azure AI
  • Extrakce klíčových frází k získání nejdůležitějších frází od zpětné vazby zákazníků
  • Vytvořit z připomínek zákazníků Word Cloud

Požadavky

Načtení zákaznických dat

Začněte tím, že otevřete Power BI Desktop a načtete soubor hodnot oddělených čárkami (CSV), který jste stáhli jako součást požadavků. Tento soubor představuje denní hypotetickou aktivitu na fóru podpory malé fiktivní společnosti.

Poznámka:

Power BI může používat data z nejrůznějších webových zdrojů, jako jsou databáze SQL. Další informace najdete v dokumentaci k Power Query.

V hlavním okně Power BI Desktopu vyberte pás karet Domů. Na pásu karet ve skupině Externí data otevřete rozevírací nabídku Načíst data a vyberte Text/CSV.

The Get Data button

Zobrazí se dialogové okno Otevřít. Přejděte do složky Stažené soubory nebo do složky, do které jste stáhli soubor CSV. Vyberte název souboru a pak tlačítko Otevřít . Zobrazí se dialogové okno pro import CSV.

The CSV Import dialog

V dialogovém okně pro import CSV můžete ověřit, jestli Power BI Desktop správně rozpoznal znakovou sadu, oddělovač, řádky záhlaví a typy sloupců. Tyto informace jsou všechny správné, takže vyberte Načíst.

Pokud chcete zobrazit načtená data, klikněte na tlačítko Zobrazení dat na levém okraji pracovního prostoru Power BI. Otevře se tabulka s daty, která vidíte v Microsoft Excelu.

The initial view of the imported data

Příprava dat

Možná budete muset transformovat data v Power BI Desktopu, než budou připravená ke zpracování extrakcí klíčových frází.

Ukázková data obsahují sloupec subject a sloupec comment. Funkce sloučení sloupců v Power BI Desktopu extrahuje klíčové fráze z dat obou sloupců (místo jen ze sloupce comment).

V Power BI Desktopu vyberte pás karet Domů. Ve skupině Externí data vyberte Upravit dotazy.

The External Data group in Home ribbon

V seznamu Dotazy vyberte na levé straně okna soubor FabrikamComments, pokud ještě není vybraný.

Teď v tabulce vyberte oba sloupce subject a comment. Možná budete muset zobrazení vodorovně posunout, aby se tyto sloupce zobrazily. Nejprve klikněte na záhlaví sloupce subject, pak podržte stisknutou klávesu Ctrl a klikněte na záhlaví sloupce comment.

Selecting fields to be merged

Vyberte pás karet Transformace. Ve skupině Textové sloupce na pásu karet vyberte Sloučit sloupce. Zobrazí se dialogové okno Sloučit sloupce.

Merging fields using the Merge Columns dialog

V dialogovém okně Sloučit sloupce zvolte Tab jako oddělovač a pak vyberte OK.

Můžete také vyfiltrovat prázdné zprávy filtrem Odebrat prázdné nebo odebrat netisknutelné znaky transformací Vyčistit. Pokud vaše data obsahují podobný sloupec, jako je sloupec spamscore v ukázkovém souboru, můžete použít číselný filtr k přeskočení nevyžádaných komentářů.

Vysvětlení rozhraní API

Extrakce klíčových frází může zpracovat až tisíc textových dokumentů na požadavek HTTP. Power BI ale upřednostňuje postupné zpracování jednotlivých záznamů. V tomto kurzu bude ve voláních rozhraní API vždy jen jeden dokument. Rozhraní API Klíčové fráze vyžaduje, aby každý zpracovávaný dokument obsahoval následující pole.

Pole Popis
id Jedinečný identifikátor tohoto dokumentu v rámci požadavku. Odpověď také obsahuje toto pole. Tímto způsobem můžete v případě zpracování více dokumentů snadno přidružit extrahované klíčové fráze k dokumentu, ze kterého pocházejí. V tomto kurzu zpracováváte pro každou žádost jenom jeden dokument. Proto můžete hodnotu id pevně zadat, aby byla pro všechny požadavky stejná.
text Text, který se má zpracovat. Hodnota tohoto pole pochází ze sloupce Merged vytvořeného v předchozím oddílu. V tomto sloupci je sloučený řádek předmětu s textem komentáře. Rozhraní API klíčových frází vyžaduje, aby tato data nebyla delší než přibližně 5 120 znaků.
language Kód pro přirozený jazyk, ve kterém je dokument napsaný. Všechny zprávy v ukázkových datech jsou v angličtině, takže do tohoto pole můžete pevně zadat hodnotu en.

Vytvoření vlastní funkce

Teď jste připraveni vytvořit vlastní funkci, která integruje Power BI a extrakci klíčových frází. Funkce jako parametr přijímá text ke zpracování. Převede data do požadovaného formátu JSON (nebo z něj) a vytvoří požadavek HTTP do rozhraní API Klíčové fráze. Dále funkce parsuje odpověď z API a vrátí řetězec, který obsahuje seznam extrahovaných klíčových frází oddělených čárkou.

Poznámka:

Vlastní funkce Power BI Desktopu se píší v jazyce vzorců Power Query M nebo zkráceně jenom M. M je funkcionální programovací jazyk založený na F#. Pro dokončení tohoto kurzu však nemusíte být programátor – požadovaný kód je uvedený níže.

V Power BI Desktopu se ujistěte, že jste v okně Editoru dotazů. Pokud ne, vyberte pás karet Domů a ve skupině Externí data vyberte Upravit dotazy.

Na pásu karet Domů otevřete ve skupině Nový dotaz rozevírací nabídku Nový zdroj a vyberte Prázdný dotaz.

V seznamu dotazů se zobrazí nový dotaz s počátečním názvem Query1. Dvakrát na tuto položku klikněte a zadejte název KeyPhrases.

Teď na pásu karet Domů ve skupině Dotaz vyberte Rozšířený editor a otevřete okno Rozšířený editor. Odstraňte kód, který okno už obsahuje, a vložte následující kód.

Poznámka:

Nahraďte níže uvedený ukázkový koncový bod (obsahující <your-custom-subdomain>) koncovým bodem vygenerovaným pro váš prostředek jazyka. Tento koncový bod najdete tak, že se přihlásíte k webu Azure Portal, přejdete k prostředku a vyberete Klíč a koncový bod.

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

Nahraďte YOUR_API_KEY_HERE klíčem prostředku jazyka. Tento klíč najdete také tak, že se přihlásíte k webu Azure Portal, přejdete k prostředku jazyka a vyberete stránku Klíč a koncový bod . Nezapomeňte nechat uvozovky před i za klíčem. Pak vyberte Hotovo.

Použití vlastní funkce

Teď můžete použít vlastní funkci k extrakci klíčových frází ze všech komentářů zákazníků. Získané fráze uložíte do nového sloupce tabulky.

V Power BI Desktopu se v okně Editoru dotazů vraťte zpět k dotazu FabrikamComments. Vyberte pás karet Přidat sloupec. Ve skupině Obecné vyberte Vyvolat vlastní funkci.

Invoke Custom Function button

Zobrazí se dialogové okno Vyvolat vlastní funkci. Do pole Nový název sloupce zadejte keyphrases. V poli Dotaz na funkci vyberte vlastní funkci KeyPhrases, kterou jste vytvořili.

V dialogovém okně se zobrazí nové pole text (volitelné). Toto pole se ptá, jaký sloupec chcete použít k zadání hodnot parametru text rozhraní API pro klíčové fráze (Nezapomeňte, že hodnoty a languageid parametry jste už pevně zakódovali.) V rozevírací nabídce vyberte Merged (sloupec, který jste vytvořili dříve sloučením polí předmětu a zprávy).

Invoking a custom function

Nakonec vyberte OK.

Pokud je všechno připravené, Power BI volá vaši funkci pro každý řádek tabulky vždy jen jednou. Odešle dotazy rozhraní API pro klíčové fráze a přidá do tabulky nový sloupec s uloženými výsledky. Předtím však možná bude nutné zadat nastavení ověřování a ochrany osobních údajů.

Ověřování a ochrana osobních údajů

Po zavření dialogového okna Vyvolat vlastní funkci se může zobrazit banner s výzvou, abyste upřesnili, jak se připojit k rozhraní API pro klíčová slova.

credentials banner

Vyberte Upravit přihlašovací údaje, ujistěte se, že Anonymous je v dialogovém okně vybraná a pak vyberte Připojení.

Poznámka:

Vyberete to Anonymous , protože extrakce klíčových frází ověřuje požadavky pomocí přístupového klíče, takže Power BI nemusí zadávat přihlašovací údaje pro samotný požadavek HTTP.

setting authentication to anonymous

Pokud se zobrazí banner Upravit přihlašovací údaje i po zvolení anonymního přístupu, možná jste zapomněli vložit svůj klíč prostředku Jazyk do kódu ve KeyPhrasesvlastní funkci.

Dále se může zobrazit banner s výzvou k zadání informací o ochraně osobních údajů u vašich zdrojů dat.

privacy banner

Vyberte Pokračovat a zvolte Public pro každý zdroj dat v dialogovém okně. Pak vyberte Uložit.

setting data source privacy

Vytvoření Word Cloudu

Jakmile se vám zobrazí všechny bannery, které se zobrazí, zavřete Editor Power Query výběrem možnosti Zavřít a použít na pásu karet Domů.

Power BI Desktopu chvíli trvá, než provede potřebné požadavky HTTP. Sloupec keyphrases pro každý řádek tabulky obsahuje klíčové fráze rozpoznané v textu rozhraním API pro klíčové fráze.

Teď tento sloupec použijete k vygenerování Word Cloudu. Začněte tím, že v hlavním okně Power BI Desktopu kliknete na tlačítko Sestava, které je nalevo od pracovního prostoru.

Poznámka:

Proč k vygenerování Word Cloudu použít extrahované klíčové fráze, a ne úplný text každého komentáře? Klíčové fráze nám poskytují důležitá slova z komentářů našich zákazníků, ne pouze nejčastější slova. Navíc nedojde ke zkreslení velikosti slov ve výsledném Cloudu častým používáním určitého slova v relativně malém počtu komentářů.

Pokud ještě nemáte nainstalovaný vlastní vizuál Word Cloud, nainstalujte ho. Na panelu Vizualizace napravo od pracovního prostoru klikněte na tři tečky (...) a zvolte Importovat z trhu. Pokud slovo "cloud" není mezi zobrazenými nástroji vizualizace v seznamu, můžete vyhledat "cloud" a kliknout na tlačítko Přidat vedle vizuálu Word Cloud. Power BI nainstaluje vizuál Word Cloud a bude vás informovat o úspěšné instalaci.

adding a custom visual

Nejprve klikněte na ikonu Word Cloud na panelu Vizualizace.

Word Cloud icon in visualizations panel

V pracovním prostoru se zobrazí nová sestava. Přetáhněte pole keyphrases z panelu Pole do pole Kategorie na panelu Vizualizace. Uvnitř sestavy se zobrazí Word Cloud.

Teď na panelu Vizualizace přepněte na stránku Formát. V kategorii Nevýznamová slova zapněte Výchozí nevýznamová slova. Tím se z Cloudu odstraní běžná krátká slova, jako je například „of“. Protože ale vizualizujeme klíčové fráze, nemusí obsahovat slova stop.

activating default stop words

O trochu níže na tomto panelu vypněte Otočení textu a Nadpis.

activate focus mode

Výběrem nástroje Detailní režim v sestavě získáte lepší pohled na náš wordový cloud. Tento nástroj roztáhne Word Cloud tak, aby zaplnil celý pracovní prostor, jak je znázorněno níže.

A Word Cloud

Použití dalších funkcí

Azure AI Language také poskytuje analýzu mínění a rozpoznávání jazyka. Rozpoznávání jazyka je užitečné hlavně v případě, že zpětná vazba od vašich zákazníků není vždy v angličtině.

Obě tato rozhraní API jsou podobná rozhraní API pro klíčové fráze. To znamená, že je můžete integrovat do Power BI Desktopu pomocí vlastních funkcí, které jsou skoro stejné jako funkce vytvořená v tomto kurzu. Stačí vytvořit prázdný dotaz a stejně jako předtím do Rozšířeného editoru vložit odpovídající kód uvedený níže. (Nezapomeňte na přístupový klíč.) Stejně jako předtím použijte funkci k přidání nového sloupce do tabulky.

Níže uvedená funkce Analýza mínění vrátí popisek označující, jak pozitivní je mínění vyjádřené v textu.

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

Tady jsou dvě verze funkce Rozpoznávání jazyka. První vrátí kód ISO jazyka (například pro angličtinu je to en), zatímco druhá vrací popisný název (například English). Jak si můžete všimnout, tyto dvě verze se liší pouze v posledním řádku těla funkce.

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

A konečně, tady je již uvedená varianta funkce Klíčové fráze, která vrátí fráze jako objekt seznamu, a ne jako jeden řetězec čárkami oddělených frází.

Poznámka:

Vracení jednoho řetězce sloužilo ke zjednodušení našeho příkladu Word Cloudu. Seznam je oproti tomu flexibilnější formát pro práci s vrácenými frázemi v Power BI. V Power BI Desktopu můžete s objekty seznamu pracovat s využitím skupiny Strukturovaný sloupec na pásu karet Transformace v Editoru dotazů.

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

Další kroky

Přečtěte si další informace o jazyce Azure AI, jazyce vzorců Power Query M nebo Power BI.