Files
llm-pii-poc/src/PiiRedaction.Infrastructure/Onnx/NerLabelConfig.cs

27 lines
1.1 KiB
C#
Raw Normal View History

namespace PiiRedaction.Infrastructure.Onnx;
public sealed class NerLabelConfig
{
private readonly Func<string, bool> _isPersonLabel;
private NerLabelConfig(Func<string, bool> 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);
}