Sdílet prostřednictvím


Model LDA (Latent Dirichlet Allocation)

Důležité

Podpora studia Machine Learning (Classic) skončí 31. srpna 2024. Doporučujeme do tohoto data přejít na službu Azure Machine Learning.

Od 1. prosince 2021 nebude možné vytvářet nové prostředky studia Machine Learning (Classic). Do 31. srpna 2024 můžete pokračovat v používání stávajících prostředků studia Machine Learning (Classic).

Dokumentace ke studiu ML (Classic) se vyřazuje z provozu a v budoucnu se nemusí aktualizovat.

K provedení VW LDA použijte knihovnu dostupné pro

kategorie: Analýza textu

Poznámka

platí pro: jenom Machine Learning Studio (classic)

podobné moduly přetažení jsou k dispozici v návrháři Azure Machine Learning.

Přehled modulu

tento článek popisuje, jak v Machine Learning studiu (classic) použít modul dirichletův pro přidělování latentních přihlášení k seskupení jiného neklasifikovaného textu do několika kategorií. Dirichletův (LDA) se často používá při zpracování přirozeného jazyka (NLP) k nalezení podobných textů. Dalším běžným termínem je modelování témat.

Tento modul přebírá sloupec textu a generuje tyto výstupy:

  • Zdrojový text spolu se skóre pro každou kategorii

  • Matice funkcí obsahující extrahované výrazy a koeficienty pro každou kategorii

  • Transformace, kterou můžete uložit a znovu použít na nový text použitý jako vstup

Vzhledem k tomu, že tento modul používá knihovnu dostupné pro, je velmi rychlá. další informace o pro dostupné najdete v části úložiště pro GitHub , které obsahují kurzy a vysvětlení algoritmu.

Další informace o Dirichletův přidělování latentních prostředků (LDA)

Obecně řečeno, LDA není metoda klasifikace za se, ale používá regenerační přístup. To znamená, že nemusíte zadávat známé jmenovky tříd a potom odvodit vzory. Místo toho algoritmus generuje model pravděpodobnostní, který se používá k identifikaci skupin témat. Pomocí modelu pravděpodobnostní můžete klasifikovat buď existující školicí případy, nebo nové případy, které do modelu zadáte jako vstup.

Tento regenerační model může být vhodnější, protože se vyhne vytváření jakýchkoli silných předpokladů týkajících se vztahu mezi textem a kategoriemi a používá pouze rozdělení slov na matematicky modelová témata.

Další informace najdete v části technické poznámky .

Jak nakonfigurovat Dirichletův přidělování latentních prostředků

Tento modul vyžaduje datovou sadu, která obsahuje sloupec textu, a to buď nezpracovaná, nebo předzpracovaná.

  1. Přidejte do experimentu modul Dirichletův pro přidělení latentních prostředků .

  2. Jako vstup pro modul zadejte datovou sadu obsahující jeden nebo více textových sloupců.

  3. Pro cílové sloupcevyberte jeden nebo více sloupců obsahujících text, který chcete analyzovat.

    Můžete zvolit více sloupců, ale musí být datového typu řetězec.

    Obecně platí, že vzhledem k tomu, že LDA vytvoří z textu celou matrici funkcí, obvykle budete analyzovat jeden textový sloupec.

  4. Pro počet témat pro modelzadejte celé číslo od 1 do 1000, které určuje, kolik kategorií nebo témat chcete ze vstupního textu odvodit.

    Ve výchozím nastavení se vytvoří 5 témat.

  5. U n-gramůzadejte maximální délku N-gramů vygenerovanou během generování hodnoty hash.

    Výchozí hodnota je 2, což znamená, že jsou vygenerovány bigrams i unigrams.

  6. Vyberte možnost normalizovat pro převod výstupních hodnot na pravděpodobnost. Proto místo reprezentace transformovaných hodnot jako celých čísel, hodnoty ve výstupu a datové sadě funkcí budou transformovány takto:

    • Hodnoty v datové sadě budou reprezentovány jako pravděpodobnost, kde P(topic|document) .

    • Hodnoty v matici tématu funkce budou vyjádřeny jako pravděpodobnost, kde P(word|topic) .

  7. Vyberte možnost, Zobrazit všechny možnostia pak ji nastavte na hodnotu true, pokud chcete zobrazit a následně nastavit další upřesňující parametry.

    Tyto parametry jsou specifické pro implementaci LDA pro dostupné. K dispozici jsou některé dobré kurzy o LDA ve službě pro dostupné online a oficiální wiki pro dostupné.

    V této ukázce najdete příklady ve verzi 8 a použití VW v Azure ml.

    • Parametr ró. Poskytněte předchozí pravděpodobnost pro řídkosti distribucí tématu. Odpovídá parametru VW lda_rho . Pokud očekáváte, že rozdělení slov je ploché, použijte hodnotu 1. To znamená, že všechna slova se předpokládají equiprobable. Pokud se domníváte, že se většina slov objevuje zhuštěně, můžete ji nastavit na mnohem nižší hodnotu.

    • Parametr alfa Určete předchozí pravděpodobnost pro řídkostii vah pro každé dokument. Odpovídá parametru VW lda_alpha .

    • Odhadovaný počet dokumentů Zadejte číslo, které představuje nejlepší odhad počtu dokumentů (řádků), které se budou zpracovávat. Díky tomu může modul přidělovat zatřiďovací tabulku s dostatečnou velikostí. lda_DOdpovídá parametru v pro dostupné.

    • Velikost dávky Zadejte číslo, které označuje počet řádků, které se mají zahrnout do každé dávky textu odeslané do pro dostupné. batch_szOdpovídá parametru v pro dostupné.

    • Počáteční hodnota iterace použitá v plánu aktualizace kurzů Zadejte počáteční hodnotu pro studijní frekvenci. initial_tOdpovídá parametru v pro dostupné.

    • K iteraci se aplikuje napájení během aktualizací. Označuje úroveň napájení použitou pro počet iterací během online aktualizací. power_tOdpovídá parametru v pro dostupné.

    • Počet průchodů daty. Zadejte počet pokusů, kolikrát se algoritmus v datech cyklicky přeskočí. epoch_sizeOdpovídá parametru v pro dostupné.

  8. Vyberte možnost, slovník sestavení ngrams nebo slovníku sestavení ngrams před LDA, pokud chcete vytvořit seznam n-gramů v počátečním průchodu před zařazením textu.

    Pokud vytvoříte počáteční slovník předem, můžete ho později použít při kontrole modelu. Schopnost mapovat výsledky na text, nikoli na číselné indexy, je obecně snazší pro výklad. Uložení slovníku ale trvá déle a bude používat další úložiště.

  9. Pro maximální velikost ngram slovníkuzadejte celkový počet řádků, které je možné vytvořit ve slovníku n-gramů.

    Tato možnost je užitečná pro řízení velikosti slovníku. Pokud však počet ngrams ve vstupu překračuje tuto velikost, může dojít k kolizí.

  10. Spusťte experiment. Modul LDA používá Bayes věta k určení toho, jaká témata můžou být přidružená k jednotlivým slovům. Slova nejsou výhradně přidružena k žádným tématům nebo skupinám; místo toho má každý n-gram zjištěnou pravděpodobnost přidružení k libovolné zjištěné třídě.

Výsledky

Modul má dva výstupy:

  • Transformovaná datová sada: obsahuje vstupní text a zadaný počet zjištěných kategorií spolu s skóre pro každý textový příklad každé kategorie.

  • Tabulka tématu funkce: sloupec umístěný nejvíce vlevo obsahuje funkci extrahovaný text a sloupec pro každou kategorii, který obsahuje skóre této funkce v této kategorii.

Podrobnosti najdete v příkladu výsledků LDA.

Transformace LDA

