Update README.md
Browse files
README.md
CHANGED
@@ -1,199 +1,114 @@
|
|
1 |
---
|
2 |
library_name: transformers
|
3 |
-
tags:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
---
|
5 |
|
6 |
-
#
|
7 |
|
8 |
-
|
9 |
|
|
|
|
|
10 |
|
|
|
11 |
|
12 |
-
|
13 |
-
|
14 |
-
### Model Description
|
15 |
-
|
16 |
-
<!-- Provide a longer summary of what this model is. -->
|
17 |
-
|
18 |
-
This is the model card of a 🤗 transformers model that has been pushed on the Hub. This model card has been automatically generated.
|
19 |
-
|
20 |
-
- **Developed by:** [More Information Needed]
|
21 |
-
- **Funded by [optional]:** [More Information Needed]
|
22 |
-
- **Shared by [optional]:** [More Information Needed]
|
23 |
-
- **Model type:** [More Information Needed]
|
24 |
-
- **Language(s) (NLP):** [More Information Needed]
|
25 |
-
- **License:** [More Information Needed]
|
26 |
-
- **Finetuned from model [optional]:** [More Information Needed]
|
27 |
-
|
28 |
-
### Model Sources [optional]
|
29 |
-
|
30 |
-
<!-- Provide the basic links for the model. -->
|
31 |
-
|
32 |
-
- **Repository:** [More Information Needed]
|
33 |
-
- **Paper [optional]:** [More Information Needed]
|
34 |
-
- **Demo [optional]:** [More Information Needed]
|
35 |
-
|
36 |
-
## Uses
|
37 |
-
|
38 |
-
<!-- Address questions around how the model is intended to be used, including the foreseeable users of the model and those affected by the model. -->
|
39 |
-
|
40 |
-
### Direct Use
|
41 |
-
|
42 |
-
<!-- This section is for the model use without fine-tuning or plugging into a larger ecosystem/app. -->
|
43 |
-
|
44 |
-
[More Information Needed]
|
45 |
-
|
46 |
-
### Downstream Use [optional]
|
47 |
-
|
48 |
-
<!-- This section is for the model use when fine-tuned for a task, or when plugged into a larger ecosystem/app -->
|
49 |
-
|
50 |
-
[More Information Needed]
|
51 |
-
|
52 |
-
### Out-of-Scope Use
|
53 |
-
|
54 |
-
<!-- This section addresses misuse, malicious use, and uses that the model will not work well for. -->
|
55 |
-
|
56 |
-
[More Information Needed]
|
57 |
-
|
58 |
-
## Bias, Risks, and Limitations
|
59 |
-
|
60 |
-
<!-- This section is meant to convey both technical and sociotechnical limitations. -->
|
61 |
-
|
62 |
-
[More Information Needed]
|
63 |
-
|
64 |
-
### Recommendations
|
65 |
-
|
66 |
-
<!-- This section is meant to convey recommendations with respect to the bias, risk, and technical limitations. -->
|
67 |
-
|
68 |
-
Users (both direct and downstream) should be made aware of the risks, biases and limitations of the model. More information needed for further recommendations.
|
69 |
-
|
70 |
-
## How to Get Started with the Model
|
71 |
-
|
72 |
-
Use the code below to get started with the model.
|
73 |
-
|
74 |
-
[More Information Needed]
|
75 |
-
|
76 |
-
## Training Details
|
77 |
-
|
78 |
-
### Training Data
|
79 |
-
|
80 |
-
<!-- This should link to a Dataset Card, perhaps with a short stub of information on what the training data is all about as well as documentation related to data pre-processing or additional filtering. -->
|
81 |
-
|
82 |
-
[More Information Needed]
|
83 |
-
|
84 |
-
### Training Procedure
|
85 |
-
|
86 |
-
<!-- This relates heavily to the Technical Specifications. Content here should link to that section when it is relevant to the training procedure. -->
|
87 |
-
|
88 |
-
#### Preprocessing [optional]
|
89 |
-
|
90 |
-
[More Information Needed]
|
91 |
-
|
92 |
-
|
93 |
-
#### Training Hyperparameters
|
94 |
-
|
95 |
-
- **Training regime:** [More Information Needed] <!--fp32, fp16 mixed precision, bf16 mixed precision, bf16 non-mixed precision, fp16 non-mixed precision, fp8 mixed precision -->
|
96 |
-
|
97 |
-
#### Speeds, Sizes, Times [optional]
|
98 |
-
|
99 |
-
<!-- This section provides information about throughput, start/end time, checkpoint size if relevant, etc. -->
|
100 |
-
|
101 |
-
[More Information Needed]
|
102 |
-
|
103 |
-
## Evaluation
|
104 |
-
|
105 |
-
<!-- This section describes the evaluation protocols and provides the results. -->
|
106 |
-
|
107 |
-
### Testing Data, Factors & Metrics
|
108 |
-
|
109 |
-
#### Testing Data
|
110 |
-
|
111 |
-
<!-- This should link to a Dataset Card if possible. -->
|
112 |
-
|
113 |
-
[More Information Needed]
|
114 |
-
|
115 |
-
#### Factors
|
116 |
-
|
117 |
-
<!-- These are the things the evaluation is disaggregating by, e.g., subpopulations or domains. -->
|
118 |
-
|
119 |
-
[More Information Needed]
|
120 |
-
|
121 |
-
#### Metrics
|
122 |
-
|
123 |
-
<!-- These are the evaluation metrics being used, ideally with a description of why. -->
|
124 |
-
|
125 |
-
[More Information Needed]
|
126 |
-
|
127 |
-
### Results
|
128 |
|
129 |
-
|
130 |
|
131 |
-
|
132 |
|
|
|
|
|
133 |
|
|
|
|
|
134 |
|
135 |
-
|
|
|
|
|
136 |
|
137 |
-
|
138 |
|
139 |
-
|
140 |
|
141 |
-
|
|
|
142 |
|
143 |
-
|
|
|
|
|
144 |
|
145 |
-
|
146 |
|
147 |
-
|
148 |
-
- **Hours used:** [More Information Needed]
|
149 |
-
- **Cloud Provider:** [More Information Needed]
|
150 |
-
- **Compute Region:** [More Information Needed]
|
151 |
-
- **Carbon Emitted:** [More Information Needed]
|
152 |
|
153 |
-
|
154 |
|
155 |
-
|
|
|
|
|
|
|
|
|
156 |
|
157 |
-
|
158 |
|
159 |
-
|
|
|
|
|
|
|
160 |
|
161 |
-
|
162 |
|
163 |
-
|
164 |
|
165 |
-
|
166 |
|
167 |
-
|
168 |
|
169 |
-
|
170 |
|
171 |
-
|
|
|
|
|
172 |
|
173 |
-
|
|
|
|
|
174 |
|
175 |
-
|
176 |
|
177 |
-
|
|
|
|
|
178 |
|
179 |
-
|
180 |
|
181 |
-
|
182 |
|
183 |
-
|
184 |
|
185 |
-
|
186 |
|
187 |
-
|
188 |
|
189 |
-
|
|
|
|
|
190 |
|
191 |
-
|
192 |
|
193 |
-
|
194 |
|
195 |
-
|
196 |
|
197 |
-
##
|
198 |
|
199 |
-
|
|
|
1 |
---
|
2 |
library_name: transformers
|
3 |
+
tags:
|
4 |
+
- ner
|
5 |
+
license: apache-2.0
|
6 |
+
language:
|
7 |
+
- ru
|
8 |
+
- en
|
9 |
+
base_model:
|
10 |
+
- google-bert/bert-base-uncased
|
11 |
---
|
12 |
|
13 |
+
# NERC Extraction – Stage 2 Models
|
14 |
|
15 |
+
This repository contains two small neural models for Named Entity Recognition (NER) that have been trained using different annotation sources:
|
16 |
|
17 |
+
- **model_llm_pure**: Trained solely on low-quality annotations generated by a Large Language Model (LLM).
|
18 |
+
- **primary_model**: Fine-tuned on the original, ground-truth annotations from the CoNLL2003 dataset.
|
19 |
|
20 |
+
Both models use a hybrid architecture combining a pre-trained BERT model for contextualized word embeddings, a bidirectional LSTM layer to capture sequence dependencies, and a linear classifier to predict NER tags. The models are evaluated using an entity-level evaluation strategy that measures the correctness of entire entities (including boundaries and labels) using the `seqeval` library.
|
21 |
|
22 |
+
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
|
24 |
+
## Model Architecture
|
25 |
|
26 |
+
**Core Components:**
|
27 |
|
28 |
+
1. **Pre-trained BERT Encoder:**
|
29 |
+
Uses `bert-base-cased` to generate high-quality contextualized embeddings for input tokens.
|
30 |
|
31 |
+
2. **Bidirectional LSTM (BiLSTM):**
|
32 |
+
Processes the sequence of BERT embeddings to capture sequential dependencies, ensuring that both left and right contexts are taken into account.
|
33 |
|
34 |
+
3. **Linear Classification Layer:**
|
35 |
+
Maps the output of the BiLSTM to the set of NER tags defined in the project.
|
36 |
+
The tag set includes standard BIO tags for Person, Organization, Location, Miscellaneous, and additional special tokens (`[CLS]`, `[SEP]`, `X`).
|
37 |
|
38 |
+
---
|
39 |
|
40 |
+
## Training Data & Annotation Sources
|
41 |
|
42 |
+
- **Low-Quality (LLM) Annotations:**
|
43 |
+
The **model_llm_pure** was trained on a dataset generated using the best method from the first stage of the project. This dataset contains approximately 1,000 sentences with LLM-generated annotations.
|
44 |
|
45 |
+
- **Ground-Truth Annotations (CoNLL2003):**
|
46 |
+
The **primary_model** was trained on the original expert annotations from the CoNLL2003 dataset (approximately 14,000 sentences).
|
47 |
+
As a result, **primary_model** exhibits significantly improved performance over **model_llm_pure**.
|
48 |
|
49 |
+
---
|
50 |
|
51 |
+
## Evaluation Metrics
|
|
|
|
|
|
|
|
|
52 |
|
53 |
+
Our evaluation strategy is based on an entity-level approach:
|
54 |
|
55 |
+
1. **Entity-Level Evaluation Module:**
|
56 |
+
- **Prediction Collection:** For each sentence, predicted and true labels are collected in a list-of-lists format.
|
57 |
+
- **Seqeval Accuracy:** Measures the overall accuracy at the entity level.
|
58 |
+
- **F1-Score:** Calculated as the harmonic mean of precision and recall for entire entities. A correct prediction requires that the full entity (with correct boundaries and label) is identified.
|
59 |
+
- **Classification Report:** Provides detailed precision, recall, and F1-scores for each entity type.
|
60 |
|
61 |
+
2. **Results Comparison:**
|
62 |
|
63 |
+
| Model | Validation Loss | Seqeval Accuracy | F1-Score |
|
64 |
+
|-----------------|-----------------|------------------|----------|
|
65 |
+
| **model_llm_pure** | 0.53443 | 0.85185 | 0.47493 |
|
66 |
+
| **primary_model** | 0.09430 | 0.97955 | 0.88959 |
|
67 |
|
68 |
+
These results demonstrate that **primary_model** (trained on ground-truth CoNLL2003 data) achieves significantly better performance compared to **model_llm_pure**, reflecting the importance of high-quality annotations in NER.
|
69 |
|
70 |
+
---
|
71 |
|
72 |
+
## Usage
|
73 |
|
74 |
+
### Inference
|
75 |
|
76 |
+
You can load any of the models using the Hugging Face `from_pretrained` API. For example, to load the primary model:
|
77 |
|
78 |
+
```python
|
79 |
+
from transformers import BertTokenizer
|
80 |
+
from your_model_module import NERSmall # make sure NERSmall is imported
|
81 |
|
82 |
+
tokenizer = BertTokenizer.from_pretrained("bert-base-cased")
|
83 |
+
model_primary = NERSmall.from_pretrained("estnafinema0/nerc-extraction", revision="model_primary").to("cuda")
|
84 |
+
```
|
85 |
|
86 |
+
Similarly, to load the LLM-based model:
|
87 |
|
88 |
+
```python
|
89 |
+
model_llm_pure = NERSmall.from_pretrained("estnafinema0/nerc-extraction", revision="main").to("cuda")
|
90 |
+
```
|
91 |
|
92 |
+
### Fine-tuning & Active Learning
|
93 |
|
94 |
+
This repository also serves as the basis for further active learning experiments. The evaluation is performed using an entity-level strategy that ensures that only complete entities (with correct boundaries and labels) are counted as correct. Our active learning experiments (described in additional documentation) have demonstrated that adding high-quality expert examples significantly improves the F1-score.
|
95 |
|
96 |
+
---
|
97 |
|
98 |
+
## Training & Evaluation
|
99 |
|
100 |
+
**Training Environment:**
|
101 |
|
102 |
+
- **Optimizer:** Stochastic Gradient Descent (SGD) with learning rate 0.001 and momentum 0.9.
|
103 |
+
- **Batch Size:** 32
|
104 |
+
- **Epochs:** Models are trained for 5 epochs during initial training (with further fine-tuning as part of active learning experiments).
|
105 |
|
106 |
+
**Evaluation Function:**
|
107 |
|
108 |
+
Our evaluation function computes entity-level metrics (F1, seqeval accuracy, and validation loss) by processing batches and collecting predictions in a list-of-lists format to ensure that only correctly identified complete entities contribute to the final score.
|
109 |
|
110 |
+
---
|
111 |
|
112 |
+
## Additional Information
|
113 |
|
114 |
+
- **Repository:** All models and intermediate checkpoints are stored in separate branches of the repository. For instance, **primary_model** is available in the branch `model_primary`, while other models (from active learning experiments) are stored in branches with names indicating the iteration and percentage of added expert data (e.g., `active_iter_1_added_20`).
|