Jizhi Datasets

【名著】《西游记》人物对话内容数据集

просмотров 790загрузок 49Размер: 0.6Формат: XLSX15.10.2024

Обзор

**《西游记》**是中国四大古典名著之一,由吴承恩创作,讲述了唐僧师徒四人西天取经的故事,包含丰富的神话和冒险元素。本数据集专注于提取《西游记》中的人物对话内容,旨在为自然语言处理(NLP)和对话生成模型提供高质量的中文语料。数据集适合对话生成、情感分析、文本理解等多种应用场景。

数据集特点
  • 人物对话提取:涵盖《西游记》故事中的经典对话,内容来自唐僧、孙悟空、猪八戒、沙僧等主要人物,展现了不同角色的个性和语言风格。
  • 格式规范:数据集经过严格的格式化处理,专注于对话内容,去除了人物名称和背景描述,方便在NLP任务中应用。
  • 应用广泛:适用于对话生成、文本分类、人物关系分析等自然语言处理任务。
数据集用途
  1. 对话生成:该数据集适合训练基于经典文学对话风格的生成模型,用于智能助手和聊天机器人等应用。
  2. 情感分析:通过分析《西游记》中的对话内容,研究各角色在不同场景下的情感表达。
  3. 文本理解:帮助研究者对古典文学中的语言进行深入分析,适用于文本理解和句子生成等任务。
数据集格式

该数据集提供标准的文本格式,仅包含人物对话内容,不包含上下文和人物名称。适用于自然语言处理和机器学习模型的训练。

Предпросмотр

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}")
代码解释
  1. 加载模型和Tokenizer:我们使用的是google/reformer-crime-and-punishment,这是一个使用 Reformer 架构的预训练模型。
  2. 加载数据集:将《西游记》对话内容加载到Dataset对象中,并使用 Tokenizer 对数据进行预处理。
  3. 模型训练:使用 Hugging Face 的 Trainer 来简化训练过程。Trainer会自动处理模型的训练、评估和保存。
  4. 生成对话:定义一个generate_dialogue函数,用于输入提示并生成相应的对话。你可以根据给定的对话提示生成类似的对话。
数据集
  • 如果你还没有数据集,可以手动从《西游记》文本中提取对话内容,或者根据已经提取的对话内容创建数据集。
  • 数据集可以通过手动标注的方式保存为CSV或TXT文件,便于加载和处理。