Latent Dirichlet-allokering

Viktigt

Stödet för Machine Learning Studio (klassisk) upphör den 31 augusti 2024. Vi rekommenderar att du byter till Azure Machine Learning innan dess.

Från och med den 1 december 2021 kan du inte längre skapa nya Machine Learning Studio-resurser (klassisk). Du kan fortsätta att använda befintliga Machine Learning Studio-resurser (klassisk) till och med den 31 augusti 2024.

Dokumentationen om ML Studio (klassisk) håller på att dras tillbaka och kanske inte uppdateras i framtiden.

Använda Vowpal Wabbit-biblioteket för att utföra VW LDA

Kategori: Textanalys

Anteckning

Gäller endast för: Machine Learning Studio (klassisk)

Liknande dra och släpp-moduler är tillgängliga i Azure Machine Learning designer.

Modulöversikt

I den här artikeln beskrivs hur du använder allokeringsmodulen Latent Dirichlet i Machine Learning Studio (klassisk) för att gruppera annars oklassificerad text i ett antal kategorier. Latent Dirichlet Allocation (LDA) används ofta i bearbetning av naturligt språk (NLP) för att hitta text som liknar varandra. En annan vanlig term är ämnesmodellering.

Den här modulen tar en kolumn med text och genererar dessa utdata:

  • Källtexten, tillsammans med en poäng för varje kategori

  • En funktionsmatris som innehåller extraherade termer och koefficienter för varje kategori

  • En transformering som du kan spara och tillämpa på nytt på ny text som används som indata

Eftersom den här modulen använder Vowpal Wabbit-biblioteket går det mycket snabbt. Mer information om Vowpal Wabbit finns i GitHub lagringsplats som innehåller självstudier och en förklaring av algoritmen.

Mer om Latent Dirichlet Allocation (LDA)

Generellt sett är LDA inte en klassificeringsmetod i sig, utan en generativ metod. Det innebär att du inte behöver ange kända klassetiketter och sedan dra slutsatsen av mönstren. I stället genererar algoritmen en probabilistisk modell som används för att identifiera grupper av ämnen. Du kan använda den probabilistiska modellen för att klassificera befintliga träningsfall eller nya ärenden som du anger till modellen som indata.

En generativ modell kan vara att föredra eftersom den undviker att göra starka antaganden om relationen mellan texten och kategorierna och endast använder fördelningen av ord för att matematiskt modellera ämnen.

Mer information finns i avsnittet Tekniska anteckningar.

Så här konfigurerar du Latent Dirichlet-allokering

