Utajny składnik alokacji Dirichlet

W tym artykule opisano sposób użycia składnika utajnionej alokacji Dirichlet w projektancie usługi Azure Machine Learning w celu grupowania w inny sposób niesklasyfikowanego tekstu na kategorie.

Latent Dirichlet Allocation (LDA) jest często używany w przetwarzaniu języka naturalnego w celu znalezienia tekstów, które są podobne. 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 wywnioskować 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 Jordania.

Implementacja w tym składniku jest oparta na bibliotece scikit-learn dla LDA.

Aby uzyskać więcej informacji, zobacz sekcję Informacje techniczne .

Jak skonfigurować utajną alokację dirichletu

Ten składnik wymaga zestawu danych zawierającego kolumnę tekstu, nieprzetworzoną lub wstępnie przetworzoną.

  1. Dodaj składnik utajenia alokacji Dirichlet do potoku.

    Na liście zasobów w obszarze analiza tekstu przeciągnij i upuść składnik Utajnik alokacji Dirichleta na kanwę.

  2. Jako dane wejściowe dla składnika podaj zestaw danych zawierający co najmniej jedną kolumnę tekstową.

  3. W obszarze Kolumny docelowe wybierz co najmniej jedną kolumnę zawierającą tekst do przeanalizowania.

    Możesz wybrać wiele kolumn, ale muszą być typu danych ciągu .

    Ponieważ LDA tworzy dużą macierz cech na podstawie tekstu, zwykle analizujesz pojedynczą kolumnę tekstową.

  4. 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 pochodzić z tekstu wejściowego.

    Domyślnie tworzone są 5 tematów.

  5. 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.

  6. 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ż nieznormalizowanego doc_topic_distr danych wyjściowych 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.

  7. Wybierz opcję Pokaż wszystkie opcje, a następnie ustaw dla niej 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 na temat LDA w scikit-learn, a także oficjalny dokument scikit-learn.

    • Rho parametr. Podaj wcześniejsze prawdopodobieństwo rozrzedu rozkładów 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 słowa są zakładane wyposażenie. Jeśli uważasz, że większość wyrazów wydaje się rzadko, 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ę, która reprezentuje najlepsze oszacowanie liczby dokumentów (wierszy), które zostaną przetworzone. Ten parametr umożliwia składnikowi przydzielenie tabeli skrótów o wystarczającym rozmiarze. Odpowiada on parametrowi w narzędziu total_samples 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 pliku 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 pliku scikit-learn.

    • Zasilanie stosowane do iteracji podczas aktualizacji. Wskazuje poziom mocy zastosowanej do liczby iteracji w celu kontrolowania szybkości nauki podczas aktualizacji online. Ten parametr odpowiada parametrowi learning_decay w pliku scikit-learn.

    • Liczba przekazanych danych. Określ maksymalną liczbę cykli algorytmu dla danych. Ten parametr odpowiada parametrowi max_iter w pliku scikit-learn.

  8. 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 przebiegu 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 zamiast indeksów liczbowych jest ogólnie łatwiejsza do interpretacji. Jednak zapisanie słownika będzie trwać dłużej i będzie używać dodatkowego magazynu.

  9. W polu Maksymalny rozmiar słownika ngram wprowadź całkowitą 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.

  10. Prześlij potok. Składnik LDA używa twierdzenia Bayesa do określenia, 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 oraz wyniki dla każdego przykładu tekstu dla każdej kategorii.

  • Macierz tematów funkcji: najbardziej lewa kolumna 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ć to przekształcenie i użyć go ponownie dla innych zestawów danych. Ta technika może być przydatna w przypadku wytrenowania 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 Utajnik alokacji Dirichlet, 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 przekształcenie , 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 danej 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ż następujące kwestie:

  • Dokładność. Czy podobne elementy są naprawdę podobne?
  • Różnorodności. Czy model może rozróżniać podobne elementy, jeśli jest to wymagane dla problemu biznesowego?
  • Skalowalność. Czy działa on w szerokim zakresie kategorii tekstu, czy tylko w wąskiej domenie docelowej?

Często można poprawić dokładność modeli opartych na 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 łodyga

  • Rozpoznawanie jednostek nazwanych

Aby uzyskać więcej informacji, zobacz Preprocess Text (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 dla 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 cech jest znormalizowana jako warunkowe prawdopodobieństwo słów podanych w temacie. W tym przypadku suma każdej kolumny jest równa 1.

Porada

Czasami składnik może zwrócić pusty temat. Najczęściej przyczyną jest pseudolosowe inicjowanie algorytmu. W takim przypadku 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 się kategorii z tekstu niesklasyfikowanego. W modelowaniu tematów opartych na zawartości temat tematu temat jest rozkładem wyrazów.

Załóżmy na przykład, że podano korpus recenzji 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 zidentyfikowany przez 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 dostępne wyłącznie dla każdego 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 przechwycić 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, aby określić, czy dwa fragmenty tekstu są podobne. Na przykład może się okazać, że produkt ma wiele nazw, które są silnie skorelowane. Może się też okazać, że silnie negatywne terminy są zwykle skojarzone z konkretnym produktem. Miarę podobieństwa można użyć zarówno do identyfikowania powiązanych terminów, jak i do tworzenia rekomendacji.

Parametry składników

Nazwa Typ Zakres Opcjonalne Domyślny Opis
Kolumny docelowe Wybór kolumny Wymagane StringFeature Nazwa kolumny docelowej lub indeks.
Liczba tematów do modelowania Liczba całkowita [1;1000] Wymagane 5 Modelowanie dystrybucji dokumentów względem N tematów.
N-gramy Liczba całkowita [1;10] Wymagane 2 Kolejność N-gramów generowanych podczas tworzenia skrótów.
Normalizacji Wartość logiczna Prawda czy fałsz Wymagane true Normalizuj dane wyjściowe do prawdopodobieństwa. Przekształcony zestaw danych to P(topic|document), a macierz tematu funkcji to P(word|topic).
Pokaż wszystkie opcje Wartość logiczna Prawda czy fałsz Wymagane Fałsz Przedstawia dodatkowe parametry specyficzne dla biblioteki scikit-learn online LDA.
Parametr Rho Float [0.00001;1.0] Ma zastosowanie, gdy pole wyboru Pokaż wszystkie opcje jest zaznaczone 0,01 Przed dystrybucją wyrazu tematu.
Parametr alfa Float [0.00001;1.0] Ma zastosowanie, gdy pole wyboru Pokaż wszystkie opcje jest zaznaczone 0,01 Poprzednia dystrybucja tematu dokumentu.
Szacowana liczba dokumentów Liczba całkowita [1;int. MaxValue] Ma zastosowanie, gdy pole wyboru Pokaż wszystkie opcje jest zaznaczone 1000 Szacowana liczba dokumentów. Odpowiada parametrowi total_samples .
Rozmiar partii Liczba całkowita [1;1024] Ma zastosowanie, gdy pole wyboru Pokaż wszystkie opcje jest zaznaczone 32 Rozmiar partii.
Początkowa wartość iteracji używana w harmonogramie aktualizacji szybkości nauki Liczba całkowita [0;int. MaxValue] Ma zastosowanie, gdy pole wyboru Pokaż wszystkie opcje jest zaznaczone 0 Początkowa wartość, która obniża szybkość nauki dla wczesnych iteracji. Odpowiada parametrowi learning_offset .
Moc zastosowana do iteracji podczas aktualizacji Float [0.0;1.0] Ma zastosowanie, gdy pole wyboru Pokaż wszystkie opcje jest zaznaczone 0,5 Moc zastosowana do liczby iteracji w celu kontrolowania szybkości nauki. Odpowiada parametrowi learning_decay .
Liczba iteracji treningowych Liczba całkowita [1;1024] Ma zastosowanie, gdy pole wyboru Pokaż wszystkie opcje jest zaznaczone 25 Liczba iteracji treningowych.
Słownik kompilacji ngramów Wartość logiczna Prawda czy fałsz Ma zastosowanie, gdy pole wyboru Pokaż wszystkie opcjenie jest zaznaczone Prawda Tworzy słownik ngramów przed przetwarzaniem LDA. Przydatne w przypadku inspekcji i interpretacji modelu.
Maksymalny rozmiar słownika ngramu Liczba całkowita [1;int. MaxValue] Ma zastosowanie, gdy opcja Skompiluj słownik ngramów 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. Liczba całkowita [1;31] Ma zastosowanie, gdy pole wyboru Pokaż wszystkie opcjenie 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 Prawda czy fałsz Ma zastosowanie, gdy pole wyboru Pokaż wszystkie opcje jest zaznaczone Prawda Tworzy słownik ngramów przed LDA. Przydatne w przypadku inspekcji i interpretacji modelu.
Maksymalna liczba ngramów w słowniku Liczba całkowita [1;int. MaxValue] Dotyczy zaznaczenia pola wyboru Pokaż wszystkie opcje , a opcja Skompiluj słownik ngramów 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 Liczba całkowita [1;31] Dotyczy zaznaczenia pola wyboru Pokaż wszystkie opcje , a opcja Skompiluj słownik ngramów 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.