deka_retrival
收藏资源简介:
dika-quad 是一个泰语最高法院(Deka)案例检索数据集,旨在支持法律文本检索与重排序任务。数据集模拟真实法律场景,用户或律师需要根据查询检索相关的历史判例。数据集包含三个核心部分:1) 语料库(corpus):包含10,007个泰国最高法院案例,每个案例具有唯一ID、案件代码、详细文本描述以及元数据(如年份、涉及罪名、法律条文)。2) 查询集(queries):包含1,183个查询,分为训练集(883个)和测试集(300个)。每个查询提供两种表述形式:user_query(使用通俗泰语,简短无专业术语)和lawer_query(使用详细叙述性专业语言)。查询附带元数据,如案件编号、年份和分割标识。3) 标签集(labels):为每个查询提供相关案例的四象限相关性标签,包括easy_pos(相同罪名/条文,问题高度相关)、hard_pos(条文相近但事实或结果不同)、hard_neg(事实相似但罪名不同)和easy_neg(完全不相关),并附有LLM生成的判断理由。标签还指示了数据是自动挖掘的(mined)还是人工标注的。数据集设计用于评估检索模型在处理不同查询长度(用户查询中位长度49字符,律师查询305字符)和时间偏移(语料案例集中于2550-2563年,查询集中于2563-2569年)时的鲁棒性。数据分割确保训练集和测试集在不同案件类型(犯罪空间)间无泄露。通过提供的加载脚本,数据集可以方便地转换为BEIR标准格式(qrels)、用于双编码器训练的三元组(query, positive, negative)或用于交叉编码器训练的对(query, candidate, score)。
Deka-Quad is a Thai Supreme Court (Deka) case retrieval dataset aimed at supporting legal text retrieval and re-ranking tasks. This dataset simulates real-world legal scenarios, where users or lawyers need to retrieve relevant historical legal precedents based on given queries. The dataset consists of three core components: 1) Corpus: It contains 10,007 Thai Supreme Court cases, each with a unique ID, case code, detailed textual description, and metadata (e.g., case year, alleged offenses, applicable legal provisions). 2) Queries: It includes 1,183 queries, split into a training set (883 samples) and a test set (300 samples). Each query has two versions: `user_query` (in colloquial Thai, short and free of professional jargon) and `lawyer_query` (in detailed, narrative professional legal language). Queries are accompanied by metadata such as case number, year, and split identifier. 3) Labels: For each query, four-quadrant relevance labels for associated cases are provided, including `easy_pos` (highly relevant with identical charges or legal provisions), `hard_pos` (with closely related legal provisions but differing facts or case outcomes), `hard_neg` (with similar facts but different charges), and `easy_neg` (completely irrelevant). Each label is paired with justifications generated by an LLM. Additionally, labels indicate whether the corresponding data was automatically mined or manually annotated. This dataset is designed to evaluate the robustness of retrieval models when handling varying query lengths (median length of 49 characters for user queries, 305 characters for lawyer queries) and temporal shifts (corpus cases are predominantly from 2550–2563 BE, while queries span 2563–2569 BE). The data split ensures no data leakage across different case types (crime spaces) between the training and test sets. With the provided loading scripts, the dataset can be readily converted into BEIR-standard formats (qrels), triplets for dual-encoder training (query, positive, negative), or pairs for cross-encoder training (query, candidate, score).
数据集概览
数据集名称:dika-quad — Thai Supreme Court (Deka) Case Retrieval (泰国最高法院案例检索数据集)
语言:泰语(th)
许可协议:其他(other)
任务类型:文本检索(text-retrieval)
数据集规模:1,000 < n < 10,000
标签:法律(legal)、泰语(thai)、检索(retrieval)、重排序(reranking)
数据文件与结构
数据集包含三个配置文件(config),每个对应一个JSONL文件:
| 文件 | 数量 | 数据模式(Schema) |
|---|---|---|
corpus.jsonl |
10,007 条案例 | _id, deka_code, long_text, metadata{year, crimes[], laws[]} |
queries.jsonl |
1,183 条查询(训练集883条,测试集300条) | _id, user_query, lawer_query, metadata{deka_no, year, split} |
labels.jsonl |
每条查询对应1条标签,包含4个象限及原因 | query_id, split, mined, easy_pos[], hard_pos[], hard_neg[], easy_neg[](每个候选包含 candidate_id, deka, score, why) |
user_query:平民语言,简短,无法律术语(casual)lawer_query:叙述性,有细节(narrative)
象限评分规则(Quadrant → Score)
| 象限 | 含义 | 分数 |
|---|---|---|
easy_pos |
罪名/法条相同,议题相近 | 2 |
hard_pos |
法条相近但事实/结果不同 | 1 |
hard_neg |
事实相似但罪名不同 | 0 |
easy_neg |
完全不相关 | 0 |
使用方式
方式一:通过 huggingface_hub 下载并加载
python from huggingface_hub import snapshot_download path = snapshot_download("PBuakhaw/deka_retrival", repo_type="dataset") sys.path.insert(0, path) from load import load_corpus, load_queries, load_qrels, load_triplets, load_pairs
corpus = load_corpus() queries = load_queries("test", register="user") qrels = load_qrels("test") triplets = load_triplets("train") pairs = load_pairs("train")
方式二:直接使用 datasets 库
python from datasets import load_dataset corpus = load_dataset("PBuakhaw/deka_retrival", data_files="corpus.jsonl", split="train") queries = load_dataset("PBuakhaw/deka_retrival", data_files="queries.jsonl", split="train") labels = load_dataset("PBuakhaw/deka_retrival", data_files="labels.jsonl", split="train")
使用前需知的四个要点(EDA)
1. 挖掘(Mining)覆盖情况
- 925/1,183 条查询(78%)被挖掘成功(
mined:true) - 训练集几乎全覆盖(881条),测试集仅约44条有对应标签
- 测试集上的检索指标不稳定,需谨慎使用
2. 时间偏移(Temporal Shift)
- 语料库密集集中在佛历2550–2563年
- 查询集中在佛历2563–2569年
- 两者仅在佛历2563年有重叠,任务本质是用旧判例匹配新案件
3. 两种查询长度差异(2 Register)
user_query中位数长度:49 个字符lawer_query中位数长度:305 个字符- 两者长度相差约6倍,可用于测试模型对短查询与长查询的鲁棒性
4. 数据集划分无泄漏(No Leak)
- 犯罪空间分为8个案件类别
- 当前划分方式中训练集和测试集混合了所有类别,不存在数据泄漏
- 但测试集在各类别中的比例不完全均匀(19%–39%),建议按类别分别评估指标
报告与复现
- 完整EDA报告:
EDA.md - 复现代码:
python eda.py




