TextCatalog.ProduceHashedNgrams Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
ProduceHashedNgrams(TransformsCatalog+TextTransforms, String, String, Int32, Int32, Int32, Boolean, UInt32, Boolean, Int32, Boolean) |
NgramHashingEstimatorСоздайте объект, который копирует данные из столбца, указанного в |
ProduceHashedNgrams(TransformsCatalog+TextTransforms, String, String[], Int32, Int32, Int32, Boolean, UInt32, Boolean, Int32, Boolean) |
NgramHashingEstimatorСоздайте объект, который принимает данные из нескольких столбцов, указанных в |
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 маркеризирует текст внутри.