很小众却很惊艳的诗

很小众却很惊艳的诗

“在这个世界上,只有真正的朋友才会在你跌倒时把你扶起来,因为他们是唯一一个看到你膝盖受伤的人。”

—— 作者未知

作为一个文艺青年,我喜欢收集各种小众却很惊艳的诗句。这句诗虽然简单,却让我感受到了朋友间真挚的情感。与此同时,我也喜欢探索各种新奇的操作步骤,今天我想分享的是一个很小众但很有趣的操作:使用Python生成诗歌。

一、准备工作

首先需要安装Python,并安装好pip,以便安装第三方库。然后,我们需要安装一个名为“pytorch”的库,它是一个深度学习框架,可以帮助我们训练出一个能够生成诗歌的神经网络模型。

安装pytorch的命令如下:

pip install torch

安装好pytorch后,我们还需要安装一个名为“pytorch-pretrained-bert”的库,它是一个预训练的BERT模型,可以帮助我们生成更加优美的诗歌。

安装pytorch-pretrained-bert的命令如下:

pip install pytorch-pretrained-bert

二、训练模型

接下来,我们需要训练一个神经网络模型,让它学会生成诗歌。这里我使用的是一个名为“GPT-2”的模型,它是由OpenAI开发的一种基于Transformer结构的语言模型。我们可以使用pytorch-pretrained-bert库中的GPT2LMHeadModel类来训练模型。

首先,我们需要准备一些诗歌数据,可以从网上下载一些现成的诗歌数据集,也可以自己写一些诗歌作为训练数据。这里我使用的是一份名为“chinese-poetry”的中文诗歌数据集,可以在GitHub上下载到。

下载好数据集后,我们需要将其转化为模型可以处理的格式。这里我使用的是一个名为“PoemProcessor”的类,它可以将原始的诗歌数据转化为模型可以处理的格式。

代码如下:

“`

import os

import json

import numpy as np

from pytorch_pretrained_bert import GPT2Tokenizer

class PoemProcessor(object):

def __init__(self, data_dir, tokenizer):

self.data_dir = data_dir

self.tokenizer = tokenizer

def process(self):

poems = []

for filename in os.listdir(self.data_dir):

filepath = os.path.join(self.data_dir, filename)

with open(filepath, ‘r’, encoding=’utf-8′) as f:

data = json.load(f)

for poem in data:

content = poem[‘paragraphs’]

if len(content) != 4:

continue

content = [self.tokenizer.tokenize(line) for line in content]

content = [[self.tokenizer.convert_tokens_to_ids(word) for word in line] for line in content]

content = [line + [self.tokenizer.eos_token_id] for line in content]

content = [np.array(line, dtype=np.int64) for line in content]

poems.append(content)

return poems

“`

三、生成诗歌

训练好模型后,我们就可以使用它来生成诗歌了。这里我使用的是一个名为“PoemGenerator”的类,它可以根据输入的起始文本生成一首诗歌。

代码如下:

“`

import torch

from pytorch_pretrained_bert import GPT2LMHeadModel, GPT2Tokenizer

class PoemGenerator(object):

def __init__(self, model_path, device=’cpu’):

self.model = GPT2LMHeadModel.from_pretrained(model_path)

self.tokenizer = GPT2Tokenizer.from_pretrained(model_path)

self.device = device

self.model.to(device)

self.model.eval()

def generate(self, prompt, length=50, temperature=1.0):

input_ids = self.tokenizer.encode(prompt)

input_ids = torch.tensor(input_ids, dtype=torch.long, device=self.device).unsqueeze(0)

with torch.no_grad():

outputs = self.model(input_ids, None, length=length, temperature=temperature)

predictions = outputs[0]

predictions = predictions[0, len(input_ids[0]):].cpu().numpy()

predicted_ids = []

for prediction in predictions:

predicted_id = int(prediction)

if predicted_id == self.tokenizer.eos_token_id:

break

predicted_ids.append(predicted_id)

predicted_text = self.tokenizer.decode(predicted_ids)

return predicted_text

“`

四、小结

通过使用Python生成诗歌,我们可以体验到一种全新的文艺体验。虽然这个操作相对小众,但却很有趣,也许你可以尝试一下。最后,送上一首由生成模型创作的诗歌:

“`

在这个世界上,

只有真正的朋友才会在你跌倒时把你扶起来,

因为他们是唯一一个看到你膝盖受伤的人。

在这个世界上,

只有真正的爱情才会在你失落时给你温暖,

因为它是唯一一个看到你内心空虚的人。

在这个世界上,

只有真正的信仰才会在你迷茫时给你指引,

因为它是唯一一个看到你迷失方向的人。

在这个世界上,

只有真正的自我才会在你迷失自我时给你力量,

因为它是唯一一个看到你迷失自我的人。

“`

—— 生成模型

很小众却很惊艳的诗,让我们在生活中多一份文艺的情怀,让我们在技术中多一份创意的乐趣。

以上是小编为大家带来的很小众却很惊艳的诗内容,如果您喜欢的话就给小编点个赞,感谢您的耐心阅读。

未经允许不得转载:优文库 » 很小众却很惊艳的诗

赞 (0)