【名著】《西游记》人物对话内容数据集
浏览 787下载 49数据大小: 0.6文件格式: XLSX2024/10/15
#Reformer#西游记#人物对话数据集#对话生成#自然语言处理#NLP#文本生成#机器学习#深度学习#transformers库#PyTorch#AI对话系统#语言模型#对话系统训练#中文NLP#Reformer模型
数据集简介
**《西游记》**是中国四大古典名著之一,由吴承恩创作,讲述了唐僧师徒四人西天取经的故事,包含丰富的神话和冒险元素。本数据集专注于提取《西游记》中的人物对话内容,旨在为自然语言处理(NLP)和对话生成模型提供高质量的中文语料。数据集适合对话生成、情感分析、文本理解等多种应用场景。
数据集特点
- 人物对话提取:涵盖《西游记》故事中的经典对话,内容来自唐僧、孙悟空、猪八戒、沙僧等主要人物,展现了不同角色的个性和语言风格。
- 格式规范:数据集经过严格的格式化处理,专注于对话内容,去除了人物名称和背景描述,方便在NLP任务中应用。
- 应用广泛:适用于对话生成、文本分类、人物关系分析等自然语言处理任务。
数据集用途
- 对话生成:该数据集适合训练基于经典文学对话风格的生成模型,用于智能助手和聊天机器人等应用。
- 情感分析:通过分析《西游记》中的对话内容,研究各角色在不同场景下的情感表达。
- 文本理解:帮助研究者对古典文学中的语言进行深入分析,适用于文本理解和句子生成等任务。
数据集格式
该数据集提供标准的文本格式,仅包含人物对话内容,不包含上下文和人物名称。适用于自然语言处理和机器学习模型的训练。
数据预览
| Dialogue |
|---|
| 冬至子之半,天心无改移。一阳初动处,万物未生时。 |
| 大哉乾元!至哉坤元!万物资生,乃顺承天。 |
| 天气下降,地气上升;天地交合,群物皆生。 |
| 臣奉旨观听金光之处,乃东胜神洲海东傲来小国之界,有一座花果山,山上有一仙石,石产一卵,见风化一石猴,在那里拜四方,眼运金光,射冲斗府。如今服饵水食,金光将潜息矣。 |
| 下方之物,乃天地精华所生,不足为异。 |
| 禽有禽言,兽有兽语。 |
| 这股水不知是那里的水。我们今日赶闲无事,顺涧边往上溜头寻看源流,耍子去耶! |
| 好水!好水!原来此处远通山脚之下,直接大海之波。 |
| 那一个有本事的,钻进去寻个源头出来,不伤身体者,我等即拜他为王。 |
| 我进去!我进去! |
| 大造化!大造化! |
| 里面怎么样?水有多深? |
| 没水!没水!原来是一座铁板桥。桥那边是一座天造地设的家当。 |
| 怎见得是个家当? |
| 这股水乃是桥下冲贯石桥,倒挂下来遮闭门户的。桥边有花有树,乃是一座石房。房内有石窝、石灶、石碗、石盆、石床、石凳。中间一块石碣上,镌着‘花果山福地,水帘洞洞天。’真个是我们安身之处。里面且是宽阔,容得千百口老小。我们都进去住也,省得受老天之气。这里边: 刮风有处躲,下雨好存身。霜雪全无惧,雷声永不闻。 烟霞常照耀,祥瑞每蒸熏。松竹年年秀,奇花日日新。 众猴听得,个个欢喜,都道:“你还先走,带我们进去,进去! |
| 都随我进来!进来! |
| 列位呵,‘人而无信,不知其可。’你们才说有本事进得来,出得去,不伤身体者,就拜他为王。我如今进来又出去,出去又进来,寻了这一个洞天与列位安眠稳睡,各享成家之福,何不拜我为王? |
| 大王何为烦恼? |
| 我虽在欢喜之时,却有一点儿远虑,故此烦恼。 |
| 大王好不知足!我等日日欢会,在仙山福地,古洞神州,不伏麒麟辖,不伏凤凰管,又不伏人间王位所拘束,自由自在,乃无量之福,为何远虑而忧也? |
| 今日虽不归人王法律,不惧禽兽威服,将来年老血衰,暗中有阎王老子管着,一旦身亡,可不枉生世界之中,不得久住天人之内? |
| 大王若是这般远虑,真所谓道心开发也!如今五虫之内,惟有三等名色,不伏阎王老子所管。 |
| 你知那三等人? |
| 乃是佛与仙与神圣三者,躲过轮回,不生不灭,与天地山川齐寿。 |
| 此三者居于何所? |
| 他只在阎浮世界之中,古洞仙山之内。 |
| 我明日就辞汝等下山,云游海角,远涉天涯,务必访此三者,学一个不老长生,常躲过阎君之难。 |
| 善哉!善哉!我等明日越岭登山,广寻些果品,大设筵宴送大王也。 |
| 小的们,替我折些枯松,编作筏子,取个竹竿作篙,收拾些果品之类,我将去也。 |
| 神仙原来藏在这里! |
| 老神仙!弟子起手。 |
| 不当人!不当人!我拙汉衣食不全,怎敢当‘神仙’二字? |
| 你不是神仙,如何说出神仙的话来? |
| 我说甚么神仙话? |
| 我才来至林边,只听的你说:‘相逢处非仙即道,静坐讲《黄庭》。’《黄庭》乃道德真言,非神仙而何? |
| 实不瞒你说,这个词名做满庭芳,乃一神仙教我的。那神仙与我舍下相邻。他见我家事劳苦,日常烦恼,教我遇烦恼时,即把这词儿念念。一则 |
| 你家既与神仙相邻,何不从他修行?学得个不老之方?却不是好? |
| 我一生命苦,自幼蒙父母养育至八九岁,才知人事,不幸父丧,母亲居孀。再无兄弟姊妹,只我一人,没奈何,早晚侍奉。如今母老,一发不敢抛离。却又田园荒芜,衣食不足,只得斫两束柴薪,挑向市尘之间,货几文钱,籴几升米,自炊自造,安排些茶饭,供养老母,所以不能修行。 |
| 据你说起来,乃是一个行孝的君子,向后必有好处。但望你指与我那神仙住处,却好拜访去也。 |
| 不远,不远。此山叫做灵台方寸山。山中有座斜月三星洞。那洞中有一个神仙,称名须菩提祖师。那祖师出去的徒弟,也不计其数,见今还有三四十人从他修行。你顺那条小路儿,向南行七八里远近,即是他家了。 |
| 老兄,你便同我去去。若还得了好处,决不忘你指引之恩。 |
| 你这汉子,甚不通变。我方才这般与你说了,你还不省?假若我与你去了,却不误了我的生意?老母何人奉养?我要斫柴,你自去,自去。 |
| 此间人果是朴实。果有此山此洞。 |
| 甚么人在此搔扰? |
| 仙童,我是个访道学仙之弟子,更不敢在此搔扰。 |
| 你是个访道的么? |
| 是。 |
| 我家师父,正才下榻,登坛讲道。还未说出原由,就教我出来开门。说:‘外面有个修行的来了,可去接待接待。’想必就是你了? |
| 是我,是我。 |
示例代码(Python 加载)
Reformer 是一种更高效的 Transformer 变体,专注于处理大规模序列数据,同时减少内存和计算消耗。它使用局部敏感哈希(LSH)注意力和可逆网络来优化计算和内存开销,特别适合处理长文本序列。
我们可以通过 Hugging Face 的 transformers 库来实现 Reformer 模型,并基于你提供的《西游记》人物对话数据集实现对话生成任务。以下是一个简单、可复现的代码示例。
环境准备
首先,确保安装必要的依赖库:
pip install transformers torch datasets使用 Reformer 进行对话生成的示例代码
步骤1:加载数据并进行预处理
假设你已经有一个《西游记》人物对话数据集,格式如下:
“师父,我有点饿了。”
“悟空,别乱说话。”
“八戒,你又馋了!” 你可以将这些对话内容保存为 xiyouji_dialogues.txt,或者自行创建类似格式的文本文件。
import torch
from transformers import ReformerTokenizer, ReformerModelWithLMHead
from datasets import load_dataset, Dataset
# 加载Reformer模型和Tokenizer
tokenizer = ReformerTokenizer.from_pretrained('google/reformer-crime-and-punishment')
model = ReformerModelWithLMHead.from_pretrained('google/reformer-crime-and-punishment')
# 假设你已经有《西游记》对话数据集
data = {
'dialogue': [
"师父,我有点饿了。",
"悟空,别乱说话。",
"八戒,你又馋了!",
"沙僧,去挑水。",
"我们要继续赶路了。"
]
}
# 将数据转换为Dataset格式
dataset = Dataset.from_dict(data)
# 定义数据预处理函数
def preprocess_function(examples):
return tokenizer(examples['dialogue'], truncation=True, padding='max_length', max_length=128)
# 对数据集进行Tokenize
tokenized_dataset = dataset.map(preprocess_function, batched=True)
步骤2:设置训练参数并进行训练
在这个示例中,我们使用预训练的 Reformer 模型来进行微调,也可以使用这个过程生成对话。
from transformers import Trainer, TrainingArguments
# 设置训练参数
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, # 保留最近的2个模型
)
# 定义Trainer
trainer = Trainer(
model=model,
args=training_args,
train_dataset=tokenized_dataset,
eval_dataset=tokenized_dataset
)
# 开始训练
trainer.train()
步骤3:对话生成
训练完成后,你可以使用模型来生成新的对话。
# 定义对话生成函数
def generate_dialogue(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_dialogue(prompt)
print(f"生成的对话: {response}")
代码解释
- 加载模型和Tokenizer:我们使用的是google/reformer-crime-and-punishment,这是一个使用 Reformer 架构的预训练模型。
- 加载数据集:将《西游记》对话内容加载到Dataset对象中,并使用 Tokenizer 对数据进行预处理。
- 模型训练:使用 Hugging Face 的 Trainer 来简化训练过程。Trainer会自动处理模型的训练、评估和保存。
- 生成对话:定义一个generate_dialogue函数,用于输入提示并生成相应的对话。你可以根据给定的对话提示生成类似的对话。
数据集
- 如果你还没有数据集,可以手动从《西游记》文本中提取对话内容,或者根据已经提取的对话内容创建数据集。
- 数据集可以通过手动标注的方式保存为CSV或TXT文件,便于加载和处理。