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