Referens för funktionshashingkomponent
Varning
Den här komponenten har föråldrats eftersom dess beroende, NimbusML-projektet , inte längre underhålls aktivt. Det innebär att den här komponenten inte får framtida uppdateringar eller säkerhetskorrigeringar. Vi planerar att ta bort den här komponenten i kommande versioner. Användare rekommenderas att migrera till alternativa lösningar för att säkerställa fortsatt support och säkerhet.
I den här artikeln beskrivs en komponent som ingår i Azure Machine Learning-designern.
Använd komponenten Funktionshashing för att omvandla en ström av engelsk text till en uppsättning heltalsfunktioner. Du kan sedan skicka den här hashade funktionen till en maskininlärningsalgoritm för att träna en textanalysmodell.
Funktionshashfunktionen som tillhandahålls i den här komponenten baseras på nimbusml-ramverket. Mer information finns i klassen NgramHash.
Vad är funktionshashing?
Funktionshashing 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åklig analys 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 komponenten Funktionshashing 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 funktionshashingkomponenten ordlistetermerna till hash-värden. Sedan beräknas om en funktion användes i varje enskilt fall. För varje rad med textdata matar komponenten ut en uppsättning kolumner, en kolumn för varje hash-funktion.
Efter hashning kan funktionskolumnerna till exempel se ut ungefär så här:
Klassificering | Hashningsfunktion 1 | Hashningsfunktion 2 | Hashningsfunktion 3 |
---|---|---|---|
4 | 1 | 1 | 0 |
5 | 0 | 0 | 0 |
- Om värdet i kolumnen är 0 innehöll 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, skulle den behandlas 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 heltalshash i stället för strängjämförelser är det också mycket snabbare att hämta funktionsvikterna.
Konfigurera komponenten Funktionshashing
Lägg till komponenten Funktionshashing i pipelinen i designern.
Anslut datauppsättningen som innehåller den text som du vill analysera.
Dricks
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.
Ange Målkolumner till de textkolumner som du vill konvertera till hashade funktioner. Tänk på följande:
Kolumnerna måste vara strängdatatypen.
Att välja flera textkolumner kan ha en betydande 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.
Använd Hashing-bitstorlek för att ange hur många 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.
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.
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 | Hashad funktionskolumn |
USERTEXT – Hashningsfunktion n | Hashad funktionskolumn |
USERTEXT – Hashningsfunktion 1024 | Hashad funktionskolumn |
När du har skapat den transformerade datamängden kan du använda den som indata till komponenten Träna modell.
Bästa praxis
Följande metodtips kan hjälpa dig att få ut mesta möjliga av funktionshashingkomponenten:
Lägg till en förbearbetad 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:
- Ordnedbrytning
- Stoppa ordborttagning
- Skiftlägesnormalisering
- Borttagning av skiljetecken och specialtecken
- Härstamning
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