У меня есть список текстов, и мне нужно разделить каждый текст на несколько кусков, каждый из которых короче, чем ограничение в 5000 байт.
Идея состоит в том, чтобы разбить каждый текст на предложения, а затем добавить их обратно по одному один, пока не будет достигнут предел 5000.
Это, как далеко я получил (см. код). Я определенно делаю что-то не так. Но я потратил слишком много времени на его отладку, поэтому по-настоящему оценим пару свободных sh глаз. Спасибо!
Для проверки вам может понадобиться любой текст размером более 10 Кбайт.
import nltk
nltk.download('punkt')
from nltk.tokenize import sent_tokenize
def split_text(text, limit):
sentences = sent_tokenize(text)
def get_chunk(sentences, limit):
results = []
counter = 0
while counter < limit:
for s in sentences:
counter += len(s.encode('utf-8'))
results.append(s)
sentences.remove(s)
return results, sentences
out = []
while len(' '.join(sentences).encode('utf-8')) > limit:
results, sentences = get_chunk(sentences, limit)
out.append(results)
else:
out.append(sentences)
text_out = [' '.join(sentences) for sentences in out]
return text_out