C# ML.Net情感分析ASP.Net MVC web应用程序中评论不起作用的预测

C# ML.Net情感分析ASP.Net MVC web应用程序中评论不起作用的预测,c#,.net,asp.net-mvc,ml.net,C#,.net,Asp.net Mvc,Ml.net,我正在尝试在.NET framework中创建项目,其中控制器代码如下: [HttpGet] public ActionResult Analysis() { return View(); } [HttpPost] public ActionResult Analysis(ModelInput input) { // Load the model MLContext mlContext = new MLContext(); ITransformer mlMo

我正在尝试在.NET framework中创建项目,其中控制器代码如下:

[HttpGet]
public ActionResult Analysis()
{
    return View();
}

[HttpPost]
public ActionResult Analysis(ModelInput input)
{
    // Load the model  
    MLContext mlContext = new MLContext();
    ITransformer mlModel = mlContext.Model.Load(@"C:\Users\samya\source\repos\riya123\riya123ML.Model\MLModel.zip", out var modelInputSchema);

    // Create prediction engine related to the loaded train model
    var predEngine = mlContext.Model.CreatePredictionEngine<ModelInput, ModelOutput>(mlModel);

    // Input  
    input.Year = DateTime.Now.Year;

    // Try model on sample data and find the score
    ModelOutput result = predEngine.Predict(input);

    // Store result into ViewBag
    ViewBag.Result = result;

    return View();
}
[HttpGet]
公共行动结果分析()
{
返回视图();
}
[HttpPost]
公共行动结果分析(模型输入)
{
//加载模型
MLContext MLContext=新的MLContext();
ITransformer mlModel=mlContext.Model.Load(@“C:\Users\samya\source\repos\riya123\riya123ML.Model\mlModel.zip”,out-var-modelInputSchema);
//创建与加载列车模型相关的预测引擎
var predEngine=mlContext.Model.CreatePredictionEngine(mlModel);
//输入
input.Year=DateTime.Now.Year;
//在样本数据上尝试模型并找到分数
ModelOutput结果=predEngine.Predict(输入);
//将结果存储到ViewBag中
ViewBag.Result=结果;
返回视图();
}
当我尝试运行时,它会显示如下错误,尽管在解决方案资源管理器中可以看到dll:

引发异常:Microsoft.ML.CpuMath.dll中的“System.DllNotFoundException”

Microsoft.ML.CpuMath.dll中发生“System.DllNotFoundException”类型的异常,但未在用户代码中处理

无法加载DLL“CpuMathNative”:找不到指定的模块。(来自HRESULT的异常:0x8007007E)


ML.NET的
v1.4.0
版本有一个bug,它使用
packages.config
中断项目。见:

要解决此问题,请尝试以下可能的解决方法之一:

  • 使用
    PackageReference
    而不是packages.config
  • 退回到ML.NET的
    v1.3.1
    ,直到新版本的补丁出现
  • 或者,您可以将
    CpuMathNative.dll
    从nuget包复制到输出文件夹中。您可以手动执行此操作,也可以对.csproj进行如下更改:
  • 
    保存最新
    假的
    %(文件名)%(扩展名)
    保存最新
    假的
    %(文件名)%(扩展名)
    
    (注意:如果您的packages文件夹不是..\packages,则需要调整上面的路径。)


    还要注意一件事:您不能在.NET Framework上对ML.NET使用
    AnyCPU
    。由于ML.NET使用本机程序集,您需要明确选择
    x86
    x64

    请尝试从NuGet重新安装Microsoft.ML.CpuMath软件包。卸载了ML.NET和ML.CpuMath软件包并重新安装,但错误保持不变。下面是一个有类似问题但无法理解的链接: