Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions src/Infrastructure/BotSharp.Abstraction/Entity/IEntityAnalyzer.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
using BotSharp.Abstraction.Entity.Models;
using BotSharp.Abstraction.Entity.Responses;

namespace BotSharp.Abstraction.Entity;

public interface IEntityAnalyzer
{
string Provider { get; }

Task<EntityAnalysisResponse> AnalyzeAsync(string text, EntityAnalysisOptions? options = null);
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
namespace BotSharp.Abstraction.Tokenizers;
namespace BotSharp.Abstraction.Entity;

public interface ITokenDataLoader
public interface IEntityDataLoader
{
string Provider { get; }

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
namespace BotSharp.Abstraction.Tokenizers.Models;
namespace BotSharp.Abstraction.Entity.Models;

public class TokenizeOptions
public class EntityAnalysisOptions
{
/// <summary>
/// Token data providers
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
namespace BotSharp.Abstraction.Tokenizers.Models;
namespace BotSharp.Abstraction.Entity.Models;

public class TokenizeResult
public class EntityAnalysisResult
{
public string Token { get; set; } = string.Empty;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
using BotSharp.Abstraction.Entity.Models;

namespace BotSharp.Abstraction.Entity.Responses;

public class EntityAnalysisResponse : ResponseBase
{
public List<EntityAnalysisResult> Results { get; set; } = [];
}
11 changes: 0 additions & 11 deletions src/Infrastructure/BotSharp.Abstraction/Tokenizers/ITokenizer.cs

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ namespace BotSharp.OpenAPI.Controllers;
public partial class KnowledgeBaseController
{
#region Document
[HttpGet("/knowledge/document/processors")]
public IEnumerable<string> GetKnowledgeDocumentProcessors()
[HttpGet("/knowledge/processors")]
public IEnumerable<string> GetKnowledgeProcessors()
{
return _services.GetServices<IKnowledgeProcessor>().Select(x => x.Provider);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
using BotSharp.OpenAPI.ViewModels.Knowledges;

namespace BotSharp.OpenAPI.Controllers;

public partial class KnowledgeBaseController
{
/// <summary>
/// Entity analyis with options
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost("knowledge/entity/analyze")]
public async Task<EntityAnalysisResponse?> EntityAnalyze([FromBody] EntityAnalysisRequest request)
{
var analyzer = _services.GetServices<IEntityAnalyzer>()
.FirstOrDefault(x => x.Provider.IsEqualTo(request.Provider));

if (analyzer == null)
{
return null;
}
return await analyzer.AnalyzeAsync(request.Text, request.Options);
}

/// <summary>
/// Get entity analyzers
/// </summary>
/// <returns></returns>
[HttpGet("knowledge/entity/analyzers")]
public IEnumerable<string> GetEntityAnalyzers()
{
var analyzers = _services.GetServices<IEntityAnalyzer>();
return analyzers.Select(x => x.Provider);
}

/// <summary>
/// Get entity data providers
/// </summary>
/// <returns></returns>
[HttpGet("knowledge/entity/data-providers")]
public IEnumerable<string> GetEntityDataProviders()
{
var dataLoaders = _services.GetServices<IEntityDataLoader>();
return dataLoaders.Select(x => x.Provider);
}
}

This file was deleted.

4 changes: 4 additions & 0 deletions src/Infrastructure/BotSharp.OpenAPI/Using.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,10 @@
global using BotSharp.Abstraction.VectorStorage.Enums;
global using BotSharp.Abstraction.Knowledges.Models;
global using BotSharp.Abstraction.Chart.Models;
global using BotSharp.Abstraction.Entity;
global using BotSharp.Abstraction.Entity.Models;
global using BotSharp.Abstraction.Entity.Responses;

global using BotSharp.OpenAPI.ViewModels.Conversations;
global using BotSharp.OpenAPI.ViewModels.Users;
global using BotSharp.OpenAPI.ViewModels.Agents;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
using BotSharp.Abstraction.Tokenizers.Models;

namespace BotSharp.OpenAPI.ViewModels.Knowledges;

public class TokenizeRequest
public class EntityAnalysisRequest
{
public string Text { get; set; } = string.Empty;
public string? Provider { get; set; }
public TokenizeOptions? Options { get; set; }
public EntityAnalysisOptions? Options { get; set; }
}
4 changes: 2 additions & 2 deletions src/Plugins/BotSharp.Plugin.FuzzySharp/FuzzySharpPlugin.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ public void RegisterDI(IServiceCollection services, IConfiguration config)

services.AddScoped<INgramProcessor, NgramProcessor>();
services.AddScoped<IResultProcessor, ResultProcessor>();
services.AddScoped<ITokenizer, FuzzySharpTokenizer>();
services.AddScoped<ITokenDataLoader, CsvTokenDataLoader>();
services.AddScoped<IEntityAnalyzer, FuzzySharpEntityAnalyzer>();
services.AddScoped<IEntityDataLoader, CsvNERDataLoader>();

services.AddScoped<ITokenMatcher, ExactMatcher>();
services.AddScoped<ITokenMatcher, SynonymMatcher>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@

namespace BotSharp.Plugin.FuzzySharp.Services.DataLoaders;

public class CsvTokenDataLoader : ITokenDataLoader
public class CsvNERDataLoader : IEntityDataLoader
{
private readonly ILogger<CsvTokenDataLoader> _logger;
private readonly ILogger<CsvNERDataLoader> _logger;
private readonly FuzzySharpSettings _settings;
private readonly string _basePath;

public CsvTokenDataLoader(
ILogger<CsvTokenDataLoader> logger,
public CsvNERDataLoader(
ILogger<CsvNERDataLoader> logger,
FuzzySharpSettings settings)
{
_settings = settings;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,16 @@

namespace BotSharp.Plugin.FuzzySharp.Services;

public class FuzzySharpTokenizer : ITokenizer
public class FuzzySharpEntityAnalyzer : IEntityAnalyzer
{
private readonly ILogger<FuzzySharpTokenizer> _logger;
private readonly IEnumerable<ITokenDataLoader> _tokenDataLoaders;
private readonly ILogger<FuzzySharpEntityAnalyzer> _logger;
private readonly IEnumerable<IEntityDataLoader> _tokenDataLoaders;
private readonly INgramProcessor _ngramProcessor;
private readonly IResultProcessor _resultProcessor;

public FuzzySharpTokenizer(
ILogger<FuzzySharpTokenizer> logger,
IEnumerable<ITokenDataLoader> tokenDataLoaders,
public FuzzySharpEntityAnalyzer(
ILogger<FuzzySharpEntityAnalyzer> logger,
IEnumerable<IEntityDataLoader> tokenDataLoaders,
INgramProcessor ngramProcessor,
IResultProcessor resultProcessor)
{
Expand All @@ -24,18 +24,17 @@ public FuzzySharpTokenizer(

public string Provider => "fuzzy-sharp";

public async Task<TokenizeResponse> TokenizeAsync(string text, TokenizeOptions? options = null)
public async Task<EntityAnalysisResponse> AnalyzeAsync(string text, EntityAnalysisOptions? options = null)
{
var response = new TokenizeResponse();
var response = new EntityAnalysisResponse();

try
{
var result = await AnalyzeTextAsync(text, options);

return new TokenizeResponse
return new EntityAnalysisResponse
{
Success = true,
Results = result?.FlaggedItems?.Select(f => new TokenizeResult
Results = result?.FlaggedItems?.Select(f => new EntityAnalysisResult
{
Token = f.Token,
CanonicalText = f.CanonicalForm,
Expand All @@ -59,7 +58,7 @@ public async Task<TokenizeResponse> TokenizeAsync(string text, TokenizeOptions?
/// <summary>
/// Analyze text for typos and entities using domain-specific vocabulary
/// </summary>
private async Task<TokenAnalysisResponse> AnalyzeTextAsync(string text, TokenizeOptions? options = null)
private async Task<TokenAnalysisResponse> AnalyzeTextAsync(string text, EntityAnalysisOptions? options = null)
{
var stopwatch = Stopwatch.StartNew();
try
Expand Down Expand Up @@ -148,7 +147,7 @@ private List<FlaggedTokenItem> AnalyzeTokens(
List<string> tokens,
Dictionary<string, HashSet<string>> vocabulary,
Dictionary<string, (string DataSource, string CanonicalForm)> synonymMapping,
TokenizeOptions? options)
EntityAnalysisOptions? options)
{
// Build lookup table for O(1) exact match lookups (matching Python's build_lookup)
var lookup = BuildLookup(vocabulary);
Expand Down
6 changes: 3 additions & 3 deletions src/Plugins/BotSharp.Plugin.FuzzySharp/Using.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
global using System.Text;
global using System.Threading.Tasks;

global using BotSharp.Abstraction.Tokenizers;
global using BotSharp.Abstraction.Tokenizers.Models;
global using BotSharp.Abstraction.Tokenizers.Responses;
global using BotSharp.Abstraction.Entity;
global using BotSharp.Abstraction.Entity.Models;
global using BotSharp.Abstraction.Entity.Responses;

global using BotSharp.Plugin.FuzzySharp.Models;
global using BotSharp.Plugin.FuzzySharp.Utils;
Expand Down
Loading