Machine Learning & Recommendation & NLP & DL

通过规则生成句子

2019-04-07  本文已影响2人  还有下文

通过列表存储句子逻辑以及句子不同组成成分单元的词库,可以生成以下内容:

男人安静地看着静静桌子

漂亮蓝色的猫安静地看着安静地皮球

男人静静看着安静地桌子

蓝色好看的男人安静地看着安静地皮球

女人安静地坐着静静桌子

蓝色好看的男人静静看着安静地桌子

蓝色蓝色的猫静静坐着静静皮球

好看好看的男人静静坐着安静地皮球

猫静静坐着静静皮球

代码见:

# -*- coding:UTF-8 -*-
grammar = """
sentence = adj noun verb adv noun2
adj = adj_single adj_single 的 | null
adj_single = 漂亮 | 蓝色 | 好看
adv = 安静地 | 静静
noun = 猫 | 女人 | 男人
verb = adv 看着 | adv 坐着
noun2 = 桌子 | 皮球
"""

import random


def build_grammar(grammar_str, split='='):
    grammar_pattern = {}
    for line in grammar_str.split('\n'):
        if line:
            stat, expr = line.split(split)
            grammar_pattern[stat.strip()] = [e.split() for e in expr.split('|')]
    return grammar_pattern


def generate(grammar_pattern, target):
    if target not in grammar_pattern: return target

    expr = random.choice(grammar_pattern[target])
    tokens = [generate(grammar_pattern, e) for e in expr]
    return ''.join([t for t in tokens if t != 'null'])

for i in range(1,10):
    sentence = generate(build_grammar(grammar), 'sentence')
    print(sentence)
上一篇下一篇

猜你喜欢

热点阅读