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" } }