MultiWOZ完全指南:多领域对话数据集与端到端对话模型的终极资源
MultiWOZ是一个完全标注的人机对话集合,涵盖多个领域和主题,是端到端对话模型研究的重要资源。作为GitHub加速计划中的开源项目,它为开发者和研究者提供了丰富的对话数据和模型实现,帮助构建更智能的对话系统。
什么是MultiWOZ?
MultiWOZ(Multi-Domain Wizard-of-Oz dataset)是一个大规模的多领域对话数据集,包含超过10k个对话,比以往所有带注释的任务导向语料库至少大一个数量级。它由单领域和多领域对话组成,支持训练和评估端到端对话模型。
数据集版本说明
MultiWOZ提供多个版本,满足不同研究需求:
- MultiWOZ_2.2:最新的修正版本,由Google团队贡献
- MultiWOZ_2.1:修正版本,由Amazon团队贡献
- MultiWOZ_2.0:EMNLP publication中使用的数据集
- MultiWOZ_1.0:ACL publication中使用的数据集
所有数据集文件位于项目的data/目录下,可直接通过DialogStudio加载使用。
数据集结构与内容
MultiWOZ数据集包含3,406个单领域对话和7,032个多领域对话(包含至少2到5个领域)。语料库被随机分为训练集、测试集和开发集,其中测试集和开发集各包含1k个示例。
对话类型区分
- MUL和PMUL:严格的多领域对话(至少涉及2个主要领域)
- SNG、SSNG和WOZ:单领域对话,可能包含预订等子领域
每个对话包含:
- 目标(goal)
- 多个用户和系统 utterances
- 信念状态(belief state)
- 自然语言任务描述
信念状态分为三个部分:
- semi:特定领域的 slots
- book:特定领域的预订 slots
- booked:已预订实体的信息
领域与本体定义
MultiWOZ 2.2版本的schema.json定义了新的本体,包含以下领域:
| 领域 | 分类槽位 | 非分类槽位 | 意图 |
|---|---|---|---|
| Restaurant | pricerange, area, bookday, bookpeople | food, name, booktime, address, phone, postcode, ref | find, book |
| Attraction | area, type | name, address, entrancefee, openhours, phone, postcode | find |
| Hotel | pricerange, parking, internet, stars, area, type, bookpeople, bookday, bookstay | name, address, phone, postcode, ref | find, book |
| Taxi | - | destination, departure, arriveby, leaveat, phone, type | book |
| Train | destination, departure, day, bookpeople | arriveby, leaveat, trainid, ref, price, duration | find, book |
| Bus | day | departure, destination, leaveat | find |
| Hospital | - | department, address, phone, postcode | find |
| Police | - | name, address, phone, postcode | find |
在61个槽位中,有35个槽位在对话状态中被跟踪,包括attraction-area、bus-day、hotel-bookday等关键信息。
如何开始使用MultiWOZ?
1. 克隆项目仓库
git clone https://gitcode.com/gh_mirrors/mu/multiwoz
2. 安装依赖
项目根目录下的requirements.txt列出了必要的依赖项,可通过以下命令安装:
pip install -r requirements.txt
3. 数据处理
MultiWOZ提供了数据转换脚本,如data/MultiWOZ_2.2/convert_to_multiwoz_format.py,可将数据转换为标准格式。
4. 模型训练与评估
项目包含完整的模型实现,位于model/目录,包括:
使用train.py进行模型训练,evaluate.py进行评估:
# 训练模型
python train.py
# 评估模型
python evaluate.py
实用工具与资源
MultiWOZ提供了多种实用工具,位于utils/目录:
- dbPointer.py:数据库指针工具
- delexicalize.py:去词汇化处理
- nlp.py:自然语言处理工具
- util.py:通用工具函数
此外,项目还包含多个领域的数据库文件,如:
- db/restaurant_db.json:餐厅数据库
- db/hotel_db.json:酒店数据库
- db/train_db.json:火车数据库
对话状态跟踪基准
MultiWOZ已成为对话状态跟踪(DST)研究的重要基准。以下是部分模型在不同版本上的性能:
| 模型 | MultiWOZ 2.0 联合准确率 | MultiWOZ 2.1 联合准确率 | MultiWOZ 2.2 联合准确率 |
|---|---|---|---|
| GLAD (Zhong et al., 2018) | 35.57 | - | - |
| TRADE (Wu et al, 2019) | 48.62 | 46.0 | 45.4 |
| DSTQA (Zhou et al, 2019) | 51.44 | 51.17 | - |
| SUMBT+LaRL (Lee et al. 2020) | 51.52 | - | - |
提示:进行DST实验时,请遵循TRADE模型的数据处理和评分脚本。
常见问题解答
Q: 对话文件命名有什么含义?
A: MUL和PMUL指严格的多领域对话,SNG、SSNG和WOZ指单领域对话(可能包含预订子领域)。
Q: 用户对话行为是否有标注?
A: 只有系统 utterances 有手动标注的对话行为,MultiWOZ 2.1通过ConvLab中的启发式方法自动标注了用户对话行为。
Q: 为什么医院和警察领域没有对话状态跟踪标签?
A: 这些领域非常简单,且在验证和测试集中没有这些领域的对话。
总结
MultiWOZ作为一个全面的多领域对话数据集,为对话系统研究提供了丰富的资源。无论是对话状态跟踪、意图识别还是端到端对话生成,MultiWOZ都能满足你的研究需求。通过本文提供的指南,你可以快速开始使用这个强大的工具,构建更智能、更自然的对话系统。
立即克隆项目,探索MultiWOZ带来的无限可能吧!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



