簡體   English   中英

從文本文件中選擇少於 280 個字符的隨機句子

[英]Selecting a random sentence less than 280 characters from a text file

我正在做一個項目,我想讀取一個大文本文件,隨機 select 從該文件中讀取一個完整的句子。 如果該文件語句少於 280 個字符或更少,則打印該文件。 如果不是 select 另一個句子,直到找到少於 280 個字符的句子。 使用 nltk 我可以將文本分解為單個句子,select 隨機一個並計算字符。

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 個字符來打印它,如果不是,則 select 將隨機測試另一個句子

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" 

但這給了我一個無效的語法錯誤,但我認為不會再次迭代以找到另一個句子。

任何建議都會很棒。

獲取令牌列表后:

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

... rest 是單線:

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

請注意,使用帶有if的列表推導可以將令牌列表中的項目縮小到長度小於 280 個字符的項目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM