Condividi tramite


TextCatalog.ProduceHashedNgrams Metodo

Definizione

Overload

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

Creare un NgramHashingEstimatoroggetto , che copia i dati dalla colonna specificata in inputColumnName una nuova colonna: outputColumnName e produce un vettore di conteggi di n-grammi hash.

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

Creare un NgramHashingEstimatoroggetto , che accetta i dati dalle più colonne specificate in inputColumnNames una nuova colonna: outputColumnName e produce un vettore di conteggi di n-grammi hash.

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

Creare un NgramHashingEstimatoroggetto , che copia i dati dalla colonna specificata in inputColumnName una nuova colonna: outputColumnName e produce un vettore di conteggi di n-grammi hash.

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

Parametri

catalog
TransformsCatalog.TextTransforms

Catalogo della trasformazione.

outputColumnName
String

Nome della colonna risultante dalla trasformazione di inputColumnName. Il tipo di dati di questa colonna sarà vettore di Single.

inputColumnName
String

Nome della colonna da cui copiare i dati. Questo strumento di stima opera sul vettore del tipo di chiave.

numberOfBits
Int32

Numero di bit in cui eseguire l'hash. Deve essere compreso tra 1 e 30, inclusivo.

ngramLength
Int32

Lunghezza Ngram.

skipLength
Int32

Numero massimo di token da ignorare quando si costruisce un n-gram.

useAllLengths
Boolean

Se includere tutte le lunghezze n-gram fino a ngramLength o solo ngramLength.

seed
UInt32

Hashing di inizializzazione.

useOrderedHashing
Boolean

Se la posizione di ogni colonna di origine deve essere inclusa nell'hash (quando sono presenti più colonne di origine).

maximumNumberOfInverts
Int32

Durante l'hashing vengono creati mapping tra i valori originali e i valori hash prodotti. La rappresentazione testuale dei valori originali viene archiviata nei nomi degli slot delle annotazioni per la nuova colonna. L'hashing, ad esempio, può eseguire il mapping di molti valori iniziali a uno. maximumNumberOfInverts specifica il limite superiore del numero di valori di input distinti mappati a un hash che deve essere mantenuto. 0 non mantiene valori di input. -1 mantiene il mapping di tutti i valori di input a ogni hash.

rehashUnigrams
Boolean

Indica se riassegnare unigrammi.

Restituisce

Commenti

NgramHashingEstimator è diverso da WordHashBagEstimator in un modo che NgramHashingEstimator accetta testo tokenizzato come input mentre WordHashBagEstimator tokenzza il testo internamente.

Si applica a

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

Creare un NgramHashingEstimatoroggetto , che accetta i dati dalle più colonne specificate in inputColumnNames una nuova colonna: outputColumnName e produce un vettore di conteggi di n-grammi hash.

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

Parametri

catalog
TransformsCatalog.TextTransforms

Catalogo della trasformazione.

outputColumnName
String

Nome della colonna risultante dalla trasformazione di inputColumnNames. Il tipo di dati di questa colonna sarà vettore di dimensioni note di Single.

inputColumnNames
String[]

Nome delle più colonne da cui prendere i dati. Questo strumento di stima opera sul vettore del tipo di chiave.

numberOfBits
Int32

Numero di bit in cui eseguire l'hash. Deve essere compreso tra 1 e 30, inclusivo.

ngramLength
Int32

Lunghezza Ngram.

skipLength
Int32

Numero massimo di token da ignorare quando si costruisce un n-gram.

useAllLengths
Boolean

Se includere tutte le lunghezze n-gram fino a ngramLength o solo ngramLength.

seed
UInt32

Hashing di inizializzazione.

useOrderedHashing
Boolean

Se la posizione di ogni colonna di origine deve essere inclusa nell'hash (quando sono presenti più colonne di origine).

maximumNumberOfInverts
Int32

Durante l'hashing vengono creati mapping tra i valori originali e i valori hash prodotti. La rappresentazione testuale dei valori originali viene archiviata nei nomi degli slot delle annotazioni per la nuova colonna. L'hashing, ad esempio, può eseguire il mapping di molti valori iniziali a uno. maximumNumberOfInverts specifica il limite superiore del numero di valori di input distinti mappati a un hash che deve essere mantenuto. 0 non mantiene valori di input. -1 mantiene il mapping di tutti i valori di input a ogni hash.

rehashUnigrams
Boolean

Indica se riassegnare unigrammi.

Restituisce

Esempio

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; }
        }
    }
}

Commenti

NgramHashingEstimator è diverso da WordHashBagEstimator in un modo che NgramHashingEstimator accetta testo tokenizzato come input mentre WordHashBagEstimator tokenzza il testo internamente.

Si applica a