Freigeben über


TextCatalog.ProduceHashedNgrams Methode

Definition

Überlädt

ProduceHashedNgrams(TransformsCatalog+TextTransforms, String, String, Int32, Int32, Int32, Boolean, UInt32, Boolean, Int32, Boolean)

Erstellen Sie eine NgramHashingEstimator, die die Daten aus der spalte kopiert, die in inputColumnName einer neuen Spalte angegeben ist: outputColumnName und erzeugt einen Vektor der Anzahl von Hashed n-Gramm.

ProduceHashedNgrams(TransformsCatalog+TextTransforms, String, String[], Int32, Int32, Int32, Boolean, UInt32, Boolean, Int32, Boolean)

Erstellen Sie eine NgramHashingEstimator, die die Daten aus den in einer neuen Spalte angegebenen inputColumnNames mehreren Spalten verwendet: outputColumnName und erzeugt einen Vektor der Anzahl von Hashed n-Gramm.

ProduceHashedNgrams(TransformsCatalog+TextTransforms, String, String, Int32, Int32, Int32, Boolean, UInt32, Boolean, Int32, Boolean)

Erstellen Sie eine NgramHashingEstimator, die die Daten aus der spalte kopiert, die in inputColumnName einer neuen Spalte angegeben ist: outputColumnName und erzeugt einen Vektor der Anzahl von Hashed n-Gramm.

public static Microsoft.ML.Transforms.Text.NgramHashingEstimator ProduceHashedNgrams (this Microsoft.ML.TransformsCatalog.TextTransforms catalog, string outputColumnName, string inputColumnName = default, int numberOfBits = 16, int ngramLength = 2, int skipLength = 0, bool useAllLengths = true, uint seed = 314489979, bool useOrderedHashing = true, int maximumNumberOfInverts = 0, bool rehashUnigrams = false);
static member ProduceHashedNgrams : Microsoft.ML.TransformsCatalog.TextTransforms * string * string * int * int * int * bool * uint32 * bool * int * bool -> Microsoft.ML.Transforms.Text.NgramHashingEstimator
<Extension()>
Public Function ProduceHashedNgrams (catalog As TransformsCatalog.TextTransforms, outputColumnName As String, Optional inputColumnName As String = Nothing, Optional numberOfBits As Integer = 16, Optional ngramLength As Integer = 2, Optional skipLength As Integer = 0, Optional useAllLengths As Boolean = true, Optional seed As UInteger = 314489979, Optional useOrderedHashing As Boolean = true, Optional maximumNumberOfInverts As Integer = 0, Optional rehashUnigrams As Boolean = false) As NgramHashingEstimator

Parameter

catalog
TransformsCatalog.TextTransforms

Der Katalog der Transformation.

outputColumnName
String

Name der Spalte, die aus der Transformation von inputColumnName. Der Datentyp dieser Spalte ist Vektor von Single.

inputColumnName
String

Name der Spalte, aus der die Daten kopiert werden sollen. Dieser Schätzer wird über den Vektor des Schlüsseltyps betrieben.

numberOfBits
Int32

Anzahl der Bits, in die einen Hashwert aufgenommen werden soll. Muss im Bereich 1 bis 30 liegen.

ngramLength
Int32

Länge des Ngrams.

skipLength
Int32

Maximale Anzahl von Token, die beim Erstellen eines n-Gramms übersprungen werden sollen.

useAllLengths
Boolean

Ob alle n-Gramm-Längen bis zu ngramLength oder nur ngramLengtheingeschlossen werden sollen.

seed
UInt32

Ausgangswert für Hashing.

useOrderedHashing
Boolean

Gibt an, ob die Position jeder Quellspalte im Hash enthalten sein soll (wenn mehrere Quellspalten vorhanden sind).

maximumNumberOfInverts
Int32

Während der Hasherstellung erstellen wir Zuordnungen zwischen ursprünglichen Werten und den erzeugten Hashwerten. Die Textdarstellung von Originalwerten wird in den Slotnamen der Anmerkungen für die neue Spalte gespeichert. Hashing kann z. B. viele Anfangswerte einem zuordnen. maximumNumberOfInverts Gibt die obere Grenze der Anzahl der unterschiedlichen Eingabewerte an, die einem Hash zugeordnet werden sollen, der beibehalten werden soll. 0 behält keine Eingabewerte bei. -1 behält alle Eingabewerte bei, die jedem Hash zugeordnet sind.

