在Python中生成随机标题和描述

在Python中生成随机标题和描述,python,Python,是否有任何python库可以生成随机标题和随机描述 随机标题:语法正确(但随机)的英语句子,少于5个单词。 随机描述:语法正确(但随机)的英语句子,少于20个单词 我正在测试一个有标题和描述字段的产品。我想创建具有随机标题和随机描述的多个对象,而不是“标题1”“描述1”。对于一个相当简单的解决方案,只需查找正则表达式的匹配项,如[a-Z][a-Z'\-]+[,]([a-zA-Z'\-]+[;,]?){15,25}[a-zA-Z'\-]+[.?!](匹配一个大写单词,后跟15-25个单词)(后面可

是否有任何python库可以生成随机标题和随机描述

随机标题:语法正确(但随机)的英语句子,少于5个单词。 随机描述:语法正确(但随机)的英语句子,少于20个单词


我正在测试一个有标题和描述字段的产品。我想创建具有随机标题和随机描述的多个对象,而不是“标题1”“描述1”。

对于一个相当简单的解决方案,只需查找正则表达式的匹配项,如
[a-Z][a-Z'\-]+[,]([a-zA-Z'\-]+[;,]?){15,25}[a-zA-Z'\-]+[.?!]
(匹配一个大写单词,后跟15-25个单词)(后面可能有逗号或分号),然后在一大块文本中后跟一个最后一个单词和一个结束标点符号)。要缩短标题式短语,您只需匹配大约5个单词的任意序列(可能没有标点符号):
([a-zA-Z'\-]+){4,6}


发件人:

您可以使用马尔可夫链来实现这一点。为此,您需要执行以下步骤(从我链接的页面):

  • 有一个文本作为语料库,我们从中选择 下一个过渡
  • 从课文中的两个连续单词开始。 最后两个词构成了现状
  • 生成下一个 单词是马尔可夫变换。要生成下一个单词,请查看 根据语料库,找出在给定的两个单词之后出现的单词 单词。随机选择其中一个
  • 重复2,直到所需的文本 生成大小
  • 他们为实现这一点提供的代码:

    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}


    发件人:

    您可以使用马尔可夫链来实现这一点。为此,您需要执行以下步骤(从我链接的页面):

  • 有一个文本作为语料库,我们从中选择 下一个过渡
  • 从课文中的两个连续单词开始。 最后两个词构成了现状
  • 生成下一个 单词是马尔可夫变换。要生成下一个单词,请查看 根据语料库,找出在给定的两个单词之后出现的单词 单词。随机选择其中一个
  • 重复2,直到所需的文本 生成大小
  • 他们为实现这一点提供的代码:

    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
    标题和描述。