Naslaginformatie over onderdelen van hashing

In dit artikel wordt een onderdeel beschreven dat is opgenomen in de Azure Machine Learning-ontwerpfunctie.

Gebruik het onderdeel Feature Hashing om een stroom Engelse tekst te transformeren in een set functies met gehele getallen. Vervolgens kunt u deze gehashte functieset doorgeven aan een machine learning-algoritme om een text analytics-model te trainen.

De functie-hashfunctionaliteit die in dit onderdeel wordt geboden, is gebaseerd op het nimbusml-framework. Zie NgramHash-klasse voor meer informatie.

Wat is functie-hashing?

Functie-hashing werkt door unieke tokens te converteren naar gehele getallen. Het werkt op de exacte tekenreeksen die u als invoer opgeeft en voert geen taalkundige analyse of voorverwerking uit.

Neem bijvoorbeeld een set eenvoudige zinnen zoals deze, gevolgd door een gevoelsscore. Stel dat u deze tekst wilt gebruiken om een model te bouwen.

Gebruikerstekst Sentiment
Ik vond dit boek geweldig 3
Ik haatte dit boek. 1
Dit boek was geweldig 3
Ik hou van boeken 2

Intern maakt het onderdeel Feature Hashing een woordenlijst van n-grammen. De lijst met bigrams voor deze gegevensset ziet er bijvoorbeeld ongeveer als volgt uit:

Term (bigrams) Frequentie
Dit boek 3
Ik hield van 1
Ik haatte het. 1
Ik hou van 1

U kunt de grootte van de n-gram regelen met behulp van de eigenschap N-grammen . Als u bigrams kiest, worden unigrammen ook berekend. De woordenlijst bevat ook enkele termen zoals deze:

Term (unigrammen) Frequentie
boek 3
I 3
boeken 1
Was 1

Nadat de woordenlijst is gemaakt, converteert het onderdeel Feature Hashing de woordenlijsttermen naar hash-waarden. Vervolgens wordt in elk geval berekend of een functie is gebruikt. Voor elke rij met tekstgegevens voert het onderdeel een set kolommen uit, één kolom voor elke gehashte functie.

Na het hashen kunnen de functiekolommen er bijvoorbeeld ongeveer als volgt uitzien:

Waardering Hashing-functie 1 Hashing-functie 2 Hashing-functie 3
4 1 1 0
5 0 0 0
  • Als de waarde in de kolom 0 is, bevat de rij niet de gehashte functie.
  • Als de waarde 1 is, bevat de rij de functie.

Met functie-hashing kunt u tekstdocumenten met variabele lengte weergeven als numerieke functievectoren van gelijke lengte om dimensionaliteit te verminderen. Als u de tekstkolom in de ongewijzigde staat voor training wilt gebruiken, wordt deze beschouwd als een categorische functiekolom met veel afzonderlijke waarden.

Numerieke uitvoer maakt het ook mogelijk om algemene machine learning-methoden te gebruiken, waaronder classificatie, clustering en het ophalen van informatie. Omdat bij opzoekbewerkingen hashes voor gehele getallen kunnen worden gebruikt in plaats van tekenreeksvergelijkingen, is het ook veel sneller om de functiegewichten op te halen.

Het onderdeel Feature Hashing configureren

  1. Voeg het onderdeel Feature Hashing toe aan uw pijplijn in de ontwerpfunctie.

  2. Verbind de gegevensset met de tekst die u wilt analyseren.

    Tip

    Omdat functie-hashing geen lexicale bewerkingen uitvoert, zoals stemming of afkapping, kunt u soms betere resultaten krijgen door tekst vooraf te verwerken voordat u functie-hashing toepast.

  3. Stel Doelkolommen in op de tekstkolommen die u wilt converteren naar gehashte functies. Denk hierbij aan het volgende:

    • De kolommen moeten het gegevenstype tekenreeks zijn.

    • Het kiezen van meerdere tekstkolommen kan een aanzienlijke invloed hebben op de dimensionaliteit van functies. Het aantal kolommen voor een 10-bits hash gaat bijvoorbeeld van 1024 voor één kolom naar 2048 voor twee kolommen.

  4. Gebruik Hashing bitsize om het aantal bits op te geven dat moet worden gebruikt bij het maken van de hashtabel.

    De standaard bitgrootte is 10. Voor veel problemen is deze waarde voldoende. Mogelijk hebt u meer ruimte nodig om conflicten te voorkomen, afhankelijk van de grootte van de n-gram woordenlijst in de trainingstekst.

  5. Voer voor N-gram een getal in dat de maximale lengte van de n-grammen definieert die aan de trainingswoordenlijst moet worden toegevoegd. Een n-gram is een opeenvolging van n woorden, behandeld als een unieke eenheid.

    Als u bijvoorbeeld 3 invoert, worden unigrammen, bigrams en trigrammen gemaakt.

  6. Verzend de pijplijn.

Resultaten

Nadat de verwerking is voltooid, voert het onderdeel een getransformeerde gegevensset uit waarin de oorspronkelijke tekstkolom is geconverteerd naar meerdere kolommen. Elke kolom vertegenwoordigt een functie in de tekst. Afhankelijk van hoe belangrijk de woordenlijst is, kan de resulterende gegevensset groot zijn:

Kolomnaam 1 Kolomtype 2
USERTEXT Oorspronkelijke gegevenskolom
SENTIMENT Oorspronkelijke gegevenskolom
USERTEXT - Hashing-functie 1 Kolom met gehashte functie
USERTEXT - Hashing-functie 2 Kolom met gehashte functie
USERTEXT - Hashing-functie n Kolom met gehashte functie
USERTEXT - Hashing-functie 1024 Kolom met gehashte functie

Nadat u de getransformeerde gegevensset hebt gemaakt, kunt u deze gebruiken als invoer voor het onderdeel Train Model.

Aanbevolen procedures

De volgende best practices kunnen u helpen optimaal gebruik te maken van het onderdeel Functie-hashing:

  • Voeg een tekstvoorverwerkonderdeel toe voordat u functie-hashing gebruikt om de invoertekst vooraf te verwerken.

  • Voeg een onderdeel Kolommen selecteren toe na het onderdeel Functie-hashing om de tekstkolommen uit de uitvoergegevensset te verwijderen. U hebt de tekstkolommen niet meer nodig nadat de hashingfuncties zijn gegenereerd.

  • Overweeg het gebruik van deze opties voor tekstvoorverwerking om de resultaten te vereenvoudigen en de nauwkeurigheid te verbeteren:

    • Woordverbreking
    • Het verwijderen van woorden stoppen
    • Casenormalisatie
    • Leestekens en speciale tekens verwijderen
    • Stam

De optimale set voorverwerkingsmethoden die in elke oplossing moeten worden toegepast, is afhankelijk van het domein, de woordenlijst en de bedrijfsbehoefte. pijplijn met uw gegevens om te zien welke methoden voor tekstverwerking het meest effectief zijn.

Volgende stappen

Bekijk de set onderdelen die beschikbaar zijn voor Azure Machine Learning