rehashUnigrams
Boolean

Gibt an, ob Unigramme neu angeschrieben werden sollen.

Gibt zurück

Hinweise

NgramHashingEstimator unterscheidet sich von WordHashBagEstimator einer Weise, die tokenisierten Text als Eingabe verwendet, NgramHashingEstimator während WordHashBagEstimator Text intern tokenisiert wird.

Gilt für:

ProduceHashedNgrams(TransformsCatalog+TextTransforms, String, String[], Int32, Int32, Int32, Boolean, UInt32, Boolean, Int32, Boolean)

Erstellen Sie eine NgramHashingEstimator, die die Daten aus den in einer neuen Spalte angegebenen inputColumnNames mehreren Spalten verwendet: outputColumnName und erzeugt einen Vektor der Anzahl von Hashed n-Gramm.

public static Microsoft.ML.Transforms.Text.NgramHashingEstimator ProduceHashedNgrams (this Microsoft.ML.TransformsCatalog.TextTransforms catalog, string outputColumnName, string[] inputColumnNames = default, int numberOfBits = 16, int ngramLength = 2, int skipLength = 0, bool useAllLengths = true, uint seed = 314489979, bool useOrderedHashing = true, int maximumNumberOfInverts = 0, bool rehashUnigrams = false);
static member ProduceHashedNgrams : Microsoft.ML.TransformsCatalog.TextTransforms * string * string[] * int * int * int * bool * uint32 * bool * int * bool -> Microsoft.ML.Transforms.Text.NgramHashingEstimator
<Extension()>
Public Function ProduceHashedNgrams (catalog As TransformsCatalog.TextTransforms, outputColumnName As String, Optional inputColumnNames As String() = Nothing, Optional numberOfBits As Integer = 16, Optional ngramLength As Integer = 2, Optional skipLength As Integer = 0, Optional useAllLengths As Boolean = true, Optional seed As UInteger = 314489979, Optional useOrderedHashing As Boolean = true, Optional maximumNumberOfInverts As Integer = 0, Optional rehashUnigrams As Boolean = false) As NgramHashingEstimator

Parameter

catalog
TransformsCatalog.TextTransforms

Der Katalog der Transformation.

outputColumnName
String

Name der Spalte, die aus der Transformation von inputColumnNames. Der Datentyp dieser Spalte ist Vektor der bekannten Größe von Single.

inputColumnNames
String[]

Name der mehreren Spalten, aus der die Daten entnommen werden sollen. Dieser Schätzer wird über den Vektor des Schlüsseltyps betrieben.

numberOfBits
Int32

Anzahl der Bits, in die einen Hashwert aufgenommen werden soll. Muss im Bereich 1 bis 30 liegen.

ngramLength
Int32

Länge des Ngrams.

skipLength
Int32

Maximale Anzahl von Token, die beim Erstellen eines n-Gramms übersprungen werden sollen.

useAllLengths
Boolean

Ob alle n-Gramm-Längen bis zu ngramLength oder nur ngramLengtheingeschlossen werden sollen.

seed
UInt32

Ausgangswert für Hashing.

useOrderedHashing
Boolean

Gibt an, ob die Position jeder Quellspalte im Hash enthalten sein soll (wenn mehrere Quellspalten vorhanden sind).

maximumNumberOfInverts
Int32

Während der Hasherstellung erstellen wir Zuordnungen zwischen ursprünglichen Werten und den erzeugten Hashwerten. Die Textdarstellung von Originalwerten wird in den Slotnamen der Anmerkungen für die neue Spalte gespeichert. Hashing kann z. B. viele Anfangswerte einem zuordnen. maximumNumberOfInverts Gibt die obere Grenze der Anzahl der unterschiedlichen Eingabewerte an, die einem Hash zugeordnet werden sollen, der beibehalten werden soll. 0 behält keine Eingabewerte bei. -1 behält alle Eingabewerte bei, die jedem Hash zugeordnet sind.

rehashUnigrams
Boolean

Gibt an, ob Unigramme neu angeschrieben werden sollen.

Gibt zurück

Beispiele

using System;
using System.Collections.Generic;
using Microsoft.ML;
using Microsoft.ML.Data;

