TextCatalog.ProduceHashedNgrams Метод

Определение

Перегрузки

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

NgramHashingEstimatorСоздайте объект, который копирует данные из столбца, указанного в inputColumnName новом столбце, outputColumnName и создает вектор количества хэшированных n-граммов.

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

NgramHashingEstimatorСоздайте объект, который принимает данные из нескольких столбцов, указанных в inputColumnNames новом столбце, outputColumnName и создает вектор количества хэшированных n-граммов.

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

NgramHashingEstimatorСоздайте объект, который копирует данные из столбца, указанного в inputColumnName новом столбце, outputColumnName и создает вектор количества хэшированных n-граммов.

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

Параметры

catalog
TransformsCatalog.TextTransforms

Каталог преобразования.

outputColumnName
String

Имя столбца, полученного из преобразования inputColumnName. Тип данных этого столбца будет вектором Single.

inputColumnName
String

Имя столбца для копирования данных. Этот оценщик работает над вектором типа ключа.

numberOfBits
Int32

Число битов в результирующем хэше. Должно находиться в диапазоне от 1 до 30 включительно.

ngramLength
Int32

Длина Nграммы.

skipLength
Int32

Максимальное количество пропускаемых маркеров при создании n-граммы.

useAllLengths
Boolean

Указывает, следует ли включать все n-граммы длиной до ngramLength или только ngramLength.

seed
UInt32

Начальное значение хэширования.

useOrderedHashing
Boolean

Следует ли включать расположение каждого исходного столбца в хэш (при наличии нескольких исходных столбцов).

maximumNumberOfInverts
Int32

Во время хэширования мы создаем сопоставления между исходными значениями и созданными хэш-значениями. Текстовое представление исходных значений хранится в именах слотов заметок для нового столбца. Хэширование, например, может сопоставлять множество начальных значений с одним. maximumNumberOfInverts задает верхнюю границу числа уникальных входных значений, сопоставленных с хэшом, который следует сохранить. 0 не сохраняет входные значения. -1 сохраняет все входные значения, сопоставленные с каждым хэшом.

rehashUnigrams
Boolean

Следует ли перехвашивать униграммы.

Возвращаемое значение

Комментарии

NgramHashingEstimator отличается от WordHashBagEstimator способа, который NgramHashingEstimator принимает маркеризованный текст в качестве входных данных, а WordHashBagEstimator маркеризирует текст внутри.

Применяется к

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

NgramHashingEstimatorСоздайте объект, который принимает данные из нескольких столбцов, указанных в inputColumnNames новом столбце, outputColumnName и создает вектор количества хэшированных n-граммов.

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

Параметры

catalog
TransformsCatalog.TextTransforms

Каталог преобразования.

outputColumnName
String

Имя столбца, полученного из преобразования inputColumnNames. Тип данных этого столбца будет вектором известного Singleразмера .

inputColumnNames
String[]

Имя нескольких столбцов для получения данных. Этот оценщик работает над вектором типа ключа.

numberOfBits
Int32

Число битов в результирующем хэше. Должно находиться в диапазоне от 1 до 30 включительно.

ngramLength
Int32

Длина Nграммы.

skipLength
Int32

Максимальное количество пропускаемых маркеров при создании n-граммы.

useAllLengths
Boolean

Указывает, следует ли включать все n-граммы длиной до ngramLength или только ngramLength.

seed
UInt32

Начальное значение хэширования.

useOrderedHashing
Boolean

Следует ли включать расположение каждого исходного столбца в хэш (при наличии нескольких исходных столбцов).

maximumNumberOfInverts
Int32

Во время хэширования мы создаем сопоставления между исходными значениями и созданными хэш-значениями. Текстовое представление исходных значений хранится в именах слотов заметок для нового столбца. Хэширование, например, может сопоставлять множество начальных значений с одним. maximumNumberOfInverts задает верхнюю границу числа уникальных входных значений, сопоставленных с хэшом, который следует сохранить. 0 не сохраняет входные значения. -1 сохраняет все входные значения, сопоставленные с каждым хэшом.

rehashUnigrams
Boolean

Следует ли перехвашивать униграммы.

Возвращаемое значение

Примеры

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

Комментарии

NgramHashingEstimator отличается от WordHashBagEstimator способа, который NgramHashingEstimator принимает маркеризованный текст в качестве входных данных, а WordHashBagEstimator маркеризирует текст внутри.

Применяется к