[英]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.