Compartir a través de


TextCatalog.ProduceHashedNgrams Método

Definición

Sobrecargas

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

Cree un NgramHashingEstimator, que copia los datos de la columna especificada en inputColumnName en una nueva columna: outputColumnName y genera un vector de recuentos de n-gramas con hash.

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

Cree un NgramHashingEstimator, que toma los datos de las varias columnas especificadas en inputColumnNames en una nueva columna: outputColumnName y genera un vector de recuentos de n-gramas con hash.

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

Cree un NgramHashingEstimator, que copia los datos de la columna especificada en inputColumnName en una nueva columna: outputColumnName y genera un vector de recuentos de n-gramas con 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

Parámetros

catalog
TransformsCatalog.TextTransforms

Catálogo de la transformación.

outputColumnName
String

Nombre de la columna resultante de la transformación de inputColumnName. El tipo de datos de esta columna será vector de Single.

inputColumnName
String

Nombre de la columna de la que se van a copiar los datos. Este estimador opera sobre el vector de tipo de clave.

numberOfBits
Int32

Número de bits en los que se aplica el código hash. Debe estar entre 1 y 30, ambos inclusive.

ngramLength
Int32

Longitud del ngrama.

skipLength
Int32

Número máximo de tokens que se omitirán al construir un n-grama.

useAllLengths
Boolean

Si se deben incluir todas las longitudes de n-gramas hasta ngramLength o solo ngramLength.

seed
UInt32

Inicialización de hash.

useOrderedHashing
Boolean

Determina si la posición de cada columna de origen debe incluirse en el hash (cuando hay varias columnas de origen).

maximumNumberOfInverts
Int32

Durante el hash se crean asignaciones entre los valores originales y los valores hash generados. La representación de texto de los valores originales se almacena en los nombres de ranura de las anotaciones de la nueva columna. El hash, como tal, puede asignar muchos valores iniciales a uno. maximumNumberOfInverts especifica el límite superior del número de valores de entrada distintos que se deben conservar en un hash. 0 no conserva ningún valor de entrada. -1 conserva todas las asignaciones de valores de entrada a cada hash.

rehashUnigrams
Boolean

Si se van a volver a guardar unigramas.

Devoluciones

Comentarios

NgramHashingEstimator es diferente de WordHashBagEstimator una manera que NgramHashingEstimator toma texto tokenizado como entrada mientras WordHashBagEstimator tokeniza el texto internamente.

Se aplica a

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

Cree un NgramHashingEstimator, que toma los datos de las varias columnas especificadas en inputColumnNames en una nueva columna: outputColumnName y genera un vector de recuentos de n-gramas con 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

Parámetros

catalog
TransformsCatalog.TextTransforms

Catálogo de la transformación.

outputColumnName
String

Nombre de la columna resultante de la transformación de inputColumnNames. El tipo de datos de esta columna será vector de tamaño conocido de Single.

inputColumnNames
String[]

Nombre de las varias columnas de las que se van a tomar los datos. Este estimador opera sobre el vector de tipo de clave.

numberOfBits
Int32

Número de bits en los que se aplica el código hash. Debe estar entre 1 y 30, ambos inclusive.

ngramLength
Int32

Longitud del ngrama.

skipLength
Int32

Número máximo de tokens que se omitirán al construir un n-grama.

useAllLengths
Boolean

Si se deben incluir todas las longitudes de n-gramas hasta ngramLength o solo ngramLength.

seed
UInt32

Inicialización de hash.

useOrderedHashing
Boolean

Determina si la posición de cada columna de origen debe incluirse en el hash (cuando hay varias columnas de origen).

maximumNumberOfInverts
Int32

Durante el hash se crean asignaciones entre los valores originales y los valores hash generados. La representación de texto de los valores originales se almacena en los nombres de ranura de las anotaciones de la nueva columna. El hash, como tal, puede asignar muchos valores iniciales a uno. maximumNumberOfInverts especifica el límite superior del número de valores de entrada distintos que se deben conservar en un hash. 0 no conserva ningún valor de entrada. -1 conserva todas las asignaciones de valores de entrada a cada hash.

rehashUnigrams
Boolean

Si se van a volver a guardar unigramas.

Devoluciones

Ejemplos

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

Comentarios

NgramHashingEstimator es diferente de WordHashBagEstimator una manera que NgramHashingEstimator toma texto tokenizado como entrada mientras WordHashBagEstimator tokeniza el texto internamente.

Se aplica a