Я пытаюсь создать бота FAQ с ML.NET (не могу использовать QNA Maker).Я хочу сравнить вопросы в разделе часто задаваемых вопросов с вводом, а затем вернуть наиболее релевантный ответ.Большинство ботов часто задаваемых вопросов, которые я нашел в Интернете, работали следующим образом: задайте вопросы для вопросов FAQ, задайте параметры ввода, сделайте косинусное сходство, а затем верните наиболее релевантный ответ.Я на самом деле не понимаю подделки Microsoft, но не могу даже протестировать ее, потому что не могу найти, как связать вектор признаков с исходным текстом.
Это то, что я имею до сих пор (в Main):
mlContext = new MLContext(seed: 0);
IDataView dataview = mlContext.Data.LoadFromTextFile<SampleData>("Data/training_data.tsv", hasHeader: true);
var textPipeline = mlContext.Transforms.Text.FeaturizeText("Features", "Question");
var textTransformer = textPipeline.Fit(dataview);
var predictionEngine = mlContext.Model.CreatePredictionEngine<SampleData, TransformedTextData>(textTransformer);
SampleData sampleData = new SampleData()
{
Question = "Setting Up Data Exchange" //would be changed to user input
};
var prediction = predictionEngine.Predict(sampleData);
Console.WriteLine($"Number of Features: {prediction.Features.Length}");
Console.Write("Features: ");
for (int i = 0; i < 1000; i++)
Console.Write($"{prediction.Features[i]:F4} ");
Класс SampleData:
public class SampleData
{
[LoadColumn(0)]
public string Question { get; set; }
[LoadColumn(1)]
public string Answer { get; set; }
}
public class TransformedTextData : SampleData
{
public float[] Features { get; set; }
}
Возвращает вектор объектов, но почти все значения равны нулю, так что, надеюсь, это нормально, но я просто не знаю, как я могупревратить это в читаемый вывод.Кроме того, я не понимаю, почему я не могу просто описать и смоделировать только текст FAQ, зачем мне нужен пример вопроса, я чувствую, что это неэффективно, и, вероятно, я не делаю это правильно.Спасибо за любую помощь!