当谈到意图数据集时,HWU、Banking和Clinc是三个常见的数据集。以下是关于这三个数据集的介绍:
目录
一、数据集介绍
HWU数据集
Banking数据集
Clinc数据集
二、数据集预处理
数据处理
数据存储
数据类别分析
句子长度统计
一、数据集介绍
HWU数据集
- 来源与用途:HWU数据集通常用于自然语言处理和任务型对话系统的研究中,特别是在意图识别和对话状态追踪方面。
- 内容特点:该数据集包含多种用户意图和对应的语句,这些语句旨在反映真实世界中用户可能提出的各种请求和查询。
- 使用场景:研究人员可以使用HWU数据集来训练和测试他们的模型,以准确识别用户的意图,并据此作出相应的响应。
Banking数据集
- 专注领域:Banking数据集(以BANKING77为例)专注于银行领域的对话意图识别。它包含了与银行服务相关的各种用户查询和意图。
- 数据构成:这个数据集通常包含大量的用户提问样本,每个样本都标注了具体的意图类别,如查询余额、转账、查询交易记录等。
- 应用价值:对于开发智能银行助理或金融领域的自然语言处理应用来说,Banking数据集是一个宝贵的资源。它可以帮助模型更好地理解和响应用户在银行业务方面的需求。
Clinc数据集
- 广泛覆盖:Clinc数据集(以CLINC150为例)是一个相对大型的数据集,涵盖了广泛的用户意图和场景,不仅限于特定领域。
- 意图多样性:该数据集包含多达150种不同的意图,这些意图涉及各种日常活动和信息查询,如播放音乐、查询天气、设置提醒等。
- 研究价值:由于Clinc数据集的多样性和广泛性,它成为了研究通用意图识别和对话系统的重要资源。研究人员可以利用这个数据集来开发和测试更加通用和健壮的自然语言处理模型。
总的来说,HWU、Banking和Clinc这三个数据集在意图识别和对话系统研究中各有侧重,共同为研究人员提供了丰富的数据和场景来训练和测试他们的模型。
二、数据集预处理
数据处理
python读取数据
import pandas as pd
from datasets import load_from_disk
raw_datasets = load_from_disk("./banking77/")
展示数据
raw_datasets
DatasetDict({train: Dataset({features: ['text', 'label'],num_rows: 10003})test: Dataset({features: ['text', 'label'],num_rows: 3080}) })
可以看到,数据集是json格式 ,我们要把它转换成tsv或者csv格式,一列内容,一列标签的格式。
# 转换 train 数据集为 DataFrame
train_df = raw_datasets['train'].to_pandas()# 转换 test 数据集为 DataFrame
test_df = raw_datasets['test'].to_pandas()
train_df.head(2)
从打印前两行可知,数据已成功转换为text和label两列并转换为tsv格式方便读取。
数据存储
train_df.to_csv('./banking77/banking_train.tsv',index=False,sep='\t')
test_df.to_csv('./banking77/banking_dev.tsv',index=False,sep='\t')
数据类别分析
import pandas as pd
df = pd.read_csv('./HWU/HWU_train_data.tsv', sep='\t')
# # df = pd.read_csv('./SST-2/dev.tsv', sep='\t')
df.head()
# # 统计 label 列的种类数量
label_counts = df['label'].value_counts()
print(label_counts)# # 输出种类数量
print(f"label 列共有 {len(label_counts)} 种不同的取值。")
label 9 1216 48 1014 27 920 67 894 53 892... 34 35 41 21 5 18 23 18 10 5 Name: count, Length: 68, dtype: int64 label 列共有 68 种不同的取值。
句子长度统计
import csv# 读取CSV文件
filename = './HWU/HWU_dev_data.tsv' # 请替换成你的CSV文件路径
with open(filename, 'r', newline='', encoding='utf-8') as csvfile:reader = csv.reader(csvfile)next(reader) # 跳过标题行word_counts = [len(row[0].split()) for row in reader] # 假设你想要获取第二列句子的单词个数# 统计单词个数
total_sentences = len(word_counts)
average_words = sum(word_counts) / total_sentences# 打印结果
print("句子总数:", total_sentences)
print("平均单词数:", average_words)
句子总数: 2000 平均单词数: 6.8565