Bagikan melalui


TextCatalog.ProduceHashedNgrams Metode

Definisi

Overload

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

Buat NgramHashingEstimator, yang menyalin data dari kolom yang ditentukan ke inputColumnName kolom baru: outputColumnName dan menghasilkan vektor hitungan n-gram yang di-hash.

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

Buat NgramHashingEstimator, yang mengambil data dari beberapa kolom yang ditentukan ke inputColumnNames kolom baru: outputColumnName dan menghasilkan vektor hitungan n-gram yang di-hash.

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

Buat NgramHashingEstimator, yang menyalin data dari kolom yang ditentukan ke inputColumnName kolom baru: outputColumnName dan menghasilkan vektor hitungan n-gram yang di-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

Parameter

catalog
TransformsCatalog.TextTransforms

Katalog transformasi.

outputColumnName
String

Nama kolom yang dihasilkan dari transformasi inputColumnName. Jenis data kolom ini akan menjadi vektor .Single

inputColumnName
String

Nama kolom untuk menyalin data. Estimator ini beroperasi melalui vektor jenis kunci.

numberOfBits
Int32

Jumlah bit yang akan di-hash. Harus antara 1 dan 30, inklusif.

ngramLength
Int32

Panjang Ngram.

skipLength
Int32

Jumlah maksimum token yang akan dilewati saat membuat n-gram.

useAllLengths
Boolean

Apakah akan menyertakan semua panjang n-gram hingga ngramLength atau hanya ngramLength.

seed
UInt32

Benih hash.

useOrderedHashing
Boolean

Apakah posisi setiap kolom sumber harus disertakan dalam hash (ketika ada beberapa kolom sumber).

maximumNumberOfInverts
Int32

Selama hashing, kami membangun pemetaan antara nilai asli dan nilai hash yang dihasilkan. Representasi teks nilai asli disimpan dalam nama slot anotasi untuk kolom baru. Hashing, dengan demikian, dapat memetakan banyak nilai awal menjadi satu. maximumNumberOfInverts menentukan batas atas jumlah pemetaan nilai input yang berbeda ke hash yang harus dipertahankan. 0 tidak mempertahankan nilai input apa pun. -1 mempertahankan semua pemetaan nilai input ke setiap hash.

rehashUnigrams
Boolean

Apakah akan merehash unigram.

Mengembalikan

Keterangan

NgramHashingEstimator berbeda dari WordHashBagEstimator dengan cara yang NgramHashingEstimator mengambil teks token sebagai input saat WordHashBagEstimator membuat token teks secara internal.

Berlaku untuk

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

Buat NgramHashingEstimator, yang mengambil data dari beberapa kolom yang ditentukan ke inputColumnNames kolom baru: outputColumnName dan menghasilkan vektor hitungan n-gram yang di-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

Parameter

catalog
TransformsCatalog.TextTransforms

Katalog transformasi.

outputColumnName
String

Nama kolom yang dihasilkan dari transformasi inputColumnNames. Jenis data kolom ini akan menjadi vektor dengan ukuran yang diketahui dari Single.

inputColumnNames
String[]

Nama beberapa kolom untuk mengambil data. Estimator ini beroperasi melalui vektor jenis kunci.

numberOfBits
Int32

Jumlah bit yang akan di-hash. Harus antara 1 dan 30, inklusif.

ngramLength
Int32

Panjang Ngram.

skipLength
Int32

Jumlah maksimum token yang akan dilewati saat membuat n-gram.

useAllLengths
Boolean

Apakah akan menyertakan semua panjang n-gram hingga ngramLength atau hanya ngramLength.

seed
UInt32

Benih hash.

useOrderedHashing
Boolean

Apakah posisi setiap kolom sumber harus disertakan dalam hash (ketika ada beberapa kolom sumber).

maximumNumberOfInverts
Int32

Selama hashing, kami membangun pemetaan antara nilai asli dan nilai hash yang dihasilkan. Representasi teks nilai asli disimpan dalam nama slot anotasi untuk kolom baru. Hashing, dengan demikian, dapat memetakan banyak nilai awal menjadi satu. maximumNumberOfInverts menentukan batas atas jumlah pemetaan nilai input yang berbeda ke hash yang harus dipertahankan. 0 tidak mempertahankan nilai input apa pun. -1 mempertahankan semua pemetaan nilai input ke setiap hash.

rehashUnigrams
Boolean

Apakah akan merehash unigram.

Mengembalikan

Contoh

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

Keterangan

NgramHashingEstimator berbeda dari WordHashBagEstimator dengan cara yang NgramHashingEstimator mengambil teks token sebagai input saat WordHashBagEstimator membuat token teks secara internal.

Berlaku untuk