Extrahera N-Gram-funktioner från text
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.
- Se information om hur du flyttar maskininlärningsprojekt från ML Studio (klassisk) till Azure Machine Learning.
- Läs mer om Azure Machine Learning.
Dokumentationen om ML Studio (klassisk) håller på att dras tillbaka och kanske inte uppdateras i framtiden.
Skapar N-Gram-ordlistefunktioner och gör funktionsval på dem
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
Den här artikeln förklarar hur du använder modulen Extrahera N-Gram-funktioner från text i Machine Learning Studio (klassisk), för att använda text och endast extrahera de viktigaste delarna av information från långa textsträngar.
Modulen skapar en ordlista med n-gram från en kolumn med fritext som du anger som indata. Modulen använder olika informationsmått i n-gramlistan för att minska datadimensioniteten och identifiera de n-gram som har mest informationsvärde.
Om du redan har skapat en vokabulär med n-gram kan du uppdatera dess statistik eller sammanslå med nya termer med hjälp av en valfri viktningsalgoritm.
Eftersom den här modulen stöder funktioner från n-gram kan den också användas vid bedömning.
Så här konfigurerar du extrahering av N-Gram-funktioner från text
Den här modulen stöder följande scenarier för att skapa, uppdatera eller tillämpa en n-gram-ordlista:
Du utvecklar en ny modell med hjälp av en kolumn med fritextkolumn och vill extrahera textfunktioner enbart baserat på indata. Se instruktionerna.
Du har en befintlig uppsättning textfunktioner och vill uppdatera vikterna genom att bearbeta nya textinmatningar. Se instruktionerna.
Du genererar poäng från en förutsägelsemodell och behöver generera och använda textinmatningar med en n-gram-ordlista som en del av bedömningsprocessen. Se instruktionerna.
Du kan använda exempelexperimentet som referens.
Skapa en ny n-gram-ordlista från en textkolumn
Lägg till modulen Extrahera N-Gram-funktioner från text i experimentet och anslut datauppsättningen som innehåller den text som du vill bearbeta.
För Textkolumn väljer du en kolumn av typen sträng som innehåller den text som du vill extrahera.
Som standard väljer modulen alla strängkolumner. Men eftersom resultatet är utförligt kan du behöva bearbeta en enda kolumn i taget.
För Vokabulärlägeväljer du Skapa för att ange att du skapar en ny lista över n-gram-funktioner.
Information om hur du uppdaterar en befintlig uppsättning n-gram-funktioner finns i det här avsnittet.
För N-Gramstorlek skriver du ett tal som anger den maximala storleken på n-gram som ska extraheras och lagras.
Om du till exempel skriver
3
skapas unigram, bigrams och trigram.För K-Skip-storlek anger du det maximala antalet tecken som kan vara olika när du identifierar varianter av n-gram. Om värdet för k är inställt på 0 kan n-gram endast skapas från en unik, sammanhängande sekvens med tecken.
Anta till exempel att ordlistan innehåller unigrammet "computer". K-värdet 0 innebär att "dator" är det enda giltiga unigram-värdet. Om du ökar värdet för k till 1 kan du hoppa över ett mellanliggande tecken, vilket gör att du kan hitta fler liknande sekvenser. Ett skip-gram med k-värdet 1 skulle skilja sig med ett tecken från unigrammet 0 k . Därför betraktas både "conputer" och "compuuter" som en del av samma ordlistepost som "dator". Att ange k-värdet till 2 skulle matcha ännu fler olika ord.
Mer information om hur hoppa över gram används i textanalys finns i det här dokumentet: Candidate Generation and Feature Engineering for Supervised Lexical Normalization
Alternativet Viktningsfunktion krävs bara om du sammanfogar eller uppdaterar vokabulärer. Den anger hur termerna i de två vokabulärerna och deras poäng ska viktas mot varandra.
För Minsta ordlängd anger du den minsta ordlängden för strängar som kan analyseras.
Anta till exempel att den minsta ordlängden var inställd på 3 (standardvärdet) och att du hade en inmatning som hade ett enda ord och en annan som hade lite kort text som "bra plats". Båda raderna ignoreras.
I Maximal ordlängd anger du det maximala antalet bokstäver som kan användas i ett enskilt ord i ett n-gram.
Som standard tillåts upp till 25 tecken per ord eller token. Ord som är längre än så tas bort, baserat på antagandet att de kan vara sekvenser av godtyckliga tecken i stället för faktiska lexikala objekt.
För Minsta n-gram dokuments absoluta frekvens anger du ett tal som anger de minsta förekomster som krävs för att ett enskilt ord eller token ska tas med i n-gram-ordlistan.
Om du till exempel använder standardvärdet 5 måste n-gram eller skip-gram visas minst fem gånger i corpus för att inkluderas i n-gram-ordlistan.
För Maximalt n-gram-dokumentförhållande anger du ett tal som representerar det här förhållandet: antalet rader som innehåller ett visst n-gram, över antalet rader i den övergripande korpusen.
Till exempel skulle ett förhållande på 1 indikera att n-gram kan läggas till i n-gram-ordlistan även om det finns ett specifikt n-gram på varje rad. Vanligtvis anses ett ord som förekommer på varje rad vara ett brusord och tas bort. Om du vill filtrera bort ord med domänberoende brus kan du försöka minska det här förhållandet.
Viktigt
Förekomsten av vissa ord är inte enhetlig, men varierar från dokument till dokument. Om du till exempel analyserar kundkommentarer om en viss produkt kan produktnamnet vara mycket högt och nära ett brusord, men det kan vara en betydande term i andra sammanhang.
Välj alternativet Detect out-of-vocabulary rows (Identifiera rader med utanför vokabulär) om du vill generera en indikator för rader som innehåller ord som inte finns i n-gram-vokabulären, som kallas OOV-ord (out of vocabulary).
Alla lexikoner är begränsade; Därför är din text corpus nästan garanterat att inkludera ord som inte finns i ordboken lexikon eller n-gram. Sådana ord kan dock ha olika effekter på språkmodeller, inklusive högre felfrekvenser jämfört med ord med invokabulär (IV). Beroende på din domän kan dessa OOV-ord representera viktiga innehållsord.
Genom att identifiera rader som innehåller dessa ord kan du antingen kompensera för effekterna av dessa termer eller hantera termerna och relaterade rader separat.
Välj alternativet Markera början av meningen om du vill lägga till en specialteckensekvens som anger början av en mening i din n-gram-ordlista. Prefixet n-gram som startar en mening med ett specialtecken är vanligt vid textanalys och kan vara användbart vid analys av diskursgränser.
Azure ML Studio (klassisk) infogar symbolen
|||
. Du kan inte ange ett anpassat tecken.Välj alternativet Normalisera n-gram-funktionsvektorer om du vill normalisera funktionsvektorerna. När du gör detta delas varje n-gram-funktionsvektor med dess L2-norm.
Normalisering används som standard.
Ange Använd filterbaserat funktionsval tillSant om du vill aktivera ytterligare alternativ för att hantera storleken på din textfunktionsvektor.
- Val av funktioner kan vara användbart för att minska dimensionaliteten för n-gram.
- När du inte tillämpar filterval skapas alla möjliga n-gram, vilket ökar täckningen på bekostnad av att göra ordlistan längre och eventuellt inkluderar många ovanliga termer.
- I en liten korpus kan funktionsval avsevärt minska antalet termer som skapas.
- Mer information finns i Filterbaserat funktionsval.
Om du använder funktionsval måste du välja en metod i listrutan Funktionsbedömningsmetod :
- PearsonCorrelation: Beräknar Pearsons korrelation baserat på etikettkolumnvärdet och textvektorn.
- Ömsesidig information: Beräknar en ömsesidig informationspoäng baserat på etikettkolumnvärdet och textvektorn.
- KendallCorrelation: Beräknar Kendalls korrelation, baserat på etikettkolumnvärdet och textvektorn.
- SpearmanCorrelation: Beräknar Spearman-korrelationen, baserat på etikettkolumnvärdet och textvektorn.
- ChiSquared: Använder chi2-metoden för att beräkna korrelationen mellan etikettkolumnvärdet och textvektorn.
- FisherScore: Beräknar Fisher-poängen för etikettkolumnvärdet och textvektorn.
- Antalsbaserade funktionsval: Skapar nya funktioner baserat på antalet värden. En etikettkolumn krävs inte med den här metoden.
Beroende på vilken metod du väljer anger du något av följande alternativ:
Antal önskade funktioner: Krävs om du använder någon annan funktionsmetod än antalsbaserade funktionsval.
När du väljer funktioner får alla n-gram en funktionspoäng och n-gram rangordnas efter poäng. Värdet du anger här avgör hur många av de mest rangordnade funktionerna som matas ut. N-gram med lägre funktionspoäng tas bort.
Minsta antal element som inte är noll: Krävs om du använder antalsbaserade funktionsval.
Ange ett heltl som representerar det minsta antalet instanser som krävs för att räkna ut en potentiell funktion.
Kör experimentet.
I det här avsnittet finns en förklaring av resultaten och deras format.
Uppdatera en befintlig n-gram-ordlista eller slå samman ordlistor
Lägg till modulen Extrahera N-Gram-funktioner från text i experimentet och anslut datauppsättningen som innehåller den text som du vill bearbeta till datauppsättningsporten .
För Text-kolumn väljer du den textkolumn som innehåller den text som du vill använda. Som standard väljer modulen alla kolumner av typen sträng. Bearbeta en kolumn i taget för bästa resultat.
Lägg till den sparade datauppsättningen som innehåller en tidigare genererad n-gram-ordlista och anslut den till porten för indatavokabulär . Du kan också ansluta utdata för resultatvokabulären för en överordnad instans av modulen Extrahera N-Gram-funktioner från text.
För att sammanslå eller uppdatera vokabulär måste schemat för indatavokabulären exakt matcha det förväntade formatet. Ta inte bort några kolumner från eller lägg till några kolumner i indatavokabulären.
I läget Vokabulär väljer du något av följande uppdateringsalternativ i listrutan:
ReadOnly: Representerar indata-corpus i termer av indatavokabulären. Det vill säga, i stället för att beräkna termfrekvenser från den nya textdatauppsättningen (till vänster indata) tillämpas n-gram vikterna från indatavokabulären i dess befintliga form.
Tips
Använd det här alternativet när du betecknar en text klassificerare.
Uppdatering: Skapar en ny n-gram-vokabulär från indata-corpus och sammanfogar den med indatavokabulären. Du kan med andra ord lägga till nya poster i den skapade vokabulären från indatavokabulären, eller så kan du uppdatera befintliga poster.
Tips
Använd det här alternativet för inkrementella uppdateringar av vokabulär med inkommande databatchar.
Sammanfoga: Genererar en ny n-gram-vokabulär från den inmatade corpusen.
Det här alternativet är användbart om du använder en bakgrundsvokabulär som indata till modulen och vill minska vikten av stoppord. Med andra ord tilldelas varje post som har en hög dokumentfrekvenspoäng i bakgrundsvokabulären en lägre inverterad dokumentfrekvenspoäng i den skapade vokabulären.
Tips
Använd det här alternativet om du inte vill lägga till nya poster i den skapade vokabulären från indata och bara vill justera poängen för befintliga poster.
Alternativet Välj viktningsfunktion krävs om du sammanfogar eller uppdaterar vokabulärer. Viktningsfunktionen anger hur poängen för DF och IDF i de två vokabulärerna ska viktas mot varandra:
- Binär vikt: Tilldelar ett binärt närvarovärde till den extraherade n-gram. Med andra ord är värdet för varje n-gram 1 när det finns i det angivna dokumentet och 0 annars.
- TF-vikt: Tilldelar en TF (Term-Frequency Score) till de extraherade n-gramna. Värdet för varje n-gram är dess förekomstfrekvens i det angivna dokumentet.
- IDF-vikt: Tilldelar en inverterad dokumentfrekvenspoäng (IDF) till extraherade n-gram. Värdet för varje n-gram är loggen för corpus-storleken dividerat med dess förekomstfrekvens i hela corpus. Det är:
IDF = log of corpus_size / document_frequency
- TF-IDF-vikt: Tilldelar tf/IDF (termfrekvens/inverterad dokumentfrekvenspoäng) till extraherade n-gram. Värdet för varje n-gram är dess TF-poäng multiplicerat med dess IDF-poäng.
- Graph vikt: Tilldelar poäng till extraherade n-gram baserat på Rangordning i TextRank-grafen. TextRank är en grafbaserad rangordningsmodell för textbearbetning. Graph-baserade rangordningsalgoritmer är i grunden ett sätt att avgöra vikten baserat på global information. Mer information finns i TextRank: Bringing Order into Texts av Rada Mihalcea och Paul Tarau.
Alla andra alternativ finns i egenskapsbeskrivningarna i föregående avsnitt.
Kör experimentet.
I det här avsnittet finns en förklaring av resultaten och deras format.
Poäng eller publicera en modell som använder n-gram
Kopiera modulen Extrahera N-Gram-funktioner från text från träningsdataflödet till bedömningsdataflödet.
Anslut utdata för resultatvokabulär från träningsdataflödet till indatavokabulären i bedömningsdataflödet.
I bedömningsarbetsflödet ändrar du modulen Extrahera N-Gram-funktioner från text och gör dessa ändringar, så att allt annat blir detsamma:
Ställ in parametern Vokabulärlägepå ReadOnly.
Ändra alternativet Använd filterbaserat funktionsval till
False
.
Om du vill publicera experimentet sparar du vokabulären för resultat som datauppsättning.
Anslut sedan den sparade datauppsättningen till modulen Extrahera N-Gram-funktioner från text i bedömningsdiagrammet.
Resultat
Modulen Extrahera N-Gram-funktioner från text skapar två typer av utdata:
Resultatdatauppsättning: En sammanfattning av den analyserade texten tillsammans med n-gram som extraherades. Kolumner som du inte har valt i kolumnalternativet Text skickas vidare till utdata. För varje kolumn med text som du analyserar genererar modulen följande kolumner:
- NgramsString: En sträng som innehåller alla unika n-gram.
- NumUniqueNgrams: Antalet n-gram som extraherats med de angivna egenskaperna.
- Gles matris med n-gram-förekomster: Modulen genererar en kolumn för varje n-gram som finns i det totala antalet corpus och lägger till en poäng i varje kolumn för att ange vikten av n-gram för den raden.
Ordförråd för resultat: Vokabulären innehåller den faktiska n-gram-ordlistan, tillsammans med termfrekvenspoängen som genereras som en del av analysen. Du kan spara datauppsättningen för återanvändning med en annan uppsättning indata eller för senare uppdatering. Du kan också uppdatera poängen eller återanvända vokabulären för modellering och bedömning.
Exempelresultat
För att illustrera hur du kan använda resultaten använder följande korta exempel Amazon Book Review-datauppsättningen som är tillgänglig i Studio (klassisk). Dataaset filtrerades för att endast visa recensioner med ett resultat på 4 eller 5, och recensioner med en stränglängd på under 300 tecken.
Från den här datamängden valdes en kort granskning som endast innehåller 92 ord. Här har författarens namn ersatts med och Xxx
boktiteln har ersatts med Yyy
:
"Xxx at his best ! Yyy is one of Xxx's best yet! I highly recommend this novel."
Resultatdatauppsättning för exempelgranskningstext
I det här exemplet genererade modulen följande kolumner:
NumUniqueNgrams: För den här 92 ordgranskningen extraherades 11 n-gram från exempelgranskningen med hjälp av standardinställningarna.
När n-gram-längden ökades till 3 och skip-gram-värdet satt till 1 hittades 15 n-gram.
När funktionsval tillämpades på standardinställningen extraherades inga n-gram.
NgramsString:Med standardinställningarna returnerades dessa n-gram: ["his","best","one","highly","recommend","this","novel","his_best","highly_recommend","recommend_this","this_novel"]
Med en n-gramlängd på 3 och skip-gram-värdet 1 returnerades dessa n-gram: ["his","best","one","highly","recommend","this","novel","his_best","highly_recommend","recommend_this","this_novel","best_one","one_best","highly_this","highly_recommend_this"]
Gles matris för n-gram-förekomster
För den här specifika granskningen innehöll resultaten följande kolumner:
ReviewText. [hanterar] ReviewText. [and_highly] ReviewText. [mycket] ReviewText. [highly_recommend] 0 0 0.301511 0.301511
Resultatvokabulär för exempelgranskningstext
Vokabulären innehåller den faktiska n-gram-ordlistan, tillsammans med termfrekvenspoängen som genereras som en del av analysen. Du kan spara datauppsättningen för återanvändning med en annan uppsättning indata eller för senare uppdatering. Poängen DF och IDF genereras oavsett andra alternativ. När du kombinerar vokabulär används dessa lagrade värden som indata till den viktningsfunktion som du väljer.
- Id: En identifierare som genereras för varje unikt n-gram.
- Ngram: n-gram. Blanksteg eller andra ordavgränsare ersätts med understreckstecknet.
- DF: Termfrekvenspoängen för n-gram i den ursprungliga korpusen.
- IDF: Inversdokumentets frekvenspoäng för n-gram i den ursprungliga corpus-filen.
Det går att uppdatera den här datauppsättningen manuellt. var dock försiktig eftersom du kan introducera fel. Till exempel:
- Ett fel uppstår om modulen hittar dubblettrader med samma nyckel i indatavokabulären. Se till att inga två rader i vokabulären har samma ord.
- Indataschemat för datauppsättningarna för vokabulär måste matcha exakt, inklusive kolumnnamn och kolumntyper.
- ID-kolumnen och DF-poängkolumnen måste vara av heltalstypen.
- IDF-kolumnen måste vara av typen FLOAT (flyttal).
Teknisk information
Vi rekommenderar att du experimenterar med olika intervall med värden för n-gramlängd, antalet hoppa över gram och användning av funktionsval för att fastställa dimensionaliteten för din text-corpus och det optimala funktionsförhållandet.
Mer information om n-gram och skip-gram finns i följande resurser:
Förväntade indata
Namn | Typ | Description |
---|---|---|
Datamängd | Datatabell | Indata |
Vokabulär för indata | Datatabell | Vokabulär för indata |
Modulparametrar
Namn | Typ | Intervall | Valfritt | Standardvärde | Description |
---|---|---|---|---|---|
Minsta antal element som inte är noll | Integer | >=1 | Gäller endast när du använder följande metod: Antalsbaserade |
1 | Ange antalet funktioner som ska matas ut (för CountBased-metoden) |
Textkolumn | Kolumnval | Obligatorisk | StringFeature | Namn eller ett baserat index för textkolumnen | |
Vokabulärsläge | Vokabulärsläge | Skapa ReadOnly Uppdatera Sammanfoga |
Obligatorisk | Skapa | Ange hur n-gram-vokabulären ska skapas från corpus |
N-Gramstorlek | Integer | >=1 | Obligatorisk | 1 | Ange den maximala storleken på n-gram som ska skapas |
K-Skip-storlek | Integer | >= 0 | Obligatorisk | 0 | Ange k-skip-storlek |
Viktningsfunktion | Viktningsfunktion | Binär vikt TF-vikt IDF-vikt TF-IDF-vikt Graph vikt |
Obligatorisk | Binär vikt | Välj den viktningsfunktion som ska tillämpas på varje n-gramvärde |
Minsta ordlängd | Integer | >=1 | Obligatorisk | 3 | Ange den minsta längden på ord som ska inkluderas i n-gram |
Maximal ordlängd | Integer | >=2 | Obligatorisk | 25 | Ange den maximala längden på ord som ska inkluderas i n-gram |
Minsta n-gram-dokuments absoluta frekvens | Float | >= 1,0 | Obligatorisk | 5.0 | Minsta n-gram-dokuments absoluta frekvens |
Maximalt n-gram-dokumentförhållande | Float | >=0,0001 | Obligatorisk | 1.0 | Maximalt n-gram-dokumentförhållande |
Identifiera rader med out-of-vokabulär | Boolesk | Obligatorisk | true | Identifiera rader som innehåller ord som inte finns i n-gram-vokabulär (OOV) | |
Markera början av meningen | Boolesk | Obligatorisk | falskt | Ange om ett "begin-sentence"-tecken ska läggas till i n-gram | |
Normalisera n-gram-funktionsvektorer | Boolesk | Obligatorisk | Normalisera n-gram-funktionsvektorer. Om det är sant delas funktionsvektorn n-gram med dess L2-norm. | ||
Använda filterbaserat funktionsval | True False Type | Sant Falskt |
Obligatorisk | Sant | Använda filterbaserat funktionsval för att minska dimensionaliteten |
Metod för funktionsbedömning | Bedömningsmetod | Pearson-korrelation Ömsesidig information Kendall-korrelation Spearman-korrelation Chi Squared Fisher-poäng Antalsbaserade |
Gäller endast när alternativet Använd filterbaserat funktionsval är Sant | Fisher-poäng | Välj den metod som ska användas för bedömning |
Målkolumn | Kolumnval | Gäller när du använder någon av följande metoder: Pearson-korrelation Ömsesidig information Kendall-korrelation Spearman-korrelation Chi Squared Fisher-poäng |
Ange målkolumnen | ||
Antal önskade funktioner | Integer | >= 1 | Gäller när du använder någon av följande metoder: Pearson-korrelation Ömsesidig information Kendall-korrelation Spearman-korrelation Chi Squared Fisher-poäng |
1 | Ange antalet funktioner som ska matas ut i resultat |
Utdata
Namn | Typ | Description |
---|---|---|
Resultatdatauppsättning | Datatabell | Extraherade funktioner |
Ordförråd för resultat | Datatabell | Ordförråd för resultat |