Sdílet prostřednictvím


TextCatalog.ProduceHashedNgrams Metoda

Definice

Přetížení

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

Vytvořte NgramHashingEstimatorobjekt , který zkopíruje data ze sloupce zadaného do inputColumnName nového sloupce: outputColumnName a vytvoří vektor počtu hodnot hashovaných n-gramů.

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

NgramHashingEstimatorVytvořte objekt , který přebírá data z více sloupců zadaných inputColumnNames do nového sloupce: outputColumnName a vytvoří vektor počtu hodnot hashovaných n-gramů.

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

Vytvořte NgramHashingEstimatorobjekt , který zkopíruje data ze sloupce zadaného do inputColumnName nového sloupce: outputColumnName a vytvoří vektor počtu hodnot hashovaných n-gramů.

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

Parametry

catalog
TransformsCatalog.TextTransforms

Katalog transformace.

outputColumnName
String

Název sloupce, který je výsledkem transformace inputColumnName. Datový typ tohoto sloupce bude vektorem Single.

inputColumnName
String

Název sloupce, ze který chcete zkopírovat data. Tento estimátor pracuje s vektorem typu klíče.

numberOfBits
Int32

Počet bitů k hodnotě hash. Musí být mezi 1 a 30 včetně.

ngramLength
Int32

Délka Ngramu.

skipLength
Int32

Maximální počet tokenů, které se mají přeskočit při vytváření n-gramu.

useAllLengths
Boolean

Zda zahrnout všechny n-gram délky až do ngramLength nebo pouze ngramLength.

seed
UInt32

Počáteční hodnota hash.

useOrderedHashing
Boolean

Určuje, jestli má být pozice jednotlivých zdrojových sloupců zahrnuta do hodnoty hash (pokud existuje více zdrojových sloupců).

maximumNumberOfInverts
Int32

Během hashování vytváříme mapování mezi původními hodnotami a vytvořenými hodnotami hash. Textová reprezentace původních hodnot jsou uložena v názvech slotů poznámek pro nový sloupec. Hashování, například, může mapovat mnoho počátečních hodnot na jednu. maximumNumberOfInverts určuje horní mez počtu jedinečných vstupních hodnot mapování na hodnotu hash, která se má zachovat. 0 nezachovává žádné vstupní hodnoty. -1 uchovává mapování všech vstupních hodnot na každou hodnotu hash.

rehashUnigrams
Boolean

Zda se mají rehashovat jednogramy.

Návraty

Poznámky

NgramHashingEstimator se liší od WordHashBagEstimator způsobu, který NgramHashingEstimator přijímá tokenizovaný text jako vstup, zatímco WordHashBagEstimator tokenizuje text interně.

Platí pro

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

NgramHashingEstimatorVytvořte objekt , který přebírá data z více sloupců zadaných inputColumnNames do nového sloupce: outputColumnName a vytvoří vektor počtu hodnot hashovaných n-gramů.

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

Parametry

catalog
TransformsCatalog.TextTransforms

Katalog transformace.

outputColumnName
String

Název sloupce, který je výsledkem transformace inputColumnNames. Datový typ tohoto sloupce bude vektorem známé velikosti Single.

inputColumnNames
String[]

Název více sloupců, ze kterých mají být data odebrána. Tento estimátor pracuje s vektorem typu klíče.

numberOfBits
Int32

Počet bitů k hodnotě hash. Musí být mezi 1 a 30 včetně.

ngramLength
Int32

Délka Ngramu.

skipLength
Int32

Maximální počet tokenů, které se mají přeskočit při vytváření n-gramu.

useAllLengths
Boolean

Zda zahrnout všechny n-gram délky až do ngramLength nebo pouze ngramLength.

seed
UInt32

Počáteční hodnota hash.

useOrderedHashing
Boolean

Určuje, jestli má být pozice jednotlivých zdrojových sloupců zahrnuta do hodnoty hash (pokud existuje více zdrojových sloupců).

maximumNumberOfInverts
Int32

Během hashování vytváříme mapování mezi původními hodnotami a vytvořenými hodnotami hash. Textová reprezentace původních hodnot jsou uložena v názvech slotů poznámek pro nový sloupec. Hashování, například, může mapovat mnoho počátečních hodnot na jednu. maximumNumberOfInverts určuje horní mez počtu jedinečných vstupních hodnot mapování na hodnotu hash, která se má zachovat. 0 nezachovává žádné vstupní hodnoty. -1 uchovává mapování všech vstupních hodnot na každou hodnotu hash.

rehashUnigrams
Boolean

Zda se mají rehashovat jednogramy.

Návraty

Příklady

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

Poznámky

NgramHashingEstimator se liší od WordHashBagEstimator způsobu, který NgramHashingEstimator přijímá tokenizovaný text jako vstup, zatímco WordHashBagEstimator tokenizuje text interně.

Platí pro