Den här modulen kräver en datauppsättning som innehåller en kolumn med text, antingen rå eller förbearbetad.

  1. Lägg till allokeringsmodulen Latent Dirichlet i experimentet.

  2. Ange en datauppsättning som innehåller en eller flera textkolumner som indata för modulen.

  3. För Målkolumner väljer du en eller flera kolumner som innehåller text som ska analyseras.

    Du kan välja flera kolumner, men de måste vara av strängdatatypen.

    Eftersom LDA skapar en stor funktionsmatris från texten analyserar du vanligtvis en enskild textkolumn.

  4. För Antal ämnen att modellera skriver du ett heltal mellan 1 och 1 000 som anger hur många kategorier eller ämnen du vill härleda från indatatexten.

    Som standard skapas 5 ämnen.

  5. För N-gram anger du den maximala längden på N-gram som genereras vid hashning.

    Standardvärdet är 2, vilket innebär att både bigrams och unigram genereras.

  6. Välj alternativet Normalize ( Normalisera) för att konvertera utdatavärden till sannolikheter. I stället för att representera de transformerade värdena som heltal omvandlas därför värdena i utdata- och funktionsdatauppsättningen på följande sätt:

    • Värden i datamängden representeras som en sannolikhet där P(topic|document).

    • Värden i funktionsämnesmatrisen representeras som en sannolikhet där P(word|topic).

  7. Välj alternativet Visa alla alternativ och ställ sedan in det på TRUE om du vill visa och ange ytterligare avancerade parametrar.

    Dessa parametrar är specifika för Vowpal Wabbit-implementeringen av LDA. Det finns några bra självstudier om LDA i Vowpal Wabbit online, samt den officiella Vowpal Wabbit Wiki.

    Se det här exemplet för exempel i version 8 och användning av VW i Azure ML.

    • Parametern Rho. Ange en a prioritetssannolikhet för glesa ämnesfördelningar. Motsvarar VW-parametern lda_rho . Du skulle använda värdet 1 om du förväntar dig att fördelningen av ord är platt. Det innebär att alla ord antas vara bra att använda. Om du tror att de flesta ord verkar glesa kan du ange det till ett mycket lägre värde.

    • Alfaparameter. Ange en a prioritetssannolikhet för glesa ämnesvikter per dokument. Motsvarar VW-parametern lda_alpha .

    • Beräknat antal dokument. Skriv ett tal som representerar din bästa uppskattning av antalet dokument (rader) som ska bearbetas. Detta gör att modulen kan allokera en hash-tabell med tillräcklig storlek. Motsvarar parametern lda_D i Vowpal Wabbit.

    • Batchens storlek. Skriv ett tal som anger hur många rader som ska inkluderas i varje textbatch som skickas till Vowpal Wabbit. Motsvarar parametern batch_sz i Vowpal Wabbit.

    • Startvärdet för iterationen som används i uppdateringsschemat för inlärning. Ange startvärdet för inlärningstakten. Motsvarar parametern initial_t i Vowpal Wabbit.

    • Ström som tillämpas på iterationen under uppdateringar. Ange den energinivå som tillämpas på iterationsantalet under onlineuppdateringar. Motsvarar parametern power_t i Vowpal Wabbit.

    • Antal data som passerar. Ange hur många gånger algoritmen ska växla mellan data. Motsvarar parametern epoch_size i Vowpal Wabbit.

  8. Välj alternativet Build dictionary of ngrams (Skapa ordlista för ngram) eller Build dictionary of ngrams prior to LDA (Skapa ordlista med ngram) före LDA om du vill skapa n-gramlistan i en inledande passning innan du klassificerar text.

    Om du skapar den första ordlistan i förväg kan du senare använda ordlistan när du granskar modellen. Att kunna mappa resultat till text i stället för numeriska index är vanligtvis enklare för tolkning. Det tar dock längre tid att spara ordlistan och ytterligare lagringsutrymme används.

  9. För Maximal storlek på ngram-ordlistan anger du det totala antalet rader som kan skapas i n-gram-ordlistan.

    Det här alternativet är användbart för att kontrollera storleken på ordlistan. Men om antalet ngram i indata överskrider den här storleken kan kollisioner uppstå.

  10. Kör experimentet. LDA-modulen använder Bayes-sats för att avgöra vilka ämnen som kan associeras med enskilda ord. Ord är inte uteslutande associerade med ämnen eller grupper. I stället har varje n-gram en inlärd sannolikhet att associeras med någon av de identifierade klasserna.

Resultat

Modulen har två utdata:

  • Transformerad datauppsättning: Innehåller indatatexten och ett angivet antal identifierade kategorier, tillsammans med poängen för varje textexempel för varje kategori.

  • Funktionsämnesmatris: Kolumnen längst till vänster innehåller den extraherade textfunktionen och det finns en kolumn för varje kategori som innehåller poängen för den funktionen i den kategorin.

Mer information finns i Exempel på LDA-resultat.

LDA-transformering

Den här modulen matar även ut den transformering som tillämpar LDA på datauppsättningen som ett ITransform-gränssnitt.

Du kan spara den här transformeringen och använda den på andra datauppsättningar. Detta kan vara användbart om du har tränat på en stor corpus och vill återanvända koefficienterna eller kategorierna.

Förfina en LDA-modell eller resultat

Vanligtvis kan du inte skapa en enda LDA-modell som uppfyller alla behov, och även en modell som är utformad för en uppgift kan kräva många iterationer för att förbättra noggrannheten. Vi rekommenderar att du provar alla dessa metoder för att förbättra din modell:

  • Ändra modellparametrarna
  • Använda visualisering för att förstå resultaten
  • Få feedback från ämnesexperter för att avgöra om de genererade ämnena är användbara.

Kvalitativa mått kan också vara användbara för att utvärdera resultatet. Om du vill utvärdera resultatet av ämnesmodellering bör du tänka på följande:

  • Noggrannhet – Liknar liknande objekt varandra?
  • Mångfald – Kan modellen skilja mellan liknande objekt när det behövs för affärsproblemet?
  • Skalbarhet – Fungerar det i en mängd olika textkategorier eller bara på en smal måldomän?

