Składnik alokacji opóźnionego dirichletu
W tym artykule opisano sposób używania składnika Alokacja opóźnionego dirichletu w projektancie usługi Azure Machine Learning w celu grupowania w inny sposób niesklasyfikowanego tekstu na kategorie.
Utajona alokacja Dirichleta (LDA) jest często używana w przetwarzaniu języka naturalnego w celu znalezienia podobnych tekstów. Innym typowym terminem jest modelowanie tematów.
Ten składnik pobiera kolumnę tekstu i generuje następujące dane wyjściowe:
Tekst źródłowy wraz z oceną dla każdej kategorii
Macierz cech zawierająca wyodrębnione terminy i współczynniki dla każdej kategorii
Przekształcenie, które można zapisać i ponownie zastosować do nowego tekstu używanego jako dane wejściowe
Ten składnik używa biblioteki scikit-learn. Aby uzyskać więcej informacji na temat biblioteki scikit-learn, zobacz repozytorium GitHub, w tym samouczki i wyjaśnienie algorytmu.
Więcej informacji na temat utajenia alokacji dirichletu
LDA zazwyczaj nie jest metodą klasyfikacji. Jednak używa metody generowania, więc nie trzeba podawać znanych etykiet klas, a następnie wnioskować wzorce. Zamiast tego algorytm generuje model probabilistyczny używany do identyfikowania grup tematów. Możesz użyć modelu probabilistycznego do klasyfikowania istniejących przypadków trenowania lub nowych przypadków, które podajesz modelowi jako dane wejściowe.
Możesz preferować model generowania, ponieważ pozwala uniknąć podejmowania silnych założeń dotyczących relacji między tekstem a kategoriami. Używa tylko rozkładu wyrazów do tematów modelowania matematycznego.
Teoria została omówiona w tym dokumencie, dostępnym jako plik PDF do pobrania: Latent Dirichlet Allocation: Blei, Ng i Jordan.
Implementacja w tym składniku jest oparta na bibliotece scikit-learn dla LDA.
Aby uzyskać więcej informacji, zobacz sekcję Uwagi techniczne.
Jak skonfigurować utajniętą alokację dirichletu
Ten składnik wymaga zestawu danych zawierającego kolumnę tekstu, nieprzetworzoną lub wstępnie przetworzoną.
Dodaj składnik Opóźnionego alokacji dirichletu do potoku.
Na liście zasobów znajdujących się pod analiza tekstu przeciągnij i upuść składnik Utajnik alokacji Dirichlet na kanwę.
Jako dane wejściowe dla składnika podaj zestaw danych zawierający co najmniej jedną kolumnę tekstową.
W obszarze Kolumny docelowe wybierz co najmniej jedną kolumnę zawierającą tekst do przeanalizowania.
Można wybrać wiele kolumn, ale muszą być typu danych ciągu .
Ponieważ LDA tworzy dużą macierz funkcji na podstawie tekstu, zwykle analizujesz pojedynczą kolumnę tekstową.
W polu Liczba tematów do modelowania wprowadź liczbę całkowitą z zakresu od 1 do 1000, która wskazuje, ile kategorii lub tematów chcesz uzyskać od tekstu wejściowego.
Domyślnie tworzone są 5 tematów.
W przypadku N-gramów określ maksymalną długość N-gramów generowanych podczas tworzenia skrótów.
Wartość domyślna to 2, co oznacza, że są generowane zarówno bigramy, jak i unigramy.
Wybierz opcję Normalizuj, aby przekonwertować wartości wyjściowe na prawdopodobieństwa.
Zamiast przedstawiać przekształcone wartości jako liczby całkowite, wartości w danych wyjściowych i zestawie danych funkcji zostaną przekształcone w następujący sposób:
Wartości w zestawie danych będą reprezentowane jako prawdopodobieństwo, w którym
P(topic|document)
.Wartości w macierzy tematów funkcji będą reprezentowane jako prawdopodobieństwo, w którym
P(word|topic)
.
Uwaga
W projektancie usługi Azure Machine Learning biblioteka scikit-learn nie obsługuje już nienormalizowanych danych wyjściowych doc_topic_distr z wersji 0.19. W tym składniku parametr Normalize można zastosować tylko do danych wyjściowych macierzy tematów funkcji. Przekształcone dane wyjściowe zestawu danych są zawsze znormalizowane.
Wybierz opcję Pokaż wszystkie opcje, a następnie ustaw ją na WARTOŚĆ TRUE , jeśli chcesz ustawić następujące parametry zaawansowane.
Te parametry są specyficzne dla implementacji biblioteki LDA biblioteki scikit-learn. Istnieje kilka dobrych samouczków dotyczących LDA w scikit-learn, a także oficjalny dokument scikit-learn.
Parametr Rho. Podaj wcześniejsze prawdopodobieństwo rozrzedliwego rozkładu tematów. Ten parametr odpowiada parametrowi
topic_word_prior
sklearn. Użyj wartości 1 , jeśli spodziewasz się, że rozkład wyrazów jest płaski. Oznacza to, że wszystkie wyrazy są zakładane jako dostępne. Jeśli uważasz, że większość słów wydaje się rozrzedzona, możesz ustawić ją na niższą wartość.Parametr alfa. Określ wcześniejsze prawdopodobieństwo rozrzedżenia wag tematu dla dokumentu. Ten parametr odpowiada parametrowi
doc_topic_prior
sklearn.Szacowana liczba dokumentów. Wprowadź liczbę reprezentującą najlepsze oszacowanie liczby dokumentów (wierszy), które zostaną przetworzone. Ten parametr umożliwia składnikowi przydzielenie tabeli skrótów wystarczającego rozmiaru. Odpowiada on parametrowi
total_samples
w pliku scikit-learn.Rozmiar partii. Wprowadź liczbę wskazującą liczbę wierszy do uwzględnienia w każdej partii tekstu wysyłanej do modelu LDA. Ten parametr odpowiada parametrowi
batch_size
w środowisku scikit-learn.Początkowa wartość iteracji używana w harmonogramie aktualizacji uczenia. Określ wartość początkową, która obniża szybkość nauki dla wczesnych iteracji w uczeniu online. Ten parametr odpowiada parametrowi
learning_offset
w środowisku scikit-learn.Zasilanie stosowane do iteracji podczas aktualizacji. Wskazuje poziom mocy stosowanej do liczby iteracji w celu kontrolowania szybkości nauki podczas aktualizacji online. Ten parametr odpowiada parametrowi
learning_decay
w środowisku scikit-learn.Liczba przekazanych danych. Określ maksymalną liczbę cykli algorytmu na danych. Ten parametr odpowiada parametrowi
max_iter
w środowisku scikit-learn.
Wybierz opcję Utwórz słownik ngramów lub Utwórz słownik ngramów przed LDA, jeśli chcesz utworzyć listę n-gram w początkowym przekazaniu przed sklasyfikowaniem tekstu.
Jeśli wcześniej utworzysz słownik początkowy, możesz później użyć słownika podczas przeglądania modelu. Możliwość mapowania wyników na tekst, a nie indeksów liczbowych, jest ogólnie łatwiejsza do interpretacji. Jednak zapisanie słownika trwa dłużej i będzie używać dodatkowego magazynu.
W polu Maksymalny rozmiar słownika ngram wprowadź łączną liczbę wierszy, które można utworzyć w słowniku n-gram.
Ta opcja jest przydatna do kontrolowania rozmiaru słownika. Ale jeśli liczba ngramów w danych wejściowych przekracza ten rozmiar, mogą wystąpić kolizje.
Prześlij potok. Składnik LDA używa twierdzenia Bayesa, aby określić, które tematy mogą być skojarzone z poszczególnymi wyrazami. Wyrazy nie są skojarzone wyłącznie z żadnymi tematami ani grupami. Zamiast tego każdy n-gram ma poznane prawdopodobieństwo skojarzenia z dowolną z odnalezionych klas.
Wyniki
Składnik ma dwa dane wyjściowe:
Przekształcony zestaw danych: te dane wyjściowe zawierają tekst wejściowy, określoną liczbę odnalezionych kategorii i wyniki dla każdego przykładu tekstu dla każdej kategorii.
Macierz tematów funkcji: kolumna po lewej stronie zawiera funkcję wyodrębnionego tekstu. Kolumna dla każdej kategorii zawiera wynik dla tej funkcji w tej kategorii.
Przekształcenie LDA
Ten składnik generuje również przekształcenie LDA, które stosuje LDA do zestawu danych.
Możesz zapisać tę transformację i użyć jej ponownie dla innych zestawów danych. Ta technika może być przydatna w przypadku trenowania na dużym korpusie i ponownego użycia współczynników lub kategorii.
Aby ponownie użyć tej transformacji, wybierz ikonę Zarejestruj zestaw danych w prawym panelu składnika Opóźnij alokację dirichletu, aby zachować składnik w kategorii Zestawy danych na liście składników . Następnie możesz połączyć ten składnik ze składnikiem Zastosuj transformację , aby ponownie użyć tej transformacji .
Udoskonalanie modelu lub wyników LDA
Zazwyczaj nie można utworzyć pojedynczego modelu LDA, który spełnia wszystkie potrzeby. Nawet model zaprojektowany dla jednego zadania może wymagać wielu iteracji w celu zwiększenia dokładności. Zalecamy wypróbowanie wszystkich tych metod w celu ulepszenia modelu:
- Zmienianie parametrów modelu
- Używanie wizualizacji do zrozumienia wyników
- Uzyskiwanie opinii ekspertów w tej dziedzinie w celu ustalenia, czy wygenerowane tematy są przydatne
Miary jakościowe mogą być również przydatne do oceny wyników. Aby ocenić wyniki modelowania tematów, rozważ:
- Dokładność. Czy podobne elementy są naprawdę podobne?
- Różnorodność. Czy model może rozróżniać podobne elementy, jeśli jest to wymagane w przypadku problemu biznesowego?
- Skalowalność. Czy działa on w wielu kategoriach tekstowych, czy tylko w wąskiej domenie docelowej?
Często można poprawić dokładność modeli na podstawie LDA, używając przetwarzania języka naturalnego do czyszczenia, podsumowywania i upraszczania lub kategoryzowania tekstu. Na przykład następujące techniki, wszystkie obsługiwane w usłudze Azure Machine Learning, mogą zwiększyć dokładność klasyfikacji:
Zatrzymaj usuwanie wyrazów
Normalizacja wielkości liter
Lemmatyzacja lub usuwanie
Rozpoznawanie jednostek nazwanych
Aby uzyskać więcej informacji, zobacz Wstępne przetwarzanie tekstu.
W projektancie można również używać bibliotek języka R lub Python do przetwarzania tekstu: Wykonywanie skryptu języka R, Wykonywanie skryptu języka Python.
Uwagi techniczne
Ta sekcja zawiera szczegóły implementacji, porady i odpowiedzi na często zadawane pytania.
Szczegóły implementacji
Domyślnie rozkłady danych wyjściowych przekształconego zestawu danych i macierzy tematów funkcji są znormalizowane jako prawdopodobieństwa:
Przekształcony zestaw danych jest znormalizowany jako warunkowe prawdopodobieństwo tematów podanych w dokumencie. W tym przypadku suma każdego wiersza jest równa 1.
Macierz tematów funkcji jest znormalizowana jako warunkowe prawdopodobieństwo słów podanych w temacie. W tym przypadku suma każdej kolumny jest równa 1.
Napiwek
Czasami składnik może zwrócić pusty temat. Najczęściej przyczyną jest pseudolosowe inicjowanie algorytmu. Jeśli tak się stanie, możesz spróbować zmienić powiązane parametry. Na przykład zmień maksymalny rozmiar słownika N-gram lub liczbę bitów do użycia na potrzeby tworzenia skrótów funkcji.
Modelowanie LDA i tematu
Opóźniona alokacja dirichletu jest często używana do modelowania tematów opartych na zawartości, co w zasadzie oznacza uczenie kategorii z niesklasyfikowanego tekstu. W modelowaniu tematów opartych na zawartości tematu temat jest rozkładem wyrazów.
Załóżmy na przykład, że podano korpus przeglądów klientów, który zawiera wiele produktów. Tekst recenzji, które zostały przesłane przez klientów w czasie, zawiera wiele terminów, z których niektóre są używane w wielu tematach.
Temat, który identyfikuje proces LDA, może reprezentować przeglądy poszczególnych produktów lub może reprezentować grupę przeglądów produktów. Dla LDA sam temat jest tylko rozkładem prawdopodobieństwa w czasie dla zestawu wyrazów.
Warunki są rzadko wykluczane z jednego produktu. Mogą odnosić się do innych produktów lub być ogólnymi terminami, które mają zastosowanie do wszystkiego ("wielkie", "okropne"). Inne terminy mogą być wyrazami szumu. Jednak metoda LDA nie próbuje uchwycić wszystkich słów we wszechświecie ani zrozumieć, w jaki sposób słowa są powiązane, oprócz prawdopodobieństwa współ wystąpienia. Może grupować tylko wyrazy używane w domenie docelowej.
Po obliczeniu indeksów terminów miara podobieństwa na podstawie odległości porównuje poszczególne wiersze tekstu w celu określenia, czy dwa fragmenty tekstu są podobne. Na przykład może się okazać, że produkt ma wiele nazw, które są silnie skorelowane. Możesz też stwierdzić, że silnie negatywne terminy są zwykle skojarzone z konkretnym produktem. Możesz użyć miary podobieństwa, aby zidentyfikować powiązane terminy i utworzyć zalecenia.
Parametry składników
Nazwisko | Typ | Zakres | Opcjonalnie | Domyślny | opis |
---|---|---|---|---|---|
Kolumny docelowe | Wybór kolumny | Wymagania | StringFeature | Nazwa lub indeks kolumny docelowej. | |
Liczba tematów do modelowania | Integer | [1; 1000] | Wymagania | 5 | Modelowanie dystrybucji dokumentów względem N tematów. |
N-gramy | Integer | [1; 10] | Wymagania | 2 | Kolejność N-gramów generowanych podczas tworzenia skrótów. |
Normalizować | Wartość logiczna | True lub False | Wymagania | prawda | Normalizuj dane wyjściowe do prawdopodobieństwa. Przekształcony zestaw danych będzie P(topic|document), a macierz tematów funkcji będzie P(word|topic). |
Pokaż wszystkie opcje | Wartość logiczna | True lub False | Wymagania | Fałsz | Przedstawia dodatkowe parametry specyficzne dla biblioteki scikit-learn online LDA. |
Parametr Rho | Liczba zmiennoprzecinkowa | [0.00001; 1.0] | Ma zastosowanie po zaznaczeniu pola wyboru Pokaż wszystkie opcje | 0,01 | Słowo tematu przed dystrybucją. |
Parametr alfa | Liczba zmiennoprzecinkowa | [0.00001; 1.0] | Ma zastosowanie po zaznaczeniu pola wyboru Pokaż wszystkie opcje | 0,01 | Przed dystrybucją tematu dokumentu. |
Szacowana liczba dokumentów | Integer | [1; Int. MaxValue] | Ma zastosowanie po zaznaczeniu pola wyboru Pokaż wszystkie opcje | 1000 | Szacowana liczba dokumentów. Odpowiada parametrowi total_samples . |
Rozmiar partii | Integer | [1; 1024] | Ma zastosowanie po zaznaczeniu pola wyboru Pokaż wszystkie opcje | 32 | Rozmiar partii. |
Początkowa wartość iteracji używana w harmonogramie aktualizacji szybkości nauki | Integer | [0; Int. MaxValue] | Ma zastosowanie po zaznaczeniu pola wyboru Pokaż wszystkie opcje | 0 | Początkowa wartość, która obniża szybkość nauki dla wczesnych iteracji. Odpowiada parametrowi learning_offset . |
Zasilanie stosowane do iteracji podczas aktualizacji | Liczba zmiennoprzecinkowa | [0.0; 1.0] | Ma zastosowanie po zaznaczeniu pola wyboru Pokaż wszystkie opcje | 0.5 | Moc zastosowana do liczby iteracji w celu kontrolowania szybkości nauki. Odpowiada parametrowi learning_decay . |
Liczba iteracji treningowych | Integer | [1; 1024] | Ma zastosowanie po zaznaczeniu pola wyboru Pokaż wszystkie opcje | 25 | Liczba iteracji treningowych. |
Słownik kompilacji ngramów | Wartość logiczna | True lub False | Ma zastosowanie, gdy pole wyboru Pokaż wszystkie opcje nie jest zaznaczone | Prawda | Tworzy słownik ngramów przed obliczeniami LDA. Przydatne w przypadku inspekcji i interpretacji modelu. |
Maksymalny rozmiar słownika ngramu | Integer | [1; Int. MaxValue] | Ma zastosowanie, gdy opcja Build dictionary of ngrams ma wartość True | 20000 | Maksymalny rozmiar słownika ngramów. Jeśli liczba tokenów w danych wejściowych przekracza ten rozmiar, mogą wystąpić kolizje. |
Liczba bitów do użycia na potrzeby tworzenia skrótów funkcji. | Integer | [1; 31] | Ma zastosowanie, gdy pole wyboru Pokaż wszystkie opcje nie jest zaznaczone, a słownik kompilacji ngramów ma wartość False | 12 | Liczba bitów do użycia na potrzeby tworzenia skrótów funkcji. |
Tworzenie słownika ngramów przed LDA | Wartość logiczna | True lub False | Ma zastosowanie po zaznaczeniu pola wyboru Pokaż wszystkie opcje | Prawda | Tworzy słownik ngramów przed LDA. Przydatne w przypadku inspekcji i interpretacji modelu. |
Maksymalna liczba ngramów w słowniku | Integer | [1; Int. MaxValue] | Ma zastosowanie, gdy pole wyboru Pokaż wszystkie opcje jest zaznaczone, a opcja Build dictionary of ngrams ma wartość True | 20000 | Maksymalny rozmiar słownika. Jeśli liczba tokenów w danych wejściowych przekracza ten rozmiar, mogą wystąpić kolizje. |
Liczba bitów skrótu | Integer | [1; 31] | Ma zastosowanie, gdy pole wyboru Pokaż wszystkie opcje jest zaznaczone, a opcja Utwórz słownik ngramy ma wartość False | 12 | Liczba bitów do użycia podczas tworzenia skrótów funkcji. |
Następne kroki
Zobacz zestaw składników dostępnych dla usługi Azure Machine Learning.
Aby uzyskać listę błędów specyficznych dla składników, zobacz Wyjątki i kody błędów dla projektanta.