赞
踩
import random #训练模型 model={'START': ['I', 'you'], 'I': ['like'], 'like': ['to'], 'to': ['eat'], 'you': ['eat'], 'eat': ['apples','oranges'],'END': ['apples','oranges']} #上面的模型词典中还有两个术语:“起始”(START)和“结束”(END),它们表示一个生成的句子的起始词和结束词,中文的jieba分词中可以加入自己的字典。而自己的字典的建立可以通过关键词的提取算法,提取后建立自己的特殊领域的字典。 #生成鸡汤句 generated = [] while True: if not generated: words = model['START']#['I', 'you'] elif generated[-1] in model['END']: break else: words = model[generated[-1]] generated.append(random.choice(words)) print(generated) # 生成器部分包含一个循环。它首先会选取一个随机的起始词并将其添加至一个列表, # 然后会在词典中所搜包含潜在跟随词的列表,并随机选取一个列表,将新的选取的词添加至该列表。 # 生成器#会一直选择随机的潜在跟随词直到找到结束词,然后会停止循环,输出生成的句子或所谓的“名言”
D:\JC\envs\NLP\python.exe C:/Users/wangyao/Desktop/MachineLearning-master/MachineLearning-master/rnn/dataset/MakoverModel.py
['you']
['you', 'eat']
['you', 'eat', 'apples']
进程已结束,退出代码0
D:\JC\envs\NLP\python.exe C:/Users/wangyao/Desktop/MachineLearning-master/MachineLearning-master/rnn/dataset/MakoverModel.py
['I']
['I', 'like']
['I', 'like', 'to']
['I', 'like', 'to', 'eat']
['I', 'like', 'to', 'eat', 'oranges']
进程已结束,退出代码0
import nltk import random # 读取文件内容 file = open('vocab.txt', 'r',encoding='utf-8') walden = file.read() #对文件内容按照空格进行划分,其实划分之前对于一般的文章可以首先进行分词,然后将分词后的内容进行分割,得到分割后的结果 walden = walden.split() def makePairs(arr): pairs = [ ] for i in range(len(arr)): if i < len(arr) - 1: temp = (arr[i], arr[ i + 1 ]) pairs.append(temp) return pairs def generate(cfd, word='三', num=100): for i in range(num): arr = [ ] # make an array with the words shown by proper count for j in cfd[word]: for k in range(cfd[word][j]): arr.append(j) print(word, end=' ') word = arr[int((len(arr)) * random.random()) ] pairs = makePairs(walden) cfd = nltk.ConditionalFreqDist(pairs) generate(cfd)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。