用ml.net提取Ngrams

问题描述 投票:0回答:1

我有以下管道:

        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”列包含浮点向量。我怎样才能得到实际的Ngrams,即“一二”,“两棵树”?

n-gram ml.net
1个回答
0
投票

这是一个适用于我的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的索引对应于您的浮点向量。

© www.soinside.com 2019 - 2024. All rights reserved.