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
- Program Microsoft Power BI Desktop. Pobierz bezpłatnie.
- Konto platformy Microsoft Azure. Utwórz bezpłatne konto lub zaloguj się.
- Zasób języka. Jeśli go nie masz, możesz go utworzyć.
- Klucz zasobu języka wygenerowany podczas tworzenia zasobu.
- Komentarze klientów. Możesz użyć naszych danych przykładowych lub własnych danych. W tym samouczku przyjęto założenie, że używasz naszych danych przykładowych.
Ł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.
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.
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.
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.
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
.
Wybierz wstążkę Przekształć. W grupie Kolumny tekstowe na wstążce wybierz pozycję Scal kolumny. Zostanie wyświetlone okno dialogowe 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ą.
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.
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.
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.
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.
Wybierz pozycję Kontynuuj i wybierz Public
dla każdego źródła danych w oknie dialogowym. Następnie wybierz opcję Zapisz.
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.
Najpierw kliknij ikonę Word Cloud w panelu Wizualizacje.
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.
Przejdź nieco niżej w tym panelu, a następnie wyłącz opcje Obróć tekst i Tytuł.
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.
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.