Извлечение Ngrams с ml.net - PullRequest
       22

Извлечение Ngrams с ml.net

0 голосов
/ 07 марта 2019

У меня есть следующий конвейер:

        var mlContext = new MLContext();

        var data = mlContext.Data.LoadFromEnumerable(new[]
        {
            new Input {Message = "one two three one two three"},
            new Input {Message = "one two"},
            new Input {Message = "two three"}
        });

        var pipeline =
            mlContext.Transforms.Text.FeaturizeText("TextFeatures", "Message")
                .Append(mlContext.Transforms.Text.TokenizeCharacters(
                    "MessageTokens", "Message"))
                .Append(mlContext.Transforms.Text.ProduceNgrams(
                    "MessageNgrams", "MessageTokens", 2));

        var transformedData = pipeline.Fit(data).Transform(data);

Столбец «MessageNgrams» после выполнения канала содержит векторы с плавающей точкой.Как я могу получить фактические Nграмм то есть "один два", "два дерева"?

1 Ответ

0 голосов
/ 13 марта 2019

Вот фрагмент кода, который работает для моего SCDA, должен быть очень похожим или давать подсказки о том, как его достичь.

var slotLabelBuffer = default(VBuffer<ReadOnlyMemory<char>>);
transformedData.Schema["MessageNgrams"].GetSlotNames(ref slotLabelBuffer);

var slotLabels = new Dictionary<int, string>();
for (int i = 0; i < slotLabelBuffer.Length; i++)
   slotLabels.Add(i, slotLabelBuffer.GetItemOrDefault(i).ToString());

Индекс slotLabels соответствует вашему вектору с плавающей точкой.

...