Tento modul také vyprodukuje transformaci , která se LDA aplikuje na datovou sadu, jako rozhraní ITransform.

Tuto transformaci můžete uložit a znovu použít pro jiné datové sady. To může být užitečné, pokud jste proučeni velké corpus a chcete znovu použít koeficienty nebo kategorie.

Úprava modelu nebo výsledků LDA

Typicky nemůžete vytvořit jeden model LDA, který bude vyhovovat všem potřebám, a dokonce i model navržený pro jeden úkol může vyžadovat mnoho iterací, aby se zlepšila přesnost. Doporučujeme, abyste si vyzkoušeli všechny tyto metody pro zlepšení modelu:

  • Změna parametrů modelu
  • Použití vizualizace k pochopení výsledků
  • Získání zpětné vazby odborníků na předmět, abyste zjistili, jestli jsou vygenerovaná témata užitečná.

Kvalitativní míry mohou být také užitečné pro vyhodnocení výsledků. Při vyhodnocování výsledků modelování témat zvažte následující:

  • Přesnost – jsou si podobné položky velmi podobné?
  • Rozmanitost – může model v případě potřeby obchodních problémů lišit mezi podobnými položkami?
  • Škálovatelnost – funguje na široké škále kategorií textu nebo pouze v úzké cílové doméně?

Přesnost modelů založených na protokolu LDA je často možné zlepšit použitím zpracování přirozeného jazyka k vyčištění, sumarizaci a zjednodušení nebo kategorizaci textu. Například následující techniky, které jsou podporovány v Machine Learning, mohou zlepšit přesnost klasifikace:

  • Zastavení odebrání slov

  • Normalizace případu

  • Lematizace nebo stemming

  • Rozpoznávání pojmenovaných entit

Další informace najdete v tématu Předběžné zpracování textua Rozpoznání pojmenovaných entit.

V nástroji Studio (classic) můžete také použít knihovny jazyka R nebo Python pro zpracování textu: spuštění skriptu jazyka R, spuštění skriptu jazyka Python

Příklady

Příklady analýzy textu najdete v těchto experimentech v Azure AI Gallery:

Podrobnosti a příklad založený na textu recenzí zákazníků najdete v tématu Vysvětlení výsledků testu LDA.

Příklad výsledků LDA

Pro ilustraci toho, jak funguje modul Latent Dirichlet Allocation, platí následující příklad LDA s výchozím nastavením na datovou sadu Book Review (Kontrola knihy) poskytovanou v Machine Learning Studiu (klasickém).

Zdrojová datová sada

Datová sada obsahuje sloupec hodnocení a také úplný text komentáře poskytovaný uživateli.

Tato tabulka obsahuje pouze několik reprezentativních příkladů.

text
Tato kniha má své dobré body. Pokud se něco stalo, pomůže vám to od nadřízeného říct, co chcete.
Připouštím, že jsem tuto knihu nedokončil. Přátelé mi to doporučili, protože mám problémy s režimu spánku...
Špatně napsaný jsem si tuto knihu vyzkoušel, ale zjistil jsem, že je tak choulený a špatně napsaný, že jsem ji z frustroval. ...
Vzhledem k tomu, že jsem si od přátel, kteří ji před několika lety procházeli, vypůjčil(a) kopii s uších psa, nemůžu získat své ruce k této knize, ze které se stala krátkodobá oblíbené jídlo.
Graf této knihy byl zajímavý a mohla by to být dobrá kniha. Bohužel to tak nebylo. Hlavním problémem pro mě bylo, že ...

Při zpracování vyčistí a analyzuje modul Latent Dirichlet Allocation text na základě parametrů, které zadáte. Může například automaticky tokenizovat text a odebrat interpunkci a zároveň najít textové funkce pro každé téma.

Transformovaná datová sada LDA

Následující tabulka obsahuje transformované datové sady na základě ukázky recenze knihy. Výstup obsahuje vstupní text a zadaný počet zjištěných kategorií spolu se skóre pro každou kategorii.