Precisionen för modeller som baseras på LDA kan ofta förbättras genom att använda bearbetning av naturligt språk för att rensa, sammanfatta och förenkla eller kategorisera text. Följande tekniker, som alla stöds i Machine Learning, kan förbättra klassificeringsprecisionen:

  • Stoppa ordborttagning

  • Fall normalisering

  • Lemmatisering eller ordstamsigenkänning

  • Igenkänning av namngiven enhet

Mer information finns i Förbearbeta textoch Igenkänning av namngiven entitet.

I Studio (klassisk) kan du också använda R- eller Python-bibliotek för textbearbetning: Köra R-skript, Köra Python-skript

Exempel

Exempel på textanalys finns i dessa experiment i Azure AI Gallery:

  • Kör Python-skript: Använder bearbetning av naturligt språk i Python för att rensa och transformera text.

Mer information och ett exempel baserat på kundgranskningstext finns i Understanding LDA Results (Förstå LDA-resultat).

Exempel på LDA-resultat

För att illustrera hur allokeringsmodulen Latent Dirichlet fungerar tillämpar följande exempel LDA med standardinställningarna för datauppsättningen Book Review i Machine Learning Studio (klassisk).

Källdatauppsättning

Datamängden innehåller en klassificeringskolumn samt den fullständiga kommentarstext som tillhandahålls av användarna.

Den här tabellen visar bara några representativa exempel.

text
Den här boken har sina bra punkter. Om något hjälper det dig att uttrycka vad du vill från en övervakare.
Jag medger att jag inte har slutfört den här boken. En vän rekommenderade det för mig eftersom jag har problem med insomna...
Dåligt skriven Jag försökte läsa den här boken men tycker att den är så nedsnömd och dåligt skriven att jag sätter ner den i frustration. ...
Eftersom jag lånade en hundörad kopia från vänner som skickade den för ett antal år sedan, har jag inte kunnat få tag på den här boken som blev en kortvarig favorit
Den här bokens diagram var intressant och kunde ha varit en bra bok. Tyvärr var det inte det. Det största problemet för mig var att ...

Under bearbetningen rensar och analyserar både Latent Dirichlet Allocation-modulen texten baserat på de parametrar som du anger. Den kan till exempel automatiskt tokenisera texten och ta bort skiljetecken och samtidigt hitta textfunktionerna för varje ämne.

LDA-transformerad datauppsättning

Följande tabell innehåller den transformerade datauppsättningen , baserat på book review-exemplet. Utdata innehåller indatatexten och ett angivet antal identifierade kategorier, tillsammans med poängen för varje kategori.

Filmnamn Ämne 1 Ämne 2 Ämne 3 Ämne 4 Ämne 5
den här boken har sina bra punkter 0.001652892 0.001652892 0.001652892 0.001652892 0.9933884
vän rekommenderade det till mig 0.00198019 0.001980198 0.9920791 0.001980198 0.001980198
försökte läsa den här boken 0.002469135 0.002469135 0.9901233 0.002469135 0.002469135
låna den från vän 0.9901232 0.002469135 0.002469135 0.002469135 0.002469135
ritytan för den här boken var intressant 0.001652892 0.001652892 0.9933884 0.001652892 0.001652892

I det här exemplet använde vi standardvärdet 5 för Antal ämnen att modellera. Därför skapar LDA-modulen fem kategorier, som vi kan anta kommer att motsvara ungefär det ursprungliga femskaliga klassificeringssystemet.

Modulen tilldelar också en poäng till varje post för var och en av de fem kategorier som representerar ämnen. En poäng anger sannolikheten att raden ska tilldelas till en viss kategori.

Matris för funktionsämne

Modulens andra utdata är funktionsämnesmatrisen. Det här är en tabelldatamängd som innehåller den funktionaliserade texten, , i kolumnfunktionen , tillsammans med en poäng för var och en av kategorierna, i de återstående kolumnerna Ämne 1, Ämne 2, ... Ämne N. Poängen representerar koefficienten.

Funktion Ämne 1 Ämne 2 Ämne 3 Ämne 4 Ämne 5
Intressant 0.0240282071983144 0.0354678954779375 0.363051866576914 0.0276637824315893 0.660663576149515
Var 0.0171478729532397 0.0823969031108669 0.00452966877950789 0.0408714510319233 0.025077322689733
Från 0.0148224220349217 0.0505086981492109 0.00434423322461094 0.0273389126293824 0.0171484355106826
Tomt 0.0227415889348212 0.0408709456489325 0.182791041345191 0.086937090812819 1 0.0169680136708971
läsning 0.0227415889348212 0.0408709456489325 0.182791041345191 0.0869370908128191 0.0169680136708971
Försökt 0.0269724979147211 0.039026263551767 0.00443749106785087 0.0628829816088284 0.0235340728818033
Mig 0.0262656945140134 0.0366941302751921 0.00656837975179138 0.0329214576160066 0.0214121851106808
0.0141026103224462 0.043359976919215 0.00388640531859447 0.0305925953440055 0.0228993750526364
it 0.0264490547105951 0.0356674440311847 0.00541759897864314 0.0314539386250293 0.0140606468587681
Vän 0.0135971322960941 0.0346118171467234 0.00434999437350706 0.0666507321888536 0.018156863779311
points 0.0227415889348212 0.0396233855719081 0.00404663601474112 0.0381156510019025 0.0337788009496797
Bra 0.651813073836783 0.0598646397444108 0.00446809691985617 0.0358975694646062 0.0138989124411206
Dess 0.0185385588647078 0.144253986783184 0.00408876416453866 0.0583049240441475 0.015442805566858
av 0.0171416780245647 0.0559361180418586 0.0100633904544953 0.087093930106723 0.0182573833869842
Lånat 0.0171416780245647 0.0559361180418586 0.0100633904544953 0.087093930106723 0.0182573833869842
Hsa 0.0171416780245647 0.0559361180418586 0.0100633904544953 0.087093930106723 0.0182573833869842
bok 0.0143157047920681 0.069145948535052 0.184036340170983 0.0548757337823903 0.0156837976985903
Rekommenderas 0.0161486848419689 0.0399143326399534 0.00550113530229642 0.028637149142764 0.0147675139039372
denna 0.0161486848419689 0.0399143326399534 0.00550113530229642 0.028637149142764 0.0147675139039372

Teknisk information

Det här avsnittet innehåller implementeringsinformation, tips och svar på vanliga frågor.

Implementeringsdetaljer

Som standard normaliseras distributionerna av utdata för transformerade datauppsättningar och funktionsämnesmatriser som sannolikheter.

  • Den transformerade datamängden normaliseras som villkorsstyrd sannolikhet för ämnen som ges ett dokument. I det här fallet är summan av varje rad lika med 1.

  • Funktionsämnesmatrisen normaliseras som den villkorliga sannolikheten för ord som ges ett ämne. I det här fallet är summan av varje kolumn lika med 1.

Tips

Ibland kan modulen returnera ett tomt ämne, vilket oftast orsakas av pseudoslump-initieringen av algoritmen. Om detta inträffar kan du prova att ändra relaterade parametrar, till exempel den maximala storleken på N-gram-ordlistan eller antalet bitar som ska användas för funktions-hashning.

LDA och ämnesmodellering

Latent Dirichlet Allocation (LDA) används ofta för innehållsbaserad ämnesmodellering, vilket i princip innebär att lära sig kategorier från oklassificerad text. I innehållsbaserad ämnesmodellering är ett ämne en fördelning över ord.

Anta till exempel att du har angett en korpus av kundrecensioner som innehåller många, många produkter. Texten med recensioner som har skickats in av många kunder över tid skulle innehålla många termer, varav vissa används i flera ämnen.

Ett ämne som identifieras av LDA-processen kan representera recensioner för en enskild produkt A, eller så kan det representera en grupp med produktgranskningar. För LDA är själva ämnet bara en sannolikhetsfördelning över tid för en uppsättning ord.

Termer är sällan exklusiva för en produkt, men kan referera till andra produkter eller vara allmänna termer som gäller för allt ("bra", "kul"). Andra termer kan vara brusord. Det är dock viktigt att förstå att LDA-metoden inte tillåter att alla ord fångas in i universum, eller att förstå hur ord är relaterade, förutom sannolikheter för sam förekomst. Den kan bara gruppera ord som användes i måldomänen.

När termen index har beräknats jämförs enskilda rader med text med hjälp av ett avståndsbaserat likhetsmått för att avgöra om två textdelar är som varandra. Du kan till exempel se att produkten har flera namn som är starkt korrelerade. Eller så kanske du upptäcker att starkt negativa termer vanligtvis är associerade med en viss produkt. Du kan använda likhetsmåttet både för att identifiera relaterade termer och för att skapa rekommendationer.

Förväntade indata

Namn Typ Description
Datamängd Datatabell Indatauppsättning

Modulparametrar

Namn Typ Intervall Valfritt Standardvärde Description
Antal hash-bitar Integer [1;31] Gäller när kryssrutan Visa alla alternativ inte är markerad 12 Antal bitar som ska användas för funktions-hashning
Målkolumner Kolumnval Obligatorisk StringFeature Målkolumnens namn eller index
Antal ämnen att modellera Integer [1;1000] Obligatorisk 5 Modellera dokumentdistributionen mot N-ämnen
N-gram Integer [1;10] Obligatorisk 2 Ordningen på N-gram som genererades vid hashning
Normalisera Boolesk Obligatorisk true Normalisera utdata till sannolikheter. Den transformerade datamängden blir P(topic|document) och funktionsämnesmatrisen blir P(word|topic).
Visa alla alternativ Boolesk Sant eller falskt Obligatorisk Falskt Presenterar ytterligare parametrar som är specifika för Vowpal Wabbit online LDA
Parametern Rho Float [0.00001;1.0] Gäller när kryssrutan Visa alla alternativ är markerad 0,01 Parametern Rho
Alfaparameter Float [0.00001;1.0] Gäller när kryssrutan Visa alla alternativ är markerad 0,01 Alfaparameter
Beräknat antal dokument Integer [1;int. MaxValue] Gäller när kryssrutan Visa alla alternativ är markerad 1000 Beräknat antal dokument (motsvarar lda_D parameter)
Batchens storlek Integer [1;1024] Gäller när kryssrutan Visa alla alternativ är markerad 32 Batchens storlek
Startvärdet för iterationen som används i uppdateringsschemat för inlärningstakt Integer [0;int. MaxValue] Gäller när kryssrutan Visa alla alternativ är markerad 0 Startvärdet för det iterationsantal som används i uppdateringsschemat för inlärningstakt (motsvarar initial_t parameter)
Ström som tillämpas på iterationen under uppdateringar Float [0.0;1.0] Gäller när kryssrutan Visa alla alternativ är markerad 0,5 Kraft som tillämpas på iterationsantalet under onlineuppdateringar (motsvarar power_t parameter)
Antal tränings iterationer Integer [1;1024] Gäller när kryssrutan Visa alla alternativ är markerad 25 Antal tränings iterationer
Skapa ordlista med ngram Boolesk Sant eller falskt Gäller när kryssrutan Visa alla alternativ inte är markerad Sant Skapar en ordlista med ngram före beräkning av LDA. Användbart för modellgranskning och tolkning
Antal bitar som ska användas för funktions-hashning Integer [1;31] Gäller när alternativet Build-ordlistan för ngram är False 12 Antal bitar som ska användas vid funktionshashing
Maximal storlek på ngram-ordlista Integer [1;int. MaxValue] Gäller när alternativet Build-ordlistan för ngram är True 20000 Maximal storlek på ngram-ordlistan. Om antalet token i indata överskrider den här storleken kan kollisioner uppstå
Skapa ordlista med ngram före LDA Boolesk Sant eller falskt Gäller när kryssrutan Visa alla alternativ är markerad Sant Skapar en ordlista med ngram före LDA. Användbart för modellgranskning och tolkning
Maximalt antal ngram i ordlista Integer [1;int. MaxValue] Gäller när alternativet Build-ordlistan för ngram är Sant och kryssrutan Visa alla alternativ är markerad 20000 Maximal storlek på ordlistan. Om antalet token i indata överskrider den här storleken kan kollisioner uppstå

Utdata

Namn Typ Description
Transformerad datauppsättning Datatabell Utdatauppsättning
Matris för funktionsämne Datatabell Funktionsämnesmatris som producerats av LDA
LDA-transformering ITransform-gränssnitt Transformering som tillämpar LDA på datauppsättningen

Undantag

Undantag Description
Fel 0002 Undantaget inträffar om det inte gick att hitta en eller flera angivna kolumner i datauppsättningen.
Fel 0003 Undantaget inträffar om en eller flera indata är null eller tomma.
Fel 0004 Undantaget inträffar om parametern är mindre än eller lika med ett specifikt värde.
Fel 0017 Undantaget inträffar om en eller flera angivna kolumner har typen stöds inte av den aktuella modulen.

En lista över fel som är specifika för Studio-moduler (klassisk) finns i Machine Learning felkoder.

En lista över API-undantag finns i Machine Learning REST API felkoder.

Se även

Textanalys
Funktions-hash
Igenkänning av namngiven enhet
Poäng för Vowpal Wabbit 7–4-modell
Träna Vowpal Wabbit 7-4-modell
Träna Vowpal Wabbit 8-modell