【名著】《水浒传》人物对话内容数据集
浏览 729下载 24数据大小: 0.58文件格式: XLSX2024/10/12
#水浒传#对话数据集#GPT对话生成#自然语言处理#机器学习#深度学习#对话生成模型#中文GPT#NLP#文本生成#AI对话训练#GPT-2中文#数据集训练#人工智能#transformers库#PyTorch
数据集简介
**《水浒传》**是中国古典文学的瑰宝,讲述了北宋时期梁山好汉的英雄事迹。本数据集专注于提取《水浒传》中的对话内容,剔除了人物信息和描述,旨在为自然语言处理(NLP)领域提供对话数据资源,用于对话生成、情感分析、文本理解等多个应用场景。
数据集内容
- 对话信息:该数据集仅保留了《水浒传》中的对话内容,去除了人物名称和其他文本信息,便于专注于对话内容的分析与生成。
- 格式清晰:数据集简洁地整理出书中的对话内容,提供整洁的文本语料,便于处理和研究。
- 应用场景:可用于对话生成模型训练、情感分析、中文自然语言处理、文本生成等任务。
数据集用途
- 对话生成任务:为训练对话生成模型提供丰富的中文古典文学语料。
- 情感分析:可用于分析《水浒传》中不同场景下的情感表达和语言风格。
- 文本理解与生成:为中文文本理解、生成及相关NLP任务提供数据支持。
数据集格式
该数据集以文本形式提供,仅包含《水浒传》中的对话内容,未附带人物信息或其他上下文描述。格式适合用于机器学习模型的训练数据输入。
数据预览
| Dialogue |
|---|
| 朱李石刘郭,梁唐晋汉周,都来十五帝,播乱五十秋。 |
| 一旦云开复见天。 |
| 天下从此定矣!正应上合天心,下合地理,中合人和。 |
| 文有文曲,武有武曲 |
| 有事出班早奏,无事卷帘退朝。 |
| 目今京师瘟疫盛行,民不聊生,伤损军民多矣。伏望陛下释罪宽恩,省刑薄税,以禳天灾,救济万民。 |
| 目今天灾盛行,军民涂炭,日夕不能聊生,人遭缧绁之厄。以臣愚意,要禳此灾,可宣嗣汉天师星夜临朝,就京师禁院修设三千六百分罗天大醮,奏闻上帝,可以禳保民间瘟疫。 |
| 天师今在何处? |
| 好教太尉得知:这代祖师号曰‘虚靖天师’,性好清高,倦于迎送,自向龙虎山顶,结一茅庵,修真养性。因此不住本宫。 |
| 目今天子宣诏,如何得见? |
| 容禀:诏敕权供在殿上,贫道等亦不敢开读。且请太尉到方丈献茶,再烦计议。 |
| 既然天师在山顶庵中,何不着人请将下来相见,开宣丹诏? |
| 太尉,这代祖师虽在山顶,其实道行非常,清高自在,倦惹凡尘。能驾雾兴云,踪迹不定,未尝下山。贫道等如常亦难得见,怎生教人请得下来! |
| 似此如何得见!目今京师瘟疫盛行,今上天子特遣下官为使,赍捧御书丹诏,亲奉龙香,来请天师,要做三千六百分罗天大醮,以禳天灾,救济万民。似此怎生奈何? |
| 朝廷天子要救万民,只除是太尉办一点志诚心,斋戒沐浴,更换布衣,休带从人,自背诏书,焚烧御香,步行上山礼拜,叩请天师,方许得见。如若心不志诚,空走一遭,亦难得见。 |
| 俺从京师食素到此,如何心不志诚!既然恁地,依着你说,明日绝早上山。 |
| 太尉要救万民,休生退悔之心,只顾志诚上去。 |
| 我是朝廷贵官公子,在京师时重茵而卧,列鼎而食,尚兀自倦怠;何曾穿草鞋,走这般山路!知他天师在那里,却教下官受这般苦! |
| 阿呀! |
| 我今番死也! |
| 惭愧!惊杀下官! |
| 叵耐无礼,戏弄下官,教俺受这般惊恐!若山上寻不见天师,下去和他别有话说。 |
| 你从那里来?认得我么? |
| 你来此间,莫非要见天师么? |
| 你是牧童,如何得知? |
| 我早间在草庵中伏侍天师,听得天师说道:‘朝中今上仁宗天子,差个洪太尉赍擎丹诏御香,到来山中,宣我往东京做三千六百分罗天大醮,祈禳天下瘟疫。我如今乘鹤驾云去也。’这早晚想是去了,不在庵中。你休上去,山内毒虫猛兽极多,恐伤害了你性命。 |
| 你不要说谎? |
| 这小的如何尽知此事?想是天师分付他,已定是了。 |
| 曾见天师么? |
| 我是朝廷中贵官,如何教俺走得山路,吃了这般辛苦,争些儿送了性命!为头上至半山里,跳出一只吊睛白额大虫,惊得下官魂魄都没了。又行不过一个山嘴,竹藤里抢出一条雪花大蛇来,盘做一堆,拦住去路。若不是俺福分大,如何得性命回京。尽是你这道众,戏弄下官! |
| 贫道等怎敢轻慢大臣,这是祖师试探太尉之心。本山虽有蛇虎,并不伤人。 |
| 我正走不动,方欲再上山坡,只见松树傍边转出一个道童,骑着一头黄牛,吹着管铁笛,正过山来。我便问他:‘那里来识得俺么?’他道:‘已都知了。’说天师分付,早晨乘鹤驾云望东京去了。下官因此回来。 |
| 太尉可惜错过,这个牧童正是天师。 |
| 他既是天师,如何这等猥獕? |
| 这代天师非同小可,虽然年幼,其实道行非常。他是额外之人,四方显化,极是灵验。世人皆称为道通祖师。 |
| 我直如此有眼不识真师,当面错过! |
| 太尉但请放心,既然祖师法旨道是去了,比及太尉回京之日,这场醮事祖师已都完了。 |
| 伏魔之殿 |
| 此殿是甚么去处? |
| 此乃是前代老祖天师锁镇魔王之殿。 |
| 如何上面重重叠叠贴着许多封皮? |
| 此是祖老大唐洞玄国师封锁魔王在此。但是经传一代天师,亲手便添一道封皮,使其子子孙孙不敢妄开。走了魔君,非常利害。今经八九代祖师,誓不敢开。锁用铜汁灌铸,谁知里面的事。小道自来住持本宫三十余年,也只听闻。 |
| 我且试看魔王一看。 |
| 你且开门来,我看魔王甚么模样。 |
| 太尉,此殿决不敢开。先祖天师叮咛告戒:今后诸人不许擅开。 |
| 胡说!你等要妄生怪事,煽惑百姓良民,故意安排这等去处,假称锁镇魔王,显耀你们道术。我读一鉴之书,何曾见锁魔之法。神鬼之道,处隔幽冥,我不信有魔王在内。快疾与我打开,我看魔王如何。 |
| 此殿开不得,恐惹利害,有伤于人。 |
| 你等不开与我看,回到朝廷,先奏你们众道士阻当宣诏,违别圣旨,不令我见天师的罪犯;后奏你等私设此殿,假称锁镇魔王,煽惑军民百姓。把你都追了度牒,刺配远恶军州受苦。 |
| 你等阻当我,却怎地数百年前已注我姓字在此?‘遇洪而开’,分明是教我开看,却何妨!我想这个魔王,都只在石碑底下。汝等从人与我多唤几个火工人等,将锄头铁锹来掘开。 |
示例代码(Python 加载)
下面是一个使用GPT模型来训练对话生成任务的Python代码示例。我们将使用transformers库中的GPT-2(可以替换为中文预训练模型,如GPT-2-Chinese)对《水浒传》对话数据集进行训练。
下面是一个使用GPT模型来训练对话生成任务的Python代码示例。我们将使用transformers库中的GPT-2(可以替换为中文预训练模型,如GPT-2-Chinese)对《水浒传》对话数据集进行训练。
环境准备
首先,确保你安装了必要的库:
pip install transformers datasets torchGPT对话生成训练代码
import torch
from transformers import GPT2Tokenizer, GPT2LMHeadModel, Trainer, TrainingArguments
from datasets import load_dataset
# 加载GPT模型和Tokenizer
model_name = "gpt2" # 或使用 "uer/gpt2-chinese-cluecorpussmall" 中文模型
tokenizer = GPT2Tokenizer.from_pretrained(model_name)
model = GPT2LMHeadModel.from_pretrained(model_name)
# 加载《水浒传》对话数据集
# 假设数据集以txt格式保存,且每一行代表一个对话
data_files = {"train": "shuihuzhuan_dialogues.txt"}
dataset = load_dataset("text", data_files=data_files)
# 数据预处理函数
def preprocess_function(examples):
return tokenizer(examples['text'], truncation=True, padding='max_length', max_length=128)
# 对数据集进行Tokenize
tokenized_dataset = dataset.map(preprocess_function, batched=True)
# 设置训练参数
training_args = TrainingArguments(
output_dir='./results',
evaluation_strategy='epoch',
learning_rate=5e-5,
per_device_train_batch_size=4,
per_device_eval_batch_size=4,
num_train_epochs=3,
weight_decay=0.01,
save_total_limit=2, # 保留最近的两个模型
)
# 初始化Trainer
trainer = Trainer(
model=model,
args=training_args,
train_dataset=tokenized_dataset['train']
)
# 开始训练
trainer.train()
# 对话生成函数
def generate_response(prompt, max_length=50):
inputs = tokenizer(prompt, return_tensors="pt")
outputs = model.generate(inputs['input_ids'], max_length=max_length, num_beams=5, early_stopping=True)
return tokenizer.decode(outputs[0], skip_special_tokens=True)
# 示例:生成对话
prompt = "你如何看待梁山的兄弟情义?"
response = generate_response(prompt)
print(f"生成的对话:{response}")
代码解释
- 模型加载:使用GPT-2模型,你可以替换为中文的预训练GPT模型,比如uer/gpt2-chinese-cluecorpussmall,以适应中文语料。
- 加载数据集:这里假设数据集是一个包含对话的文本文件,每一行是一条对话。你可以根据你的数据格式调整此部分。
- 数据预处理:对数据集进行Tokenize操作,将对话转换为模型可接受的输入格式。
- 训练设置:通过TrainingArguments设置训练参数,包括学习率、批次大小、训练轮数等。
- 对话生成:generate_response函数用于输入一个对话开头,生成相应的回应。你可以自定义生成的最大长度等参数。
注意事项
- 数据格式:确保你提供的《水浒传》对话数据集每一行都是独立的对话内容,并无人物信息。
- 模型选择:GPT-2适合生成任务,如果你使用的是中文数据集,建议使用预训练的中文GPT模型。
- 计算资源:模型训练需要较高的计算资源,建议在GPU环境中运行。
数据集扩展
你可以将《水浒传》对话数据集应用于更多任务,如情感分析、对话生成等。