當談到意圖數據集時,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