在Python中生成随机标题和描述
是否有任何python库可以生成随机标题和随机描述 随机标题:语法正确(但随机)的英语句子,少于5个单词。 随机描述:语法正确(但随机)的英语句子,少于20个单词在Python中生成随机标题和描述,python,Python,是否有任何python库可以生成随机标题和随机描述 随机标题:语法正确(但随机)的英语句子,少于5个单词。 随机描述:语法正确(但随机)的英语句子,少于20个单词 我正在测试一个有标题和描述字段的产品。我想创建具有随机标题和随机描述的多个对象,而不是“标题1”“描述1”。对于一个相当简单的解决方案,只需查找正则表达式的匹配项,如[a-Z][a-Z'\-]+[,]([a-zA-Z'\-]+[;,]?){15,25}[a-zA-Z'\-]+[.?!](匹配一个大写单词,后跟15-25个单词)(后面可
我正在测试一个有标题和描述字段的产品。我想创建具有随机标题和随机描述的多个对象,而不是“标题1”“描述1”。对于一个相当简单的解决方案,只需查找正则表达式的匹配项,如
[a-Z][a-Z'\-]+[,]([a-zA-Z'\-]+[;,]?){15,25}[a-zA-Z'\-]+[.?!]
(匹配一个大写单词,后跟15-25个单词)(后面可能有逗号或分号),然后在一大块文本中后跟一个最后一个单词和一个结束标点符号)。要缩短标题式短语,您只需匹配大约5个单词的任意序列(可能没有标点符号):
([a-zA-Z'\-]+){4,6}
发件人: 您可以使用马尔可夫链来实现这一点。为此,您需要执行以下步骤(从我链接的页面):
import random
class Markov(object):
def __init__(self, open_file):
self.cache = {}
self.open_file = open_file
self.words = self.file_to_words()
self.word_size = len(self.words)
self.database()
def file_to_words(self):
self.open_file.seek(0)
data = self.open_file.read()
words = data.split()
return words
def triples(self):
""" Generates triples from the given data string. So if our string were
"What a lovely day", we'd generate (What, a, lovely) and then
(a, lovely, day).
"""
if len(self.words) < 3:
return
for i in range(len(self.words) - 2):
yield (self.words[i], self.words[i+1], self.words[i+2])
def database(self):
for w1, w2, w3 in self.triples():
key = (w1, w2)
if key in self.cache:
self.cache[key].append(w3)
else:
self.cache[key] = [w3]
def generate_markov_text(self, size=25):
seed = random.randint(0, self.word_size-3)
seed_word, next_word = self.words[seed], self.words[seed+1]
w1, w2 = seed_word, next_word
gen_words = []
for i in xrange(size):
gen_words.append(w1)
w1, w2 = w2, random.choice(self.cache[(w1, w2)])
gen_words.append(w2)
return ' '.join(gen_words)
在[1]到[3]中之后,您只需要调用
markov.generate_markov_text()
,使用适当的参数生成5个和20个单词的序列即可。对于一个相当简单的解决方案,只需找到类似于[a-Z][a-Z'\-]+[,]([a-zA-Z'\-]+[;,]?)的正则表达式的匹配项即可。
(在一大块文本中匹配一个大写的单词,后跟15-25个单词(后面可能有逗号或分号),然后再跟一个最终单词和一个结束标点符号)。要缩短类似标题的短语,您可以只匹配大约5个单词的任意序列(可能没有标点符号):
([a-zA-Z'\-]+){4,6}
发件人: 您可以使用马尔可夫链来实现这一点。为此,您需要执行以下步骤(从我链接的页面):
import random
class Markov(object):
def __init__(self, open_file):
self.cache = {}
self.open_file = open_file
self.words = self.file_to_words()
self.word_size = len(self.words)
self.database()
def file_to_words(self):
self.open_file.seek(0)
data = self.open_file.read()
words = data.split()
return words
def triples(self):
""" Generates triples from the given data string. So if our string were
"What a lovely day", we'd generate (What, a, lovely) and then
(a, lovely, day).
"""
if len(self.words) < 3:
return
for i in range(len(self.words) - 2):
yield (self.words[i], self.words[i+1], self.words[i+2])
def database(self):
for w1, w2, w3 in self.triples():
key = (w1, w2)
if key in self.cache:
self.cache[key].append(w3)
else:
self.cache[key] = [w3]
def generate_markov_text(self, size=25):
seed = random.randint(0, self.word_size-3)
seed_word, next_word = self.words[seed], self.words[seed+1]
w1, w2 = seed_word, next_word
gen_words = []
for i in xrange(size):
gen_words.append(w1)
w1, w2 = w2, random.choice(self.cache[(w1, w2)])
gen_words.append(w2)
return ' '.join(gen_words)
在[1]到[3]中之后,您只需要调用
markov.generate_markov_text()
,并使用适当的参数生成5个和20个单词的序列即可。我不需要更多的垃圾邮件。如果您只需要填充文本,我似乎没有必要使用“语法正确”选项约束。为什么不只是lorem ipsum文本?最后一种方法-创建两个大文件,其中一个包含多个标题,另一个包含多个描述(从互联网上的随机来源收集)。加载文件并获取随机标题和描述。我不需要更多垃圾邮件。如果您只需要填充文本,我似乎没有必要使用“语法正确”约束。为什么不只是lorem ipsum文本?最后一种方法-创建两个大文件,其中一个包含多个标题,另一个包含多个描述(从互联网上的随机来源收集)。加载文件并获取random
标题和描述。