Dela via


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.

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

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

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

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

  4. 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 3skapas unigram, bigrams och trigram.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  5. 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.
  6. Alla andra alternativ finns i egenskapsbeskrivningarna i föregående avsnitt.

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

  1. Kopiera modulen Extrahera N-Gram-funktioner från text från träningsdataflödet till bedömningsdataflödet.

  2. Anslut utdata för resultatvokabulär från träningsdataflödet till indatavokabulären i bedömningsdataflödet.

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

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

    Tips

    Om du har problem med att visa en viss kolumn kopplar du modulen Välj kolumner i datamängd till utdata och använder sedan sökfunktionen för att filtrera kolumner efter namn.

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

Se även

Textanalys
A-Z-lista över Machine Learning moduler