Název filmu Téma 1 Téma 2 Téma 3 Téma 4 Téma 5
Tato kniha má své dobré body 0.001652892 0.001652892 0.001652892 0.001652892 0.9933884
friend recommended it to me 0.00198019 0.001980198 0.9920791 0.001980198 0.001980198
pokusili jste se přečíst tuto knihu 0.002469135 0.002469135 0.9901233 0.002469135 0.002469135
vypůjčil si ho od přítele 0.9901232 0.002469135 0.002469135 0.002469135 0.002469135
graf této knihy byl zajímavý 0.001652892 0.001652892 0.9933884 0.001652892 0.001652892

V tomto příkladu jsme použili výchozí hodnotu 5 pro počet témat k modelování. Modul LDA proto vytvoří pět kategorií, u kterých můžeme předpokládat, že budou zhruba odpovídat původnímu systému hodnocení s pěti stupnicemi.

Modul také každému záznamu přiřadí skóre pro každou z pěti kategorií, které představují témata. Skóre označuje pravděpodobnost, že by měl být řádek přiřazen ke konkrétní kategorii.

Matice témat funkcí

Druhým výstupem modulu je matice témat funkce. Jedná se o tabulkovou datovou sadu, která obsahuje featurizovaný text ve sloupci Funkce spolu se skóre pro každou z kategorií ve zbývajících sloupcích Téma 1, Téma 2, ... Téma N. Skóre představuje koeficient.

Funkce Téma 1 Téma 2 Téma 3 Téma 4 Téma 5
Zajímavé 0.0240282071983144 0.0354678954779375 0.363051866576914 0.0276637824315893 0.660663576149515
Byl 0.0171478729532397 0.0823969031108669 0.00452966877950789 0.0408714510319233 0.025077322689733
z 0.0148224220349217 0.0505086981492109 0.00434423322461094 0.0273389126293824 0.0171484355106826
Znázorněte 0.0227415889348212 0.0408709456489325 0.182791041345191 0.086937090812819 1 0.0169680136708971
čtení 0.0227415889348212 0.0408709456489325 0.182791041345191 0.0869370908128191 0.0169680136708971
se pokusil 0.0269724979147211 0.039026263551767 0.00443749106785087 0.0628829816088284 0.0235340728818033
pamatovat 0.0262656945140134 0.0366941302751921 0.00656837975179138 0.0329214576160066 0.0214121851106808
na 0.0141026103224462 0.043359976919215 0.00388640531859447 0.0305925953440055 0.0228993750526364
její 0.0264490547105951 0.0356674440311847 0.00541759897864314 0.0314539386250293 0.0140606468587681
friend 0.0135971322960941 0.0346118171467234 0.00434999437350706 0.0666507321888536 0.018156863779311
points 0.0227415889348212 0.0396233855719081 0.00404663601474112 0.0381156510019025 0.0337788009496797
Dobré 0.651813073836783 0.0598646397444108 0.00446809691985617 0.0358975694646062 0.0138989124411206
svá 0.0185385588647078 0.144253986783184 0.00408876416453866 0.0583049240441475 0.015442805566858
z 0.0171416780245647 0.0559361180418586 0.0100633904544953 0.087093930106723 0.0182573833869842
vypůjčené 0.0171416780245647 0.0559361180418586 0.0100633904544953 0.087093930106723 0.0182573833869842
0.0171416780245647 0.0559361180418586 0.0100633904544953 0.087093930106723 0.0182573833869842
účetních 0.0143157047920681 0.069145948535052 0.184036340170983 0.0548757337823903 0.0156837976985903
doporučil 0.0161486848419689 0.0399143326399534 0.00550113530229642 0.028637149142764 0.0147675139039372
this 0.0161486848419689 0.0399143326399534 0.00550113530229642 0.028637149142764 0.0147675139039372

Technické poznámky

