Выбор случайного предложения менее 280 символов из текстового файла - PullRequest
0 голосов
/ 11 ноября 2019

Я работаю над проектом, в котором я хочу прочитать большой текстовый файл, случайным образом выбрать полное предложение из этого файла. Если это предложение файла меньше 280 символов или меньше, распечатайте этот файл. если нет, выберите другое предложение, пока оно не найдет предложение длиной менее 280 символов. Используя nltk, я могу разбить текст на отдельные предложения, выбрать одно случайным образом и посчитать символы.

import nltk.data
import random

tokenizer = nltk.data.load('tokenizers/punkt/english.pickle')

fp = open("test.txt")

data = fp.read()

tok = tokenizer.tokenize(data); #breaks into sentences 

newTok = random.choice(tok) #selects random sentence 

length = len(newTok) #gives amount of characters in random sentence

Сейчас я пытаюсь создать цикл while, который проверит, будет ли предложение меньше 280 символов для его печати, и, если это не так, выберет другое предложение случайным образом для проверки

while length < 280:  # while length of sentence is less than 280

      print "length of sentence = ", length # do this 
      print newTok # do this 
      break #stops loop

      else: 
          print length, " is too long" 

но это дает мне неверную синтаксическую ошибку в else, но я также думаю, что не буду повторяться снова, чтобы найти другое предложение.

Любые предложения будут хороши.

1 Ответ

1 голос
/ 11 ноября 2019

После получения списка токенов:

tok = tokenizer.tokenize(data); #breaks into sentences 

... остальное однострочное:

newTok = random.choice([x for x in tok if len(x)<280])

Обратите внимание на использование понимания списка с if чтобы сузить элементы из списка токенов до тех, чья длина не превышает 280 символов.

...