Partager via


TextCatalog.ProduceHashedNgrams Méthode

Définition

Surcharges

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

Créez un NgramHashingEstimator, qui copie les données de la colonne spécifiée dans inputColumnName une nouvelle colonne : outputColumnName et produit un vecteur de nombres de n-grammes hachés.

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

Créez un NgramHashingEstimator, qui prend les données de plusieurs colonnes spécifiées dans inputColumnNames une nouvelle colonne : outputColumnName et produit un vecteur de nombres de n-grammes hachés.

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

Créez un NgramHashingEstimator, qui copie les données de la colonne spécifiée dans inputColumnName une nouvelle colonne : outputColumnName et produit un vecteur de nombres de n-grammes hachés.

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

Paramètres

catalog
TransformsCatalog.TextTransforms

Catalogue de la transformation.

outputColumnName
String

Nom de la colonne résultant de la transformation de inputColumnName. Le type de données de cette colonne sera le vecteur de Single.

inputColumnName
String

Nom de la colonne à partir de laquelle copier les données. Cet estimateur fonctionne sur le vecteur du type de clé.

numberOfBits
Int32

Nombre de bits à hacher. Doit être compris entre 1 et 30 (inclus).

ngramLength
Int32

Longueur de Ngram.

skipLength
Int32

Nombre maximal de jetons à ignorer lors de la construction d’un n-gram.

useAllLengths
Boolean

Qu’il s’agisse d’inclure toutes les longueurs n-gram jusqu’à ngramLength ou seulement ngramLength.

seed
UInt32

Seed de hachage.

useOrderedHashing
Boolean

Indique si la position de chaque colonne source doit être incluse dans le hachage (s'il existe plusieurs colonnes sources).

maximumNumberOfInverts
Int32

Pendant le hachage, nous construisons des mappages entre les valeurs d’origine et les valeurs de hachage produites. La représentation textuelle des valeurs d’origine est stockée dans les noms d’emplacements des annotations pour la nouvelle colonne. Le hachage, par exemple, peut mapper de nombreuses valeurs initiales à une. maximumNumberOfInverts spécifie la limite supérieure du nombre de valeurs d’entrée distinctes mappées à un hachage qui doit être conservé. 0 ne conserve aucune valeur d’entrée. -1 conserve tous les mappages de valeurs d’entrée à chaque hachage.

rehashUnigrams
Boolean

Indique s’il faut rechasser des unigrammes.

Retours

Remarques

NgramHashingEstimator est différent d’une WordHashBagEstimator façon qui NgramHashingEstimator prend le texte jetonisé comme entrée pendant que WordHashBagEstimator tokenise du texte en interne.

S’applique à

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

Créez un NgramHashingEstimator, qui prend les données de plusieurs colonnes spécifiées dans inputColumnNames une nouvelle colonne : outputColumnName et produit un vecteur de nombres de n-grammes hachés.

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

Paramètres

catalog
TransformsCatalog.TextTransforms

Catalogue de la transformation.

outputColumnName
String

Nom de la colonne résultant de la transformation de inputColumnNames. Le type de données de cette colonne sera un vecteur de taille connue de Single.

inputColumnNames
String[]

Nom des plusieurs colonnes à partir de lesquelles prendre les données. Cet estimateur fonctionne sur le vecteur du type de clé.

numberOfBits
Int32

Nombre de bits à hacher. Doit être compris entre 1 et 30 (inclus).

ngramLength
Int32

Longueur de Ngram.

skipLength
Int32

Nombre maximal de jetons à ignorer lors de la construction d’un n-gram.

useAllLengths
Boolean

Qu’il s’agisse d’inclure toutes les longueurs n-gram jusqu’à ngramLength ou seulement ngramLength.

seed
UInt32

Seed de hachage.

useOrderedHashing
Boolean

Indique si la position de chaque colonne source doit être incluse dans le hachage (s'il existe plusieurs colonnes sources).

maximumNumberOfInverts
Int32

Pendant le hachage, nous construisons des mappages entre les valeurs d’origine et les valeurs de hachage produites. La représentation textuelle des valeurs d’origine est stockée dans les noms d’emplacements des annotations pour la nouvelle colonne. Le hachage, par exemple, peut mapper de nombreuses valeurs initiales à une. maximumNumberOfInverts spécifie la limite supérieure du nombre de valeurs d’entrée distinctes mappées à un hachage qui doit être conservé. 0 ne conserve aucune valeur d’entrée. -1 conserve tous les mappages de valeurs d’entrée à chaque hachage.

rehashUnigrams
Boolean

Indique s’il faut rechasser des unigrammes.

Retours

Exemples

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

Remarques

NgramHashingEstimator est différent d’une WordHashBagEstimator façon qui NgramHashingEstimator prend le texte jetonisé comme entrée pendant que WordHashBagEstimator tokenise du texte en interne.

S’applique à