python 一个基于双面映射生成语言句子的小型原型。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 一个基于双面映射生成语言句子的小型原型。相关的知识,希望对你有一定的参考价值。
import random
class EventGen(object):
def __init__(self, gen_len=3):
self.objs = {}
self.actions = {}
self.pattern = ""
self.gen_len = gen_len
def set_pattern(self, pattern):
self.pattern = pattern
def set_len(self, length):
self.gen_len = length
def add_object(self, name, *childs):
if name not in self.objs:
self.objs[name] = []
for elem in childs:
self.objs[name].append(elem)
def add_action(self, name, *childs):
if name not in self.actions:
self.actions[name] = []
for elem in childs:
self.actions[name].append(elem)
def rand_obj(self):
return random.choice(self.objs.keys())
def rand_act(self):
return random.choice(self.actions.keys())
def gen_obj_act_obj(self):
picked_obj = self.rand_obj()
sub_act = random.choice(self.objs[picked_obj])
term_obj = random.choice(self.actions[sub_act])
return picked_obj + " " + sub_act + " " + term_obj + "."
"""
jweinstein-MBP-71683:startup jweinstein$ python -i gen.py
>>> test = EventGen()
>>> test
<__main__.EventGen object at 0x1034ba0d0>
>>> test.add_object('An apple', 'shines', 'looks')
>>> test.objs
{'An apple': ['shines', 'looks']}
>>> test.add_action('shines', 'bright', 'bold', 'boldly')
>>> test.add_action('looks', 'red', 'blue', 'reddish')
>>> test.gen_obj_act_obj()
'An apple shines bold.'
>>> test.gen_obj_act_obj()
'An apple looks red.'
>>> test.gen_obj_act_obj()
'An apple shines bold.'
>>> test.gen_obj_act_obj()
'An apple looks red.'
>>> test.gen_obj_act_obj()
'An apple shines boldly.'
>>> test.gen_obj_act_obj()
'An apple looks reddish.'
>>> exit()
"""
以上是关于python 一个基于双面映射生成语言句子的小型原型。的主要内容,如果未能解决你的问题,请参考以下文章
NLP自然语言处理
Python自然语言处理工具包推荐
jieba 分词库(python)
基于上下文无关文法的句子生成算法
实验一:训练Bigram模型并预测句子概率|自然语言
自然语言处理之中文分词器-jieba分词器详解及python实战