From d2c4fa3f363f03de7e4a6e3fd258929dd8bd30fc Mon Sep 17 00:00:00 2001 From: Bo Peng Date: Thu, 21 Jun 2018 14:54:36 -0500 Subject: [PATCH 1/3] SpaCy Entity Recognizer --- .../Engines/SpaCy/SpaCyEntityRecognizer.cs | 44 +++++++++++++++++++ BotSharp.UnitTest/Settings/settings.bot.json | 2 +- 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 BotSharp.Core/Engines/SpaCy/SpaCyEntityRecognizer.cs 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/Settings/settings.bot.json b/BotSharp.UnitTest/Settings/settings.bot.json index 1e115890..798a07b3 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" } } From 253a99275fb180194447c5dbca2e96dc7bf6b2ce Mon Sep 17 00:00:00 2001 From: Deep-Blue-2013 Date: Thu, 21 Jun 2018 16:30:06 -0500 Subject: [PATCH 2/3] fix dir separator in UnitTest for Linux env --- BotSharp.UnitTest/AgentTest.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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; From c9dda29e5351dd194b934a60817d2da0c69633d6 Mon Sep 17 00:00:00 2001 From: Oceania2018 Date: Thu, 21 Jun 2018 20:10:20 -0500 Subject: [PATCH 3/3] add conversation debug log --- BotSharp.Core/BotSharp.Core.csproj | 13 +++++++++---- BotSharp.Core/Engines/RequestExtension.cs | 2 ++ 2 files changed, 11 insertions(+), 4 deletions(-) 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 b271f9ea..f65c6edc 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;