Udostępnij za pośrednictwem


Samouczek: wyodrębnianie kluczowych fraz z tekstu przechowywanego w usłudze Power BI

Microsoft Power BI Desktop to bezpłatna aplikacja umożliwiająca nawiązywanie połączeń z danymi oraz ich przekształcanie i wizualizowanie. Wyodrębnianie kluczowych fraz, jedna z funkcji języka AI platformy Azure, zapewnia przetwarzanie języka naturalnego. Dysponując nieprzetworzonym tekstem bez struktury, potrafi wyodrębnić najważniejsze frazy, przeanalizować tonację i zidentyfikować dobrze znane jednostki, takie jak marki. Używając tych narzędzi razem, można szybko zorientować się, o czym mówią klienci i jakie są ich opinie.

Z tego samouczka dowiesz się, jak wykonywać następujące czynności:

  • Importowanie i przekształcanie danych przy użyciu aplikacji Power BI Desktop
  • Tworzenie funkcji niestandardowej w aplikacji Power BI Desktop
  • Integrowanie programu Power BI Desktop z funkcją wyodrębniania kluczowych fraz języka sztucznej inteligencji platformy Azure
  • Użyj wyodrębniania kluczowych fraz, aby uzyskać najważniejsze frazy z opinii klientów
  • Tworzenie chmury słów na podstawie opinii klientów

Wymagania wstępne

Ładowanie danych klientów

Aby rozpocząć, otwórz program Power BI Desktop i załaduj plik wartości rozdzielanej przecinkami (CSV), który został pobrany w ramach wymagań wstępnych. Ten plik zawiera hipotetyczną aktywność z jednego dnia na forum pomocy technicznej fikcyjnej małej firmy.

Uwaga

Usługa Power BI może używać danych z wielu różnych źródeł internetowych, takich jak bazy danych SQL. Aby uzyskać więcej informacji, zobacz dokumentację dodatku Power Query.

W głównym oknie aplikacji Power BI Desktop wybierz wstążkę Narzędzia główne. W grupie Dane zewnętrzne wstążki otwórz menu rozwijane Pobierz dane i wybierz pozycję Tekst/CSV.

Przycisk Pobierz dane

Zostanie wyświetlone okno dialogowe Otwieranie. Przejdź do folderu Pobrane lub do folderu, w którym pobrano plik CSV. Wybierz nazwę pliku, a następnie przycisk Otwórz . Zostanie wyświetlone okno dialogowe importowania pliku CSV.

Okno dialogowe Importowanie woluminów CSV

W oknie dialogowym importowania pliku CSV można sprawdzić, czy program Power BI Desktop poprawnie wykrył zestaw znaków, ogranicznik, wiersze nagłówka i typy kolumn. Wszystkie te informacje są poprawne, dlatego wybierz pozycję Załaduj.

Aby zobaczyć załadowane dane, kliknij przycisk Widok danych przy lewej krawędzi obszaru roboczego usługi Power BI. Zostanie otwarta tabela zawierająca dane, jak w programie Microsoft Excel.

Początkowy widok zaimportowanych danych

Przygotowywanie danych

Zanim będzie gotowy do przetworzenia przez wyodrębnianie kluczowych fraz, może być konieczne przekształcenie danych w programie Power BI Desktop.

Przykładowe dane zawierają kolumny subject i comment. Korzystając z funkcji Scal kolumny w aplikacji Power BI Desktop, możesz wyodrębnić kluczowe frazy z danych w obu tych kolumnach, a nie tylko w kolumnie comment.

W aplikacji Power BI Desktop wybierz wstążkę Narzędzia główne. W grupie Dane zewnętrzne wybierz pozycję Edytuj zapytania.

Grupa Danych zewnętrznych na wstążce Narzędzia główne

Na liście Zapytania po lewej stronie okna wybierz pozycję FabrikamComments, jeśli nie została jeszcze wybrana.

Teraz zaznacz obie kolumny (subject i comment) w tabeli. W celu wyświetlenia tych kolumn może być konieczne przewinięcie w poziomie. Najpierw kliknij nagłówek kolumny subject, a następnie przytrzymaj klawisz Control i kliknij nagłówek kolumny comment.

Wybieranie pól do scalenia