Tato část obsahuje podrobné informace o implementaci, tipy a odpovědi na nejčastější dotazy.

Podrobnosti o implementaci

Ve výchozím nastavení jsou distribuce výstupů pro transformovaná datová sada a témata funkcí a témat normalizovány jako pravděpodobnosti.

  • Transformovaná datová sada je normalizována jako podmíněná pravděpodobnost pro daný dokument. V tomto případě se součet každého řádku rovná 1.

  • Matice funkce – téma je normalizována jako podmíněná pravděpodobnost slov v daném tématu. V tomto případě se součet každého sloupce rovná 1.

Tip

V některých případech může modul vracet prázdné téma, které je nejčastěji způsobeno pseudo náhodným inicializací algoritmu. Pokud k tomu dojde, můžete zkusit změnit související parametry, jako je maximální velikost slovníku N-gramů, nebo počet bitů, které se mají použít pro funkci hashování funkcí.

LDA a modelování témat

Pro modelování tématu založené na obsahuse často používá latentní Dirichletův přidělování (LDA), které v podstatě znamená výukové kategorie z neklasifikovaného textu. V tématu modelování témat na základě obsahu je téma rozdělením do slov.

Předpokládejme například, že jste poskytli corpus recenze zákazníků, které obsahují mnoho různých produktů. Text revizí, které byly odeslány mnoha zákazníky v průběhu času, by obsahoval mnoho termínů, z nichž některé jsou používány ve více tématech.

Téma , které je identifikováno procesem LDA, může představovat recenze pro jednotlivé produkty a nebo může představovat skupinu revizí produktu. Do LDA, samotné téma je pouze rozdělení pravděpodobnosti v průběhu času pro sadu slov.

Podmínky jsou zřídka exkluzivní pro libovolný produkt, ale můžou odkazovat na jiné produkty nebo na obecné podmínky, které se vztahují na všechno ("Skvělé", "awful"). Jinými slovy můžou být hluková slova. Je však důležité pochopit, že metoda LDA neznamená, že zachytává všechna slova v celém universu, nebo pokud chcete pochopit, jakým způsobem se slova vztahují, mimo pravděpodobnost výskytu korelace. Může seskupit jenom slova, která se použila v cílové doméně.

Po vypočítání indexů jsou jednotlivé řádky textu porovnány pomocí míry podobnosti na základě vzdálenosti, aby bylo možné určit, zda jsou dva části textu navzájem podobné. Můžete například zjistit, že má produkt více názvů, které jsou silně korelační. Nebo se můžete setkat s tím, že silně záporné výrazy jsou obvykle spojeny s konkrétním produktem. Pomocí míry podobnosti můžete identifikovat související výrazy a vytvořit doporučení.

Očekávané vstupy

Název Typ Description
Datová sada Tabulka dat Vstupní datová sada

Parametry modulu

