50 public override async Task<List<(int, int)>>
Split(
string input)
52 List<(int, int)> indices =
new List<(
int,
int)>();
53 List<int> tokens = await search.Tokenize(input);
54 if (tokens.Count == 0)
return indices;
57 for (
int i = 0; i < tokens.Count; i +=
numTokens)
59 int batchTokens = Math.Min(tokens.Count, i +
numTokens) - i;
60 string detokenised = await search.Detokenize(tokens.GetRange(i, batchTokens));
61 int endIndex = DetermineEndIndex(input, detokenised, startIndex);
62 indices.Add((startIndex, endIndex));
63 startIndex = endIndex + 1;
64 if (endIndex == input.Length - 1)
break;
66 if (startIndex <= input.Length - 1) indices.Add((startIndex, input.Length - 1));