namespace PiiRedaction.Infrastructure.Onnx; public sealed class NerLabelConfig { private readonly Func _isPersonLabel; private NerLabelConfig(Func isPersonLabel) => _isPersonLabel = isPersonLabel; public static NerLabelConfig English { get; } = new(IsEnglishPersonLabel); public static NerLabelConfig Tamil { get; } = new(IsTamilPersonLabel); public bool IsPersonLabel(string label) => _isPersonLabel(label); public bool IsBeginLabel(string label) => label.StartsWith("B-", StringComparison.Ordinal); public bool IsInsideLabel(string label) => label.StartsWith("I-", StringComparison.Ordinal); private static bool IsEnglishPersonLabel(string label) => label is "B-PER" or "I-PER" or "B-PERSON" or "I-PERSON" || (label.EndsWith("-PER", StringComparison.Ordinal) && (label.StartsWith("B-", StringComparison.Ordinal) || label.StartsWith("I-", StringComparison.Ordinal))); private static bool IsTamilPersonLabel(string label) => label.Contains("person", StringComparison.OrdinalIgnoreCase); }