Název Typ Rozsah Volitelné Výchozí Description
Počet bitů hash Integer [1; 31] Platí v případě, že není zaškrtnuté políčko Zobrazit všechny možnosti . 12 Počet bitů, které se mají použít pro funkci hashování funkcí
Cílový sloupec (y) Výběr sloupce Vyžadováno StringFeature Název nebo index cílového sloupce
Počet témat pro model Integer [1; 1000] Vyžadováno 5 Modelování distribuce dokumentu před N tématy
N-gramů Integer [1; 10] Vyžadováno 2 Pořadí N-gramů generovaných během hashace
Normalizovat Logická hodnota Vyžadováno true Normalizuje výstup na pravděpodobnost. Transformovaný objekt DataSet bude P (téma | dokument) a matice tématu funkce budou P (Word | téma).
Zobrazit všechny možnosti Logická hodnota True nebo false Vyžadováno Ne Zobrazí další parametry specifické pro pro dostupné online LDA
Ró – parametr Float [0.00001; 1.0] Platí v případě, že je zaškrtnuto políčko Zobrazit všechny možnosti . 0,01 Ró – parametr
Parametr alfa Float [0.00001; 1.0] Platí v případě, že je zaškrtnuto políčko Zobrazit všechny možnosti . 0,01 Parametr alfa
Odhadovaný počet dokumentů Integer [1; int. MaxValue Platí v případě, že je zaškrtnuto políčko Zobrazit všechny možnosti . 1000 Odhadovaný počet dokumentů (odpovídá parametru lda_D)
Velikost dávky Integer [1; 1024] Platí v případě, že je zaškrtnuto políčko Zobrazit všechny možnosti . 32 Velikost dávky
Počáteční hodnota iterace použité v plánu aktualizace rychlosti učení Integer [0; int. MaxValue] Platí, když je zaškrtnuté políčko Zobrazit všechny možnosti. 0 Počáteční hodnota počtu iterací použitých v plánu aktualizace rychlosti učení (odpovídá initial_t parametru)
Napájení použité na iteraci během aktualizací Float [0.0;1.0] Platí, když je zaškrtnuté políčko Zobrazit všechny možnosti. 0,5 Výkon použitý na počet iterací během online aktualizací (odpovídá power_t parametru)
Počet iterací trénování Integer [1;1024] Platí, když je zaškrtnuté políčko Zobrazit všechny možnosti. 25 Počet iterací trénování
Sestavení slovníku ngramů Logická hodnota Pravda nebo nepravda Platí, když není zaškrtnuté políčko Zobrazit všechny možnosti. Ano Vytvoří slovník ngramů před výpočtem LDA. Užitečné pro kontrolu a interpretaci modelu
Počet bitů, které se mají použít pro hashování funkcí Integer [1;31] Platí, když má možnost Slovník sestavení ngramů hodnotu False. 12 Počet bitů, které se mají použít při hashování funkcí
Maximální velikost slovníku ngramů Integer [1; int. MaxValue] Platí, když má možnost Slovník sestavení ngramů hodnotu True. 20000 Maximální velikost slovníku ngrams. Pokud počet tokenů ve vstupu překročí tuto velikost, může dojít ke kolizím.
Sestavení slovníku ngramů před LDA Logická hodnota Pravda nebo nepravda Platí, když je zaškrtnuté políčko Zobrazit všechny možnosti. Ano Vytvoří slovník ngramů před LDA. Užitečné pro kontrolu a interpretaci modelu
Maximální počet ngramů ve slovníku Integer [1; int. MaxValue] Platí, když má možnost Sestavit slovník ngramů hodnotu True a je zaškrtnuté políčko Zobrazit všechny možnosti. 20000 Maximální velikost slovníku. Pokud počet tokenů ve vstupu překročí tuto velikost, může dojít ke kolizím.

Výstupy

Název Typ Description
Transformovaná datová sada Tabulka dat Výstupní datová sada
Matice témat funkcí Tabulka dat Matice témat funkcí vytvořená společností LDA
Transformace LDA ITransform – rozhraní Transformace, která aplikuje LDA na datovou sadu

Výjimky

Výjimka Description
Chyba 0002 K výjimce dochází v případě, že se nenašel jeden nebo více zadaných sloupců datové sady.
Chyba 0003 K výjimce dochází v případě, že jeden nebo více vstupů má hodnotu null nebo je prázdný.
Chyba 0004 K výjimce dochází, pokud je parametr menší nebo roven konkrétní hodnotě.
Chyba 0017 K výjimce dochází v případě, že aktuální modul nepodporuje jeden nebo více zadaných sloupců.

Seznam chyb specifických pro moduly sady Studio (classic) najdete v Machine Learning kódy chyb.

Seznam výjimek rozhraní API najdete v tématu Machine Learning REST API kódy chyb.

Viz také

Analýza textu
Hashování funkcí
Rozpoznávání pojmenovaných entit
Skóre modelu Vowpal Wabbit 7-4
Trénování modelu Vowpal Wabbit 7-4
Trénování modelu Vowpal Wabbit 8