Downloads · 30 days
196
15% of all-time downloads
ipsnan/keywordsextraction
keywordsextraction is a sentence similarity model from ipsnan. Use it when you need a score for how close two texts are. It is set up for sentence-transformers. The card lists the license as mit.
This repository contains a sentence-transformers bi-encoder fine-tuned for extracting keywords from Ukrainian scientific and business documents.
Downloads · 30 days
196
15% of all-time downloads
All-time downloads
1.3K
Public
Parameters
278M
1.6 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors1.1 GB · 88%
From the Hugging Face model README
This repository contains a sentence-transformers bi-encoder fine-tuned for extracting keywords from Ukrainian scientific and business documents.
Unlike a generative LLM, this model does not write keywords — it retrieves them. The document is encoded into the same vector space as a pre-built index of candidate keywords, and the closest keywords by cosine similarity are returned. This makes the model much smaller and faster than a generative LoRA-tuned LLM, while reaching very high retrieval accuracy on the evaluation set (see Evaluation).
ℹ️ This replaces the previous generative approach (LoRA adapter on
meta-llama/Llama-3.1-8B-Instruct) with a dedicated retrieval model.
intfloat/multilingual-e5-baseMultipleNegativesRankingLossSentenceTransformer(
(0): Transformer({'max_seq_length': 512, 'do_lower_case': False, 'architecture': 'XLMRobertaModel'})
(1): Pooling({'word_embedding_dimension': 768, 'pooling_mode_mean_tokens': True})
(2): Normalize()
)
(document, keyword) samples built from a corpus of Ukrainian scientific/business documents (see dataset_full.jsonl used at training time — not included in this repo, only the resulting keyword index is).query: passage: MultipleNegativesRankingLoss (in-batch negatives, scale=20.0)| Epoch | Step | Training Loss | cosine_ndcg@10 |
|---|---|---|---|
| 1.0 | 410 | – | 0.9085 |
| 2.0 | 820 | – | 0.9157 |
| 3.0 | 1230 | – | 0.9184 |
Evaluated with InformationRetrievalEvaluator on held-out (document, keyword) pairs:
| Metric | Value |
|---|---|
| cosine_accuracy@1 | 0.965 |
| cosine_accuracy@5 | 0.995 |
| cosine_accuracy@10 | 0.995 |
| cosine_precision@5 | 0.7835 |
| cosine_precision@10 | 0.464 |
| cosine_recall@5 | 0.8075 |
| cosine_recall@10 | 0.9143 |
| cosine_ndcg@10 | 0.9184 |
| cosine_mrr@10 | 0.9773 |
| cosine_map@10 | 0.8754 |
pip install -U sentence-transformers
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("ipsnan/keywordsextraction")
sentences = [
"query: Штучний інтелект активно використовується у промисловості для автоматизації процесів...",
"passage: штучний інтелект",
"passage: автоматизація процесів",
]
embeddings = model.encode(sentences)
print(embeddings.shape) # [3, 768]
similarities = model.similarity(embeddings, embeddings)
print(similarities)
This repository also ships keyword_index.pkl — embeddings of every unique keyword seen during training — and infer_keywords.py, the retrieval script used to go from a raw PDF document straight to a ranked keyword list.
pip install -U sentence-transformers pymupdf numpy
python infer_keywords.py /path/to/file.pdf
python infer_keywords.py /path/to/file.pdf --top-k 10 --threshold 0.5
Under the hood the script:
1fullsourcedata.py).query: .keyword_index.pkl by cosine similarity.--threshold.To rebuild the keyword index from scratch you need the original dataset_full.jsonl training corpus and can run python infer_keywords.py <pdf> --rebuild-index.
Keyword extraction (Ukrainian NLP), optimized for:
keyword_index.pkl (it is a retrieval model, not a generative one) — rebuild the index on your own keyword set to extend coverage.model.safetensors, config.json, config_sentence_transformers.json, modules.json, sentence_bert_config.json, tokenizer.json, tokenizer_config.json, 1_Pooling/, 2_Normalize/ — the Sentence Transformers modelkeyword_index.pkl — pre-computed keyword embeddings used for retrievalinfer_keywords.py — end-to-end PDF → keywords inference script1fullsourcedata.py — PDF text extraction/cleaning helper used by infer_keywords.pyintfloat/multilingual-e5-base license (MIT)Download them in the Files & versions tab.