|
Download README.md from K-Monitor/kmdb_ner_v5: direct link, hf CLI and curl.
- Browser
- Download file 3.46 kB
-
https://huggingface.co/K-Monitor/kmdb_ner_v5/resolve/main/README.md
- Command line
-
hf download hf://K-Monitor/kmdb_ner_v5/README.md
-
curl -L -o README.md https://huggingface.co/K-Monitor/kmdb_ner_v5/resolve/main/README.md
3.46 kB
| language: | |
| - hu | |
| license: apache-2.0 | |
| base_model: SZTAKI-HLT/hubert-base-cc | |
| pipeline_tag: token-classification | |
| tags: | |
| - hungarian | |
| - ner | |
| - corruption | |
| datasets: | |
| - K-Monitor/kmdb_base | |
| metrics: | |
| - precision | |
| - recall | |
| - f1 | |
| # kmdb_ner_v5 | |
| Hungarian named entity recognition for the | |
| [K-Monitor press database](https://adatbazis.k-monitor.hu/). It does two jobs | |
| at once: it finds people, organisations and places in an article, and it marks | |
| which of them are the ones an editor would actually record for that article. | |
| Labels are `B-/I-` + `{POS,NEG}_{PER,ORG,LOC}`. `POS` means the entity is | |
| relevant to the article's case and belongs in the database; `NEG` means it is | |
| merely mentioned. | |
| Finetuned from `SZTAKI-HLT/hubert-base-cc` on 58,524 articles from | |
| [`K-Monitor/kmdb_base`](https://huggingface.co/datasets/K-Monitor/kmdb_base): | |
| spaCy (`hu_core_news_lg`) supplies the entity spans, and an entity is labelled | |
| `POS` when it matches one of the names an editor tagged on that article. | |
| ## Results | |
| Entity-level seqeval scores on 4,161 held-out articles. The honest comparison | |
| against the previous `boapps/kmdb_ner_model` is the second column: that | |
| checkpoint was trained with an unseeded split, so most of the general test set | |
| was in its training data, whereas these articles were added to the database | |
| after it was published. | |
| | model | test F1 | F1 on articles the old model never saw | | |
| | --- | --- | --- | | |
| | `boapps/kmdb_ner_model` | 0.8244\* | 0.6684 | | |
| | **`kmdb_ner_v5`** | 0.8171 | **0.7299** | | |
| \* inflated by train/test leakage in the earlier checkpoint. | |
| Per class, on those unseen articles: | |
| | label | precision | recall | F1 | previous F1 | | |
| | --- | --- | --- | --- | --- | | |
| | NEG_LOC | 0.7817 | 0.7075 | 0.7427 | 0.7208 | | |
| | NEG_ORG | 0.7530 | 0.7587 | 0.7558 | 0.7176 | | |
| | NEG_PER | 0.7298 | 0.6752 | 0.7014 | 0.6505 | | |
| | POS_LOC | 0.6219 | 0.7128 | 0.6642 | 0.5729 | | |
| | POS_ORG | 0.6469 | 0.7130 | 0.6784 | 0.5270 | | |
| | POS_PER | 0.6971 | 0.8029 | 0.7463 | 0.6484 | | |
| | **micro avg** | 0.7242 | 0.7356 | **0.7299** | 0.6684 | | |
| The largest gain is on `POS_ORG` (0.5270 → 0.6784): the previous training data | |
| matched gold names by exact substring, so tagged organisations whose database | |
| name carries a suffix — `Hunguest Hotels Zrt.`, `Honvédelmi Minisztérium (HM)` — | |
| were labelled `NEG` and the model learned to ignore them. | |
| ## Usage | |
| ```python | |
| from transformers import AutoTokenizer, pipeline | |
| classifier = pipeline( | |
| "ner", | |
| model="K-Monitor/kmdb_ner_v5", | |
| aggregation_strategy="first", | |
| stride=8, | |
| tokenizer=AutoTokenizer.from_pretrained( | |
| "SZTAKI-HLT/hubert-base-cc", model_max_length=512 | |
| ), | |
| ) | |
| classifier(article_text) | |
| ``` | |
| Adjacent fragments of one entity have to be merged afterwards (huBERT splits | |
| detached Hungarian suffixes, e.g. `Budapest` + `-en`); when merging, keep the | |
| entity type and treat the result as `POS` if either fragment is `POS`. The | |
| reference implementation is `join_entities` in | |
| [`sajtoadatbazis-automat`](https://github.com/k-monitor/sajtoadatbazis-automat) | |
| (`webapp/auto_kmdb/processors/NERProcessor.py`). | |
| ## Limitations | |
| The `POS`/`NEG` supervision is derived automatically by matching spaCy entities | |
| against editor-tagged names, so it inherits spaCy's boundary errors and the | |
| matching heuristic's mistakes; it is not hand-annotated. Scores on articles | |
| from after the training window (~0.73 F1) are well below in-distribution scores | |
| (~0.82), so expect the real-world quality to track the former. | |