File size: 5,143 Bytes
ad491b1 4d1a6d4 afe6eab ad491b1 4d1a6d4 afe6eab 4d1a6d4 d9171f8 bcb1ccd d9171f8 bcb1ccd d9171f8 4d1a6d4 3302f7d 4d1a6d4 d9171f8 4d1a6d4 d9171f8 09e4cde 4d1a6d4 afe6eab |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 |
---
pipeline_tag: sentence-similarity
tags:
- sentence-transformers
- feature-extraction
- sentence-similarity
- law
- australia
- legal
- auslaw
license: apache-2.0
datasets:
- umarbutler/open-australian-legal-corpus
language:
- en
---
# AusLaw Embedding Model v1.0
This is a [sentence-transformers](https://www.SBERT.net) model: It maps sentences & paragraphs to a 384 dimensional dense vector space and can be used for tasks like clustering or semantic search.
This model is a fine-tune of [BAAI/bge-small-en](https://huggingface.co/BAAI/bge-small-en) using the HCA case law in the [Open Australian Legal Corpus](https://huggingface.co/datasets/umarbutler/open-australian-legal-corpus) by Umar Butler. The PDF/OCR cases were not used.
The cases were split into < 512 context chunks using the bge-small-en tokeniser and [semchunk](https://github.com/umarbutler/semchunk).
[mistralai/Mixtral-8x7B-Instruct-v0.1](https://huggingface.co/mistralai/Mixtral-8x7B-Instruct-v0.1) was used to generate a legal question for each context chunk.
129,137 context-question pairs were used for training.
14,348 context-question pairs were used for evaluation (see the table below for results).
Using a 10% subset of the val dataset the following hit-rate performance was reached and is compared to the base model and OpenAI's default ada embedding model.
| **Model** | **Avg. hit-rate** |
|---------------------------|-------------------|
| BAAI/bge-small-en | 89% |
| OpenAI | 92% |
| adlumal/auslaw-embed-v1.0 | **97%** |
## Usage (Sentence-Transformers)
Using this model becomes easy when you have [sentence-transformers](https://www.SBERT.net) installed:
```
pip install -U sentence-transformers
```
Then you can use the model like this:
```python
from sentence_transformers import SentenceTransformer
sentences = ["This is an example sentence", "Each sentence is converted"]
model = SentenceTransformer('adlumal/auslaw-embed-v1.0')
embeddings = model.encode(sentences)
print(embeddings)
```
## Evaluation Results
The model was evauluated on 10% of the available data. The automated eval results for the final step are presented below.
| Eval | Score |
|------------------------|--------------|
| cos_sim-Accuracy@1 | 0.730206301 |
| cos_sim-Accuracy@3 | 0.859562308 |
| cos_sim-Accuracy@5 | 0.892737664 |
| cos_sim-Accuracy@10 | 0.928352384 |
| cos_sim-Precision@1 | 0.730206301 |
| cos_sim-Recall@1 | 0.730206301 |
| cos_sim-Precision@3 | 0.286520769 |
| cos_sim-Recall@3 | 0.859562308 |
| cos_sim-Precision@5 | 0.178547533 |
| cos_sim-Recall@5 | 0.892737664 |
| cos_sim-Precision@10 | 0.092835238 |
| cos_sim-Recall@10 | 0.928352384 |
| cos_sim-MRR@10 | 0.801075782 |
| cos_sim-NDCG@10 | 0.832189447 |
| cos_sim-MAP@100 | 0.803593645 |
| dot_score-Accuracy@1 | 0.730136604 |
| dot_score-Accuracy@3 | 0.859562308 |
| dot_score-Accuracy@5 | 0.892737664 |
| dot_score-Accuracy@10 | 0.928352384 |
| dot_score-Precision@1 | 0.730136604 |
| dot_score-Recall@1 | 0.730136604 |
| dot_score-Precision@3 | 0.286520769 |
| dot_score-Recall@3 | 0.859562308 |
| dot_score-Precision@5 | 0.178547533 |
| dot_score-Recall@5 | 0.892737664 |
| dot_score-Precision@10 | 0.092835238 |
| dot_score-Recall@10 | 0.928352384 |
| dot_score-MRR@10 | 0.801040934 |
| dot_score-NDCG@10 | 0.832163724 |
| dot_score-MAP@100 | 0.803558796 |
## Training
The model was trained with the parameters:
**DataLoader**:
`torch.utils.data.dataloader.DataLoader` of length 2583 with parameters:
```
{'batch_size': 50, 'sampler': 'torch.utils.data.sampler.SequentialSampler', 'batch_sampler': 'torch.utils.data.sampler.BatchSampler'}
```
**Loss**:
`sentence_transformers.losses.MultipleNegativesRankingLoss.MultipleNegativesRankingLoss` with parameters:
```
{'scale': 20.0, 'similarity_fct': 'cos_sim'}
```
Parameters of the fit()-Method:
```
{
"epochs": 2,
"evaluation_steps": 50,
"evaluator": "sentence_transformers.evaluation.InformationRetrievalEvaluator.InformationRetrievalEvaluator",
"max_grad_norm": 1,
"optimizer_class": "<class 'torch.optim.adamw.AdamW'>",
"optimizer_params": {
"lr": 2e-05
},
"scheduler": "WarmupLinear",
"steps_per_epoch": null,
"warmup_steps": 516,
"weight_decay": 0.01
}
```
## Full Model Architecture
```
SentenceTransformer(
(0): Transformer({'max_seq_length': 512, 'do_lower_case': True}) with Transformer model: BertModel
(1): Pooling({'word_embedding_dimension': 384, 'pooling_mode_cls_token': True, 'pooling_mode_mean_tokens': False, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False})
(2): Normalize()
)
```
## Citing & Authors
```bibtex
@misc{malec-2024-auslaw-embed-v1,
author = {Malec, Adrian Lucas},
year = {2024},
title = {AusLaw Embedding v1.0},
publisher = {Hugging Face},
version = {1.0},
url = {https://huggingface.co/adlumal/auslaw-embed-v1.0}
}
``` |