diff --git a/BotSharp.Core/BotSharp.Core.csproj b/BotSharp.Core/BotSharp.Core.csproj
index 0e69260c..b73445d2 100644
--- a/BotSharp.Core/BotSharp.Core.csproj
+++ b/BotSharp.Core/BotSharp.Core.csproj
@@ -13,18 +13,23 @@
Haiping Chen
BotSharp.Core
- Upgrade .Net Core to 2.1
+ Open source chatbot platform written in C#. Ready for enterprise.
MIT
https://github.com/Oceania2018/BotSharp
NLU, Chatbot, Bot, AI Bot
- 1.2.0
- Support Rasa NLU 0.12.x
+ 1.3.0
+ Add NLP pipeline. Support training model by input context.
Since 2018 Haiping Chen
https://github.com/Oceania2018/BotSharp
+ 1.3.0.0
- TRACE;DEBUG;MODEL_PER_CONTEXTS
+ TRACE;MODEL_PER_CONTEXTS;NETCOREAPP;NETCOREAPP2_1
+
+
+
+ TRACE;MODEL_PER_CONTEXTS
diff --git a/BotSharp.Core/Engines/RequestExtension.cs b/BotSharp.Core/Engines/RequestExtension.cs
index 0854d3f4..10396bf8 100644
--- a/BotSharp.Core/Engines/RequestExtension.cs
+++ b/BotSharp.Core/Engines/RequestExtension.cs
@@ -36,6 +36,8 @@ namespace BotSharp.Core.Engines
#else
var result = CallRasa(rasa.agent.Id, request.Query.First(), rasa.agent.Id);
#endif
+ result.Content.Log();
+
RasaResponse response = result.Data;
aiResponse.Id = Guid.NewGuid().ToString();
aiResponse.Lang = rasa.agent.Language;
diff --git a/BotSharp.Core/Engines/SpaCy/SpaCyEntityRecognizer.cs b/BotSharp.Core/Engines/SpaCy/SpaCyEntityRecognizer.cs
new file mode 100644
index 00000000..d0fd5587
--- /dev/null
+++ b/BotSharp.Core/Engines/SpaCy/SpaCyEntityRecognizer.cs
@@ -0,0 +1,44 @@
+using BotSharp.Core.Abstractions;
+using BotSharp.Core.Agents;
+using Microsoft.Extensions.Configuration;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using RestSharp;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace BotSharp.Core.Engines.SpaCy
+{
+ public class SpaCyEntityRecognizer : INlpPipeline
+ {
+ List entitiesInTrainingSet = new List();
+ public IConfiguration Configuration { get; set; }
+
+ public bool Process(Agent agent, JObject data)
+ {
+ String modelPath = "./entity_rec_output";
+ String newModelName = "test";
+ String outputDir = "./entity_rec_output2";
+ int iterTimes = 20;
+
+ agent.Entities.ForEach(entity => entitiesInTrainingSet.Add(entity.Name));
+ var client = new RestClient(Configuration.GetSection("SpaCyProvider:Url").Value);
+ var request = new RestRequest("entityrecognizer", Method.POST);
+ request.RequestFormat = DataFormat.Json;
+
+ request.AddParameter("application/json", JsonConvert.SerializeObject(new { ModelPath = modelPath, NewModelName = newModelName, OutputDir = outputDir, IterTimes = iterTimes, EntitiesInTrainingSet = entitiesInTrainingSet }), ParameterType.RequestBody);
+
+ var response = client.Execute(request);
+
+ data["EntityModelTrained"] = response.Data.EntityModelTrained;
+
+ return true;
+ }
+ }
+
+ public class Result
+ {
+ public Boolean EntityModelTrained { get; set; }
+ }
+}
diff --git a/BotSharp.UnitTest/AgentTest.cs b/BotSharp.UnitTest/AgentTest.cs
index 766f0723..7853cbab 100644
--- a/BotSharp.UnitTest/AgentTest.cs
+++ b/BotSharp.UnitTest/AgentTest.cs
@@ -7,6 +7,7 @@ using Microsoft.EntityFrameworkCore;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Collections.Generic;
+using System.IO;
using System.Linq;
using System.Text;
@@ -50,7 +51,7 @@ namespace BotSharp.UnitTest
var rasa = new RasaAi(dc);
var importer = new AgentImporterInDialogflow();
- string dataDir = $"{Database.ContentRootPath}\\App_Data\\DbInitializer\\Agents\\";
+ string dataDir = $"{Database.ContentRootPath}App_Data{Path.DirectorySeparatorChar}DbInitializer{Path.DirectorySeparatorChar}Agents{Path.DirectorySeparatorChar}";
var agent = rasa.RestoreAgent(importer, BOT_NAME, dataDir);
agent.Id = BOT_ID;
agent.ClientAccessToken = BOT_CLIENT_TOKEN;
diff --git a/BotSharp.UnitTest/Settings/settings.bot.json b/BotSharp.UnitTest/Settings/settings.bot.json
index 596c6c28..1cbbe994 100644
--- a/BotSharp.UnitTest/Settings/settings.bot.json
+++ b/BotSharp.UnitTest/Settings/settings.bot.json
@@ -9,6 +9,6 @@
"SpaCyProvider": {
"Url": "http://10.2.21.200:5005"
},
- "Pipe": "SpaCyTokenizer, SpacyFeaturizer, SpaCyEntitizer, SpaCyTextCategorizer"
+ "Pipe": "SpaCyTokenizer, SpacyFeaturizer, SpaCyEntitizer, SpaCyTextCategorizer, SpaCyEntityRecognizer"
}
}