Wybierz wstążkę Przekształć. W grupie Kolumny tekstowe na wstążce wybierz pozycję Scal kolumny. Zostanie wyświetlone okno dialogowe Scal kolumny.

Scalanie pól przy użyciu okna dialogowego Scal kolumny

W oknie dialogowym Scal kolumny wybierz Tab jako separator, a następnie wybierz przycisk OK.

Możesz również rozważyć odfiltrowanie pustych wiadomości, używając filtru Usuń puste lub usuwając znaki niedrukowalne przy użyciu przekształcenia Wyczyść. Jeśli dane zawierają kolumnę podobną do kolumny spamscore w przykładowym pliku, możesz pominąć komentarze „spam”, używając filtru Liczba.

Opis interfejsu API

Wyodrębnianie kluczowych fraz może przetwarzać maksymalnie tysiąc dokumentów tekstowych na żądanie HTTP. Usługa Power BI preferuje obsługę pojedynczych rekordów po kolei, dlatego w tym samouczku każde Twoje wywołanie interfejsu API będzie zawierać tylko jeden dokument. Dla każdego przetwarzanego dokumentu interfejs API fraz kluczowych wymaga poniższych pól.

Pole opis
id Unikatowy identyfikator dla tego dokumentu w żądaniu. Odpowiedź również zawiera to pole. Dzięki temu podczas przetwarzania więcej niż jednego dokumentu można łatwo skojarzyć wyodrębnione frazy kluczowe z dokumentem, z którego pochodzą. Ponieważ w tym samouczku przetwarzasz tylko jeden dokument w każdym żądaniu, możesz trwale zakodować wartość id, aby była taka sama dla każdego żądania.
text Tekst do przetworzenia. Wartość tego pola pochodzi z kolumny Merged zawierającej wiersz tematu połączony z tekstem komentarza, która została utworzona w poprzedniej sekcji. Interfejs API fraz kluczowych wymaga, aby te dane nie były dłuższe niż około 5120 znaków.
language Kod języka naturalnego, w którym został napisany dokument. Wszystkie wiadomości w przykładowych danych są w języku angielskim, dlatego możesz trwale zakodować wartość en dla tego pola.

Tworzenie funkcji niestandardowej

Teraz możesz utworzyć funkcję niestandardową, która będzie integrować usługę Power BI i wyodrębnianie kluczowych fraz. Funkcja otrzymuje tekst do przetworzenia w formie parametru. Konwertuje ona dane na i z wymaganego dokumentu w formacie JSON, a następnie wysyła żądanie HTTP do interfejsu API fraz kluczowych. Następnie funkcja analizuje odpowiedź z interfejsu API i zwraca ciąg zawierający rozdzielaną przecinkami listę wyodrębnionych fraz kluczowych.

Uwaga

Funkcje niestandardowe programu Power BI Desktop pisze się w języku formuł Power Query M, w skrócie „M”. M to funkcjonalny język programowania oparty na języku F#. Jednak nie trzeba być programistą, aby ukończyć ten samouczek. Wymagany kod znajduje się poniżej.

W aplikacji Power BI Desktop upewnij się, że nadal jesteś w oknie edytora zapytań. Jeśli tak nie jest, wybierz wstążkę Narzędzia główne, a następnie w grupie Dane zewnętrzne wybierz pozycję Edytuj zapytania.

Teraz na wstążce Narzędzia główne w grupie Nowe zapytanie otwórz menu rozwijane Nowe źródło i wybierz pozycję Puste zapytanie.

Na liście Zapytania zostanie wyświetlone nowe zapytanie, początkowo noszące nazwę Query1. Kliknij dwukrotnie ten wpis i nadaj mu nazwę KeyPhrases.

Teraz na wstążce Narzędzia główne w grupie Zapytanie wybierz pozycję Edytor zaawansowany, aby otworzyć okno Edytor zaawansowany. Usuń kod, który znajduje się już w tym oknie, a następnie wklej poniższy kod.

Uwaga

Zastąp przykładowy punkt końcowy poniżej (zawierający <your-custom-subdomain>) punktem końcowym wygenerowany dla zasobu Language. Ten punkt końcowy można znaleźć, logując się do witryny Azure Portal, przechodząc do zasobu i wybierając pozycję Klucz i punkt końcowy.

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

Zastąp YOUR_API_KEY_HERE ciąg kluczem zasobu Language. Ten klucz można również znaleźć, logując się do witryny Azure Portal, przechodząc do zasobu Language i wybierając stronę Klucz i punkt końcowy . Przed i za kluczem zostaw cudzysłowy. Następnie wybierz Gotowe.

Używanie funkcji niestandardowej

Teraz możesz użyć funkcji niestandardowej, aby wyodrębnić frazy kluczowe z poszczególnych komentarzy klientów i zapisać je w nowej kolumnie w tabeli.

W oknie Edytora zapytań aplikacji Power BI Desktop przejdź z powrotem do zapytania FabrikamComments. Wybierz wstążkę Dodaj kolumnę. W grupie Ogólne wybierz pozycję Wywołaj funkcję niestandardową.

Przycisk Wywołaj funkcję niestandardową

Zostanie wyświetlone okno dialogowe Wywołaj funkcję niestandardową. W polu Nazwa nowej kolumny wprowadź keyphrases. W polu Zapytanie funkcji wybierz utworzoną funkcję niestandardową KeyPhrases.

W oknie dialogowym zostanie wyświetlone nowe pole tekst (opcjonalnie). To pole jest pytaniem, której kolumny chcemy użyć, aby dostarczyć wartości dla parametru text interfejsu API fraz kluczowych. (Pamiętaj, że wartości parametrów language i id są już zakodowane na sztywno). Wybierz Merged (kolumnę utworzoną wcześniej przez scalenie pól tematu i komunikatu) z menu rozwijanego.

Wywoływanie funkcji niestandardowej

Na koniec wybierz przycisk OK.

Jeśli wszystko jest gotowe, usługa Power BI wywołuje funkcję niestandardową jednokrotnie dla każdego wiersza w tabeli. Wysyła ona zapytania do interfejsu API fraz kluczowych i dodaje do tabeli nową kolumnę na potrzeby przechowywania wyników. Jednak zanim tak się stanie, może być konieczne określenie ustawień uwierzytelniania i prywatności.

Uwierzytelnianie i prywatność

Po zamknięciu okna dialogowego Wywołaj funkcję niestandardową może zostać wyświetlony transparent z prośbą o określenie sposobu łączenia z interfejsem API fraz kluczowych.

baner poświadczeń

Wybierz pozycję Edytuj poświadczenia, upewnij się, że Anonymous jest zaznaczona w oknie dialogowym, a następnie wybierz pozycję Połącz.

Uwaga

Anonymous Wybierasz, ponieważ wyodrębnianie kluczowych fraz uwierzytelnia żądania przy użyciu klucza dostępu, więc usługa Power BI nie musi podawać poświadczeń dla samego żądania HTTP.

Ustawianie uwierzytelniania na anonimowe

Jeśli po wybraniu dostępu anonimowego zostanie wyświetlony baner Edytowanie poświadczeń, być może zapomniano wkleić klucz zasobu Language do kodu w funkcji niestandardowej.KeyPhrases

Następnie może zostać wyświetlony transparent z prośbą o podanie informacji na temat ochrony prywatności źródeł danych.

baner prywatności

Wybierz pozycję Kontynuuj i wybierz Public dla każdego źródła danych w oknie dialogowym. Następnie wybierz opcję Zapisz.

ustawianie prywatności źródła danych

Tworzenie chmury słów

Gdy masz do czynienia z wyświetlonymi banerami, wybierz pozycję Zamknij i zastosuj na wstążce Narzędzia główne, aby zamknąć Edytor Power Query.

Wykonanie niezbędnych żądań HTTP przez program Power BI Desktop potrwa chwilę. W przypadku każdego wiersza w tabeli nowa kolumna keyphrases zawiera frazy kluczowe wykryte w tekście przez interfejs API fraz kluczowych.

Teraz za pomocą tej kolumny wygenerujesz chmurę słów. Aby rozpocząć, kliknij przycisk Raport w głównym oknie aplikacji Power BI Desktop z lewej strony obszaru roboczego.

Uwaga

Dlaczego lepiej wygenerować chmurę słów przy użyciu wyodrębnionych fraz kluczowych, a nie pełnego tekstu poszczególnych komentarzy? Frazy kluczowe dostarczają nam ważnych słów z komentarzy naszych klientów, a nie po prostu najpopularniejszych słów. Ponadto liczba słów w chmurze wynikowej nie jest zniekształcona przez częste użycie słowa w stosunkowo małej liczbie komentarzy.

Jeśli nie masz jeszcze zainstalowanej wizualizacji niestandardowej Word Cloud, zainstaluj ją. W panelu Wizualizacje po prawej stronie obszaru roboczego kliknij trzy kropki (...) i wybierz pozycję Importuj z rynku. Jeśli wyraz "cloud" nie znajduje się wśród wyświetlanych narzędzi wizualizacji na liście, możesz wyszukać frazę "chmura" i kliknąć przycisk Dodaj obok wizualizacji Chmura programu Word. Usługa Power BI zainstaluje wizualizację Word Cloud i poinformuje Cię o jej pomyślnym zainstalowaniu.

dodawanie wizualizacji niestandardowej

Najpierw kliknij ikonę Word Cloud w panelu Wizualizacje.

Ikona chmury programu Word w panelu wizualizacji

W obszarze roboczym zostanie wyświetlony nowy raport. Przeciągnij pole keyphrases z panelu Pola do pola Kategoria w panelu Wizualizacje. Wewnątrz raportu pojawi się chmura słów.

Teraz przełącz na stronę Format panelu Wizualizacje. W kategorii Słowa ignorowane włącz opcję Domyślne słowa ignorowane, aby wyeliminować z chmury krótkie, popularne słowa, takie jak „z”. Jednak ze względu na to, że wizualizujemy kluczowe frazy, mogą one nie zawierać słów zatrzymanych.

aktywowanie domyślnych słów zatrzymania

Przejdź nieco niżej w tym panelu, a następnie wyłącz opcje Obróć tekst i Tytuł.

aktywowanie trybu koncentracji uwagi

Wybierz narzędzie Tryb koncentracji uwagi w raporcie, aby lepiej przyjrzeć się naszej chmurze słów. Narzędzie rozwija chmurę słów, aby wypełnić cały obszar roboczy, jak pokazano poniżej.

Chmura słów

Korzystanie z innych funkcji

Usługa Azure AI Language udostępnia również analizę tonacji i wykrywanie języka. Wykrywanie języka jest szczególnie przydatne, gdy opinia klienta nie jest w języku angielskim.

Oba te interfejsy API są podobne do interfejsu API fraz kluczowych. Oznacza to, że możesz zintegrować je z aplikacją Power BI Desktop, używając funkcji niestandardowych, które są prawie identyczne z utworzonymi w ramach tego samouczka. Wystarczy jak poprzednio utworzyć puste zapytanie i wkleić do Edytora zaawansowanego odpowiedni kod podany poniżej. (Nie zapomnij o kluczu dostępu!) Następnie, tak jak wcześniej, użyj funkcji , aby dodać nową kolumnę do tabeli.

Poniższa funkcja Analiza tonacji zwraca etykietę wskazującą, jak pozytywna jest tonacja wyrażona w tekście.

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

Poniżej przedstawiono dwie wersje funkcji wykrywania języka. Pierwsza zwraca kod języka ISO (na przykład en w przypadku języka angielskiego), podczas gdy druga zwraca „przyjazną” nazwę (na przykład English). Można zauważyć, że obie wersje różnią się tylko ostatnim wierszem treści.

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

Na koniec przedstawiamy wariant już omówionej funkcji fraz kluczowych, który zwraca frazy w postaci obiektu listy, a nie pojedynczego ciągu fraz rozdzielonych przecinkami.

Uwaga

Zwracanie pojedynczego ciągu miało na celu uproszczenie naszego przykładu chmury słów. Jednak lista jest bardziej elastycznym formatem do pracy ze zwracanymi frazami w usłudze Power BI. Obiektami listy w programie Power BI Desktop można manipulować przy użyciu grupy Kolumna strukturalna na wstążce Przekształć Edytora zapytań.

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

Następne kroki

Dowiedz się więcej o języku azure AI, języku formuł Power Query M lub usłudze Power BI.