namespace Samples.Dynamic
{
    public static class ProduceHashedNgrams
    {
        public static void Example()
        {
            // Create a new ML context, for ML.NET operations. It can be used for
            // exception tracking and logging, as well as the source of randomness.
            var mlContext = new MLContext();

            // Create a small dataset as an IEnumerable.
            var samples = new List<TextData>()
            {
                new TextData(){ Text = "This is an example to compute n-grams " +
                "using hashing." },

                new TextData(){ Text = "N-gram is a sequence of 'N' consecutive" +
                " words/tokens." },

                new TextData(){ Text = "ML.NET's ProduceHashedNgrams API " +
                "produces count of n-grams and hashes it as an index into a " +
                "vector of given bit length." },

                new TextData(){ Text = "The hashing reduces the size of the " +
                "output feature vector" },

                new TextData(){ Text = "which is useful in case when number of " +
                "n-grams is very large." },
            };

            // Convert training data to IDataView.
            var dataview = mlContext.Data.LoadFromEnumerable(samples);

            // A pipeline for converting text into numeric hashed n-gram features.
            // The following call to 'ProduceHashedNgrams' requires the tokenized
            // text /string as input. This is achieved by calling 
            // 'TokenizeIntoWords' first followed by 'ProduceHashedNgrams'.
            // Please note that the length of the output feature vector depends on
            // the 'numberOfBits' settings.
            var textPipeline = mlContext.Transforms.Text.TokenizeIntoWords("Tokens",
                "Text")
                .Append(mlContext.Transforms.Conversion.MapValueToKey("Tokens"))
                .Append(mlContext.Transforms.Text.ProduceHashedNgrams(
                    "NgramFeatures", "Tokens",
                    numberOfBits: 5,
                    ngramLength: 3,
                    useAllLengths: false,
                    maximumNumberOfInverts: 1));

            // Fit to data.
            var textTransformer = textPipeline.Fit(dataview);
            var transformedDataView = textTransformer.Transform(dataview);

            // Create the prediction engine to get the features extracted from the
            // text.
            var predictionEngine = mlContext.Model.CreatePredictionEngine<TextData,
                TransformedTextData>(textTransformer);

            // Convert the text into numeric features.
            var prediction = predictionEngine.Predict(samples[0]);

            // Print the length of the feature vector.
            Console.WriteLine("Number of Features: " + prediction.NgramFeatures
                .Length);

            // Preview of the produced n-grams.
            // Get the slot names from the column's metadata.
            // The slot names for a vector column corresponds to the names
            // associated with each position in the vector.
            VBuffer<ReadOnlyMemory<char>> slotNames = default;
            transformedDataView.Schema["NgramFeatures"].GetSlotNames(ref slotNames);
            var NgramFeaturesColumn = transformedDataView.GetColumn<VBuffer<float>>(
                transformedDataView.Schema["NgramFeatures"]);

            var slots = slotNames.GetValues();
            Console.Write("N-grams: ");
            foreach (var featureRow in NgramFeaturesColumn)
            {
                foreach (var item in featureRow.Items())
                    Console.Write($"{slots[item.Key]}  ");
                Console.WriteLine();
            }

            // Print the first 10 feature values.
            Console.Write("Features: ");
            for (int i = 0; i < 10; i++)
                Console.Write($"{prediction.NgramFeatures[i]:F4}  ");

            //  Expected output:
            //   Number of Features:  32
            //   N-grams:   This|is|an  example|to|compute  compute|n-grams|using  n-grams|using|hashing.  an|example|to  is|an|example  a|sequence|of  of|'N'|consecutive  is|a|sequence  N-gram|is|a  ...
            //   Features:    0.0000          0.0000               2.0000               0.0000               0.0000        1.0000          0.0000        0.0000              1.0000          0.0000  ...
        }

        private class TextData
        {
            public string Text { get; set; }
        }

        private class TransformedTextData : TextData
        {
            public float[] NgramFeatures { get; set; }
        }
    }
}

Hinweise

NgramHashingEstimator unterscheidet sich von WordHashBagEstimator einer Weise, die tokenisierten Text als Eingabe verwendet, NgramHashingEstimator während WordHashBagEstimator Text intern tokenisiert wird.

Gilt für: