Referens för funktionshassningskomponent

I den här artikeln beskrivs en komponent som ingår i Azure Machine Learning-designern.

Använd komponenten Funktionshasher för att omvandla en ström av engelsk text till en uppsättning heltalsfunktioner. Du kan sedan skicka den här hashade funktionen inställd på en maskininlärningsalgoritm för att träna en textanalysmodell.

Funktionen för hashning som tillhandahålls i den här komponenten baseras på nimbusml-ramverket. Mer information finns i klassen NgramHash.

Vad är funktionshashing?

Funktionshashar fungerar genom att konvertera unika token till heltal. Den fungerar på de exakta strängar som du anger som indata och utför ingen språkanalys eller förbearbetning.

Ta till exempel en uppsättning enkla meningar som dessa, följt av en attitydpoäng. Anta att du vill använda den här texten för att skapa en modell.

Användartext Sentiment
Jag älskade den här boken 3
Jag hatade den här boken 1
Den här boken var bra 3
Jag älskar böcker 2

Internt skapar funktionshassingkomponenten en ordlista med n-gram. Till exempel skulle listan med bigrams för den här datamängden vara ungefär så här:

Term (bigrams) Frekvens
Den här boken 3
Jag älskade 1
Jag hatade 1
Jag älskar 1

Du kan styra storleken på n-gram med hjälp av egenskapen N-gram . Om du väljer bigrams beräknas även unigram. Ordlistan innehåller även enkla termer som dessa:

Term (unigram) Frekvens
bok 3
I 3
böcker 1
Var 1

När ordlistan har skapats konverterar funktionshashkomponenten ordlistetermerna till hash-värden. Den beräknar sedan om en funktion användes i varje fall. För varje rad med textdata matar komponenten ut en uppsättning kolumner, en kolumn för varje hashfunktion.

Efter hashning kan till exempel funktionskolumnerna se ut ungefär så här:

Omdöme Hashningsfunktion 1 Hashningsfunktion 2 Hashningsfunktion 3
4 1 1 0
5 0 0 0
  • Om värdet i kolumnen är 0 innehåller raden inte den hashade funktionen.
  • Om värdet är 1 innehöll raden funktionen.

Med funktionshashing kan du representera textdokument med variabel längd som numeriska funktionsvektorer med samma längd för att minska dimensionaliteten. Om du försökte använda textkolumnen för träning som den är behandlas den som en kategorisk funktionskolumn med många distinkta värden.

Numeriska utdata gör det också möjligt att använda vanliga maskininlärningsmetoder, inklusive klassificering, klustring och informationshämtning. Eftersom uppslagsåtgärder kan använda heltalshasher i stället för strängjämförelser går det också mycket snabbare att hämta funktionsvikterna.

Konfigurera funktionshashkomponenten

  1. Lägg till komponenten Funktionshashing i pipelinen i designern.

  2. Anslut den datauppsättning som innehåller den text som du vill analysera.

    Tips

    Eftersom funktionshashing inte utför lexikala åtgärder, till exempel härstamning eller trunkering, kan du ibland få bättre resultat genom att förbearbeta text innan du tillämpar funktionshashing.

  3. Ange Målkolumner till de textkolumner som du vill konvertera till hashade funktioner. Tänk på följande:

    • Kolumnerna måste vara strängdatatypen.

    • Om du väljer flera textkolumner kan det ha stor inverkan på funktionsdimensionaliteten. Till exempel går antalet kolumner för en 10-bitars hash från 1 024 för en enskild kolumn till 2 048 för två kolumner.

  4. Använd Hashing-bitstorlek för att ange antalet bitar som ska användas när du skapar hash-tabellen.

    Standardbitstorleken är 10. För många problem är det här värdet tillräckligt. Du kan behöva mer utrymme för att undvika kollisioner, beroende på storleken på n-gram-vokabulären i träningstexten.

  5. För N-gram anger du ett tal som definierar den maximala längden på n-gram som ska läggas till i träningsordlistan. Ett n-gram är en sekvens med n ord som behandlas som en unik enhet.

    Om du till exempel anger 3 skapas unigram, bigrams och trigram.

  6. Skicka pipelinen.

Resultat

När bearbetningen är klar matar komponenten ut en transformerad datauppsättning där den ursprungliga textkolumnen har konverterats till flera kolumner. Varje kolumn representerar en funktion i texten. Beroende på hur viktig ordlistan är kan den resulterande datamängden vara stor:

Kolumnnamn 1 Kolumntyp 2
USERTEXT Ursprunglig datakolumn
KÄNSLA Ursprunglig datakolumn
USERTEXT – Hashningsfunktion 1 Hashad funktionskolumn
USERTEXT – Hashningsfunktion 2 Hash-funktionskolumn
USERTEXT – Hashningsfunktion n Hash-funktionskolumn
USERTEXT – Hashningsfunktion 1024 Hash-funktionskolumn

När du har skapat den transformerade datauppsättningen kan du använda den som indata till komponenten Train Model (Träna modell).

Bästa praxis

Följande metodtips kan hjälpa dig att få ut mesta möjliga av komponenten Funktionshashing:

  • Lägg till en preprocess-textkomponent innan du använder funktionshashing för att förbearbeta indatatexten.

  • Lägg till komponenten Välj kolumner efter komponenten Funktionshashing för att ta bort textkolumnerna från utdatauppsättningen. Du behöver inte textkolumnerna när hash-funktionerna har genererats.

  • Överväg att använda dessa alternativ för förbearbetning av text för att förenkla resultaten och förbättra noggrannheten:

    • Ordbrytning
    • Stoppa ordborttagning
    • Skiftlägesnormalisering
    • Borttagning av skiljetecken och specialtecken
    • Ordstamsigenkänning

Den optimala uppsättningen förbearbetningsmetoder som ska tillämpas i alla lösningar beror på domän, vokabulär och affärsbehov. pipeline med dina data för att se vilka textbearbetningsmetoder som är mest effektiva.

Nästa steg

Se den uppsättning komponenter som är tillgängliga för Azure Machine Learning