public void TestDecode() { var decoder = new CRFDecoder(); var options = new DecoderOptions { ModelFileName = @"C:\Users\haipi\Documents\Projects\BotSharp\Data\CRF\ner_model" }; //Load encoded model from file decoder.LoadModel(options.ModelFileName); //Create decoder tagger instance. var tagger = decoder.CreateTagger(options.NBest, options.MaxWord); tagger.set_vlevel(options.ProbLevel); //Initialize result var crf_out = new CRFSegOut[options.NBest]; for (var i = 0; i < options.NBest; i++) { crf_out[i] = new CRFSegOut(options.MaxWord); } var dataset = GetTestData(); //predict given string's tags decoder.Segment(crf_out, tagger, dataset); }
public async Task <bool> Predict(AgentBase agent, NlpDoc doc, PipeModel meta) { var decoder = new CRFDecoder(); var options = new DecoderOptions { ModelFileName = System.IO.Path.Combine(Settings.ModelDir, meta.Model) }; //Load encoded model from file decoder.LoadModel(options.ModelFileName); //Create decoder tagger instance. var tagger = decoder.CreateTagger(options.NBest, options.MaxWord); tagger.set_vlevel(options.ProbLevel); //Initialize result var crf_out = new CRFSegOut[options.NBest]; for (var i = 0; i < options.NBest; i++) { crf_out[i] = new CRFSegOut(options.MaxWord); } doc.Sentences.ForEach(sent => { List <List <String> > dataset = new List <List <string> >(); dataset.AddRange(sent.Tokens.Select(token => new List <String> { token.Text, token.Pos }).ToList()); //predict given string's tags decoder.Segment(crf_out, tagger, dataset); var entities = new List <NlpEntity>(); for (int i = 0; i < sent.Tokens.Count; i++) { var entity = crf_out[0].result_; entities.Add(new NlpEntity { Entity = entity[i], Start = doc.Sentences[0].Tokens[i].Start, Value = doc.Sentences[0].Tokens[i].Text, Confidence = 0, Extrator = "BotSharpNER" }); } sent.Entities = MergeEntity(doc.Sentences[0].Text, entities); }); return(true); }