classify method

Future<WolfDefenderResult> classify(
  1. String text
)

Implementation

Future<WolfDefenderResult> classify(String text) async {
  final tokens = _tokenizer.encode(text);
  final windows = wolfDefenderWindows(tokens.length);
  final logits = <Float32List>[];
  for (final (start, end) in windows) {
    final ids = Int32List(end - start + 2);
    ids[0] = _bos;
    for (var i = start; i < end; i++) {
      ids[i - start + 1] = tokens[i];
    }
    ids[ids.length - 1] = _eos;
    final values = await _backend.run(ids);
    if (values.length != 2) {
      throw StateError('Wolf Defender gave ${values.length} logits, not 2');
    }
    logits.add(values);
  }
  return WolfDefenderResult(
    injectionProbability: wolfDefenderPool(logits),
    tokens: tokens.length,
    windows: windows.length,
  );
}