Látens Dirichlet Allocation összetevő
Ez a cikk azt ismerteti, hogyan használhatja a Látens Dirichlet Allocation összetevőt az Azure Machine Learning Designerben az egyébként nem besorolt szövegek kategóriákba való csoportosításához.
A látens dirichlet-foglalást (LDA) gyakran használják a természetes nyelvi feldolgozásban hasonló szövegek megkeresésére. Egy másik gyakori kifejezés a témakörmodellezés.
Ez az összetevő egy szövegoszlopot vesz fel, és az alábbi kimeneteket hozza létre:
A forrásszöveg és az egyes kategóriák pontszáma
Az egyes kategóriákhoz kinyert kifejezéseket és együtthatókat tartalmazó funkciómátrix
Átalakítás, amelyet menthet és újra alkalmazhat a bemenetként használt új szövegre
Ez az összetevő a scikit-learn kódtárat használja. A scikit-learn szolgáltatással kapcsolatos további információkért tekintse meg a GitHub-adattárat, amely oktatóanyagokat és az algoritmus magyarázatát tartalmazza.
További információ a Látens Dirichlet-foglalásról
Az LDA általában nem osztályozási módszer. De generatív megközelítést használ, így nem kell ismert osztálycímkéket megadnia, majd következtetnie a mintákra. Ehelyett az algoritmus létrehoz egy valószínűségi modellt, amely a témakörök csoportjainak azonosítására szolgál. A valószínűségi modell használatával besorolhatja a meglévő betanítási eseteket vagy azokat az új eseteket, amelyeket bemenetként ad meg a modellnek.
A generatív modelleket érdemes lehet előnyben részesíteni, mert így elkerülheti a szöveg és a kategóriák közötti kapcsolat erős feltételezéseit. Csak a szavak eloszlását használja a témakörök matematikai modellezéséhez.
Az elméletet ebben a tanulmányban tárgyaljuk, amely PDF-letöltésként érhető el: Látens Dirichlet Allocation: Blei, Ng és Jordan.
Az összetevő implementációja az LDA scikit-learn kódtárán alapul.
További információkért tekintse meg a Műszaki megjegyzések szakaszt .
Látens Dirichlet-foglalás konfigurálása
Ehhez az összetevőhöz olyan adathalmazra van szükség, amely nyers vagy előre feldolgozott szövegoszlopot tartalmaz.
Adja hozzá a látens Dirichlet Allocation összetevőt a folyamathoz.
A Text Analytics eszközlistájában húzza a látens Dirichlet Allocation összetevőt a vászonra.
Az összetevő bemeneteként adjon meg egy adathalmazt, amely egy vagy több szöveges oszlopot tartalmaz.
Céloszlopok esetén válasszon ki egy vagy több elemezni kívánt szöveget tartalmazó oszlopot.
Több oszlopot is választhat, de a sztring adattípusának kell lennie.
Mivel az LDA egy nagy funkciómátrixot hoz létre a szövegből, általában egyetlen szöveges oszlopot fog elemezni.
A modellezendő témakörök számához írjon be egy 1 és 1000 közötti egész számot, amely jelzi, hogy hány kategóriát vagy témakört szeretne származtetni a bemeneti szövegből.
Alapértelmezés szerint 5 témakör jön létre.
N-gramm esetén adja meg a kivonatolás során létrehozott N-gramm maximális hosszát.
Az alapértelmezett érték 2, ami azt jelenti, hogy a bigramok és az unigramok is létre lesznek hozva.
Válassza a Normalizálás lehetőséget a kimeneti értékek valószínűségké alakításához.
Az átalakított értékek egész számként való megjelenítése helyett a kimeneti és a funkcióadatkészlet értékei az alábbiak szerint lesznek átalakítva:
Az adathalmaz értékei olyan valószínűségként jelennek meg, ahol
P(topic|document)
.A funkciótémakör mátrixában szereplő értékek valószínűségként jelennek meg, ahol
P(word|topic)
.
Feljegyzés
Az Azure Machine Learning designerben a scikit-learn kódtár már nem támogatja a 0.19-es verzióból származó, nemnormalizált doc_topic_distr kimenetet. Ebben az összetevőben a Normalize paraméter csak a funkciótémamátrix kimenetére alkalmazható. Az átalakított adathalmaz kimenete mindig normalizálva van.
Ha az alábbi speciális paramétereket szeretné beállítani, válassza az Összes beállítás megjelenítése lehetőséget, majd állítsa BE IGAZ értékre.
Ezek a paraméterek az LDA scikit-learn implementációjára vonatkoznak. Van néhány jó oktatóanyag az LDA a scikit-learn, valamint a hivatalos scikit-learn dokumentum.
Rho paraméter. Adja meg a témaköreloszlások ritkulásának valószínűségét. Ez a paraméter a sklearn paraméterének
topic_word_prior
felel meg. Használja az 1 értéket, ha arra számít, hogy a szavak eloszlása lapos, vagyis minden szó fel van adva. Ha úgy gondolja, hogy a legtöbb szó ritkán jelenik meg, alacsonyabb értékre állíthatja.Alfa paraméter. Adja meg a dokumentumonkénti témakörvastagságok ritkulásának előzetes valószínűségét. Ez a paraméter a sklearn paraméterének
doc_topic_prior
felel meg.Dokumentumok becsült száma. Adjon meg egy számot, amely a feldolgozandó dokumentumok (sorok) számának legjobb becslését adja meg. Ez a paraméter lehetővé teszi, hogy az összetevő lefoglaljon egy megfelelő méretű kivonattáblát. Megfelel a
total_samples
scikit-learn paraméterének.A köteg mérete. Adjon meg egy számot, amely jelzi, hogy hány sort kell belefoglalni az LDA-modellnek küldött egyes szövegkötegekbe. Ez a paraméter megfelel a
batch_size
scikit-learn paraméterének.A tanulási frissítés ütemezésében használt iteráció kezdeti értéke. Adja meg azt a kezdőértéket, amely az online tanulás korai iterációinak tanulási sebességét lesűri. Ez a paraméter megfelel a
learning_offset
scikit-learn paraméterének.Az iterációra a frissítések során alkalmazott energia. Adja meg az iterációk számára alkalmazott teljesítményszintet, hogy szabályozhassa a tanulási arányt az online frissítések során. Ez a paraméter megfelel a
learning_decay
scikit-learn paraméterének.Az adatátvételek száma. Adja meg, hogy az algoritmus hány alkalommal lépi át az adatokat. Ez a paraméter megfelel a
max_iter
scikit-learn paraméterének.
Válassza az ngramok szótárának összeállítása vagy az LDA előtti ngramok szótárának összeállítása lehetőséget, ha az n-gramok listáját kezdeti lépésben szeretné létrehozni a szöveg besorolása előtt.
Ha korábban hozza létre a kezdeti szótárt, a modell áttekintésekor később használhatja a szótárt. Általában egyszerűbb az értelmezés, ha az eredményeket szövegesre, nem pedig numerikus indexekre tudja képezni. A szótár mentése azonban tovább tart, és további tárterületet használ.
A ngram szótár maximális méretéhez adja meg az n-gram szótárban létrehozható sorok teljes számát.
Ez a beállítás a szótár méretének szabályozásához hasznos. Ha azonban a bemeneti ngramok száma meghaladja ezt a méretet, ütközések léphetnek fel.
Küldje el a folyamatot. Az LDA-összetevő Bayes-tétellel határozza meg, hogy mely témakörök társíthatók az egyes szavakhoz. A szavak nem kizárólag témákhoz vagy csoportokhoz vannak társítva. Ehelyett minden n-gramnak van egy tanult valószínűsége, hogy bármelyik felderített osztályhoz társítva van.
Results (Eredmények)
Az összetevő két kimenettel rendelkezik:
Átalakított adatkészlet: Ez a kimenet tartalmazza a bemeneti szöveget, a felderített kategóriák megadott számát, valamint az egyes kategóriákhoz tartozó egyes szöveges példák pontszámait.
Funkciótémakör mátrixa: A bal szélső oszlop tartalmazza a kinyert szöveg funkciót. Az egyes kategóriák oszlopai tartalmazzák az adott kategória adott funkciójának pontszámát.
LDA-átalakítás
Ez az összetevő azt az LDA-átalakítást is kimenetként adja ki, amely az LDA-t alkalmazza az adathalmazra.
Ezt az átalakítást mentheti, és újra felhasználhatja más adathalmazokhoz. Ez a technika akkor lehet hasznos, ha nagy korpuszra tanít be, és újra szeretné használni az együtthatókat vagy kategóriákat.
Az átalakítás újbóli felhasználásához válassza a Látens dirichlet foglalási összetevő jobb oldali panelén az Adathalmaz regisztrálása ikont, hogy az összetevő az Összetevők listában az Adathalmazok kategória alatt maradjon. Ezután csatlakoztathatja ezt az összetevőt az Átalakítás alkalmazása összetevőhöz, hogy újra felhasználhassa ezt az átalakítást.
LDA-modell vagy -eredmények finomítása
Általában nem hozhat létre egyetlen LDA-modellt, amely minden igényt kielégít. Még egy feladathoz tervezett modell is számos iterációt igényelhet a pontosság javítása érdekében. Javasoljuk, hogy próbálja ki ezeket a módszereket a modell továbbfejlesztéséhez:
- A modellparaméterek módosítása
- Vizualizáció használata az eredmények megértéséhez
- A téma szakértőinek visszajelzése annak megállapításához, hogy a létrehozott témakörök hasznosak-e
A minőségi intézkedések az eredmények értékeléséhez is hasznosak lehetnek. A témakörmodellezési eredmények kiértékeléséhez fontolja meg a következő szempontokat:
- Pontosság. Valóban hasonlóak a hasonló elemek?
- Sokféleség. Megkülönböztethet a modell hasonló elemeket, ha az üzleti probléma miatt szükséges?
- Skálázhatóság. A szövegkategóriák széles skáláján működik, vagy csak egy szűk céltartományon?
Gyakran javíthatja az LDA-alapú modellek pontosságát természetes nyelvi feldolgozással a szöveg megtisztításához, összegzéséhez és leegyszerűsítéséhez vagy kategorizálásához. Az Azure Machine Learningben támogatott alábbi technikák például javíthatják a besorolás pontosságát:
A szavak eltávolításának leállítása
Kis- és nagybetűk normalizálása
Lemmatizálás vagy lesüllyedés
Nevesített entitások felismerése
További információ: Előfeldolgozási szöveg.
A tervezőben R- vagy Python-kódtárakat is használhat szövegfeldolgozáshoz: R-szkript végrehajtása, Python-szkript végrehajtása.
Technikai megjegyzések
Ez a szakasz a megvalósítás részleteit, tippeket és válaszokat tartalmaz a gyakori kérdésekre.
Megvalósítás részletei
Alapértelmezés szerint az átalakított adathalmaz és a funkciótémakör-mátrix kimeneteinek eloszlása valószínűségként normalizálódik:
Az átalakított adatkészlet normalizálva van, mint a dokumentumhoz adott témakörök feltételes valószínűsége. Ebben az esetben az egyes sorok összege 1.
A funkciótémakör mátrixa normalizálva van a témakörhöz adott szavak feltételes valószínűségeként. Ebben az esetben az egyes oszlopok összege 1.
Tipp.
Előfordulhat, hogy az összetevő üres témakört ad vissza. Ennek oka leggyakrabban az algoritmus pszeudo-véletlenszerű inicializálása. Ha ez történik, megpróbálhatja módosítani a kapcsolódó paramétereket. Módosíthatja például az N-gram szótár maximális méretét vagy a funkciók kivonatolásához használandó bitek számát.
LDA és témakörmodellezés
A látens dirichlet-kiosztást gyakran használják tartalomalapú témakörmodellezéshez, ami alapvetően azt jelenti, hogy nem besorolt szövegekből tanulnak kategóriákat. A tartalomalapú témakörmodellezésben a témakör szó szerinti eloszlás.
Tegyük fel például, hogy számos olyan ügyfélértékelést adott meg, amely számos terméket tartalmaz. Az ügyfelek által időben elküldött vélemények szövege számos kifejezést tartalmaz, amelyek közül néhányat több témakör is használ.
Az LDA-folyamat által azonosított témakörök az egyes termékekre vonatkozó felülvizsgálatokat, vagy termékértékelések egy csoportját jelölhetik. Az LDA számára maga a témakör csak egy valószínűségi eloszlás egy adott szókészlet esetében.
A feltételek ritkán kizárólagosak egyetlen termékre. Hivatkozhatnak más termékekre, vagy lehetnek olyan általános kifejezések, amelyek mindenre vonatkoznak ("nagyszerű", "szörnyű"). Más kifejezések lehetnek zajszavak. Az LDA-módszer azonban nem próbálja meg rögzíteni az összes szót az univerzumban, és nem is szeretné megérteni, hogy a szavak hogyan kapcsolódnak egymáshoz, eltekintve az együttes előfordulás valószínűségétől. Csak a céltartományban használt szavakat csoportosíthatja.
A kifejezésindexek kiszámítása után egy távolságalapú hasonlósági mérték összehasonlítja az egyes szövegsorokat annak megállapításához, hogy két szövegrész hasonló-e. Előfordulhat például, hogy a termék több, erősen korrelált névvel rendelkezik. Vagy azt is tapasztalhatja, hogy az erősen negatív kifejezések általában egy adott termékhez vannak társítva. A hasonlósági mértéket használhatja a kapcsolódó kifejezések azonosítására és javaslatok létrehozására is.
Összetevőparaméterek
Név | Típus | Tartomány | Választható | Alapértelmezett | Leírás |
---|---|---|---|---|---|
Céloszlop(ok) | Oszlop kijelölése | Kötelező | StringFeature | Céloszlop neve vagy indexe. | |
Modellelendő témakörök száma | Egész | [1; 1000] | Kötelező | 5 | Modellezheti a dokumentumterjesztést N témakörök szerint. |
N-gramm | Egész | [1; 10] | Kötelező | 2 | A kivonatolás során létrehozott N-gramm sorrendje. |
Normalizál | Logikai | Igaz vagy hamis | Kötelező | true | A kimenet normalizálása valószínűségekkel. Az átalakított adathalmaz P(topic|document) lesz, a funkciótémakör mátrixa pedig P(word|topic). |
Az összes beállítás megjelenítése | Logikai | Igaz vagy hamis | Kötelező | Hamis | A scikit-learn online LDA-ra vonatkozó további paramétereket mutat be. |
Rho paraméter | Lebegőpontos értékek | [0.00001; 1.0] | Akkor érvényes, ha az Összes beállítás megjelenítése jelölőnégyzet be van jelölve | 0,01 | Témakörszavak korábbi eloszlása. |
Alfa paraméter | Lebegőpontos értékek | [0.00001; 1.0] | Akkor érvényes, ha az Összes beállítás megjelenítése jelölőnégyzet be van jelölve | 0,01 | Dokumentumtémakör előzetes terjesztése. |
Dokumentumok becsült száma | Egész | [1; Int. MaxValue] | Akkor érvényes, ha az Összes beállítás megjelenítése jelölőnégyzet be van jelölve | 1000 | Dokumentumok becsült száma. A paraméternek total_samples felel meg. |
A köteg mérete | Egész | [1; 1024] | Akkor érvényes, ha az Összes beállítás megjelenítése jelölőnégyzet be van jelölve | 32 | A köteg mérete. |
A tanulási sebesség frissítési ütemezésében használt iteráció kezdeti értéke | Egész | [0; Int. MaxValue] | Akkor érvényes, ha az Összes beállítás megjelenítése jelölőnégyzet be van jelölve | 0 | Kezdeti érték, amely a korai iterációk tanulási sebességét is lesűri. A paraméternek learning_offset felel meg. |
Az iterációra alkalmazott energia a frissítések során | Lebegőpontos értékek | [0.0; 1.0] | Akkor érvényes, ha az Összes beállítás megjelenítése jelölőnégyzet be van jelölve | 0,5 | Az iterációk számára alkalmazott teljesítmény a tanulási sebesség szabályozása érdekében. A paraméternek learning_decay felel meg. |
Betanítási iterációk száma | Egész | [1; 1024] | Akkor érvényes, ha az Összes beállítás megjelenítése jelölőnégyzet be van jelölve | 25 | Betanítási iterációk száma. |
Ngramok szótárának összeállítása | Logikai | Igaz vagy hamis | Akkor érvényes, ha az Összes beállítás megjelenítése jelölőnégyzet nincs bejelölve | Igaz | Az LDA-számítás előtt ngramok szótárát hozza létre. A modellvizsgálathoz és -értelmezéshez hasznos. |
A ngram szótár maximális mérete | Egész | [1; Int. MaxValue] | Akkor érvényes, ha a ngramok összeállítási szótára igaz | 20000 | A ngrams szótár maximális mérete. Ha a bemeneti tokenek száma meghaladja ezt a méretet, ütközések léphetnek fel. |
A funkciók kivonatolásához használandó bitek száma. | Egész | [1; 31] | Akkor érvényes, ha az Összes beállítás megjelenítése jelölőnégyzet nincs bejelölve, és az ngramok összeállítási szótára hamis | 12 | A funkciók kivonatolásához használandó bitek száma. |
Ngramok szótárának összeállítása LDA előtt | Logikai | Igaz vagy hamis | Akkor érvényes, ha az Összes beállítás megjelenítése jelölőnégyzet be van jelölve | Igaz | Létrehozza az LDA előtti ngramok szótárát. A modellvizsgálathoz és -értelmezéshez hasznos. |
A szótárban lévő ngramok maximális száma | Egész | [1; Int. MaxValue] | Akkor érvényes, ha az Összes beállítás megjelenítése jelölőnégyzet be van jelölve, és az ngramok összeállítási szótára igaz | 20000 | A szótár maximális mérete. Ha a bemeneti tokenek száma meghaladja ezt a méretet, ütközések léphetnek fel. |
Kivonatbitek száma | Egész | [1; 31] | Akkor érvényes, ha az Összes beállítás megjelenítése jelölőnégyzet be van jelölve, és az ngramok összeállítási szótára beállítás hamis | 12 | A funkciók kivonatolása során használandó bitek száma. |
Következő lépések
Tekintse meg az Azure Machine Learning számára elérhető összetevőket.
Az összetevőkre vonatkozó hibák listájáért tekintse meg a tervező kivételeit és hibakódjait.