--- language: - sr license: apache-2.0 tags: - sentence-transformers - feature-extraction - sentence-similarity - emotion-detection - serbian base_model: jerteh/Jerteh-355 library_name: sentence-transformers pipeline_tag: feature-extraction datasets: - te-sla/emocije --- # EMO355 (Jerteh-355 Emotion & Evocation Embeddings)

Model za Detekciju i Vektorizaciju Emocija na Srpskom Jeziku

355 Miliona Parametara zasnovan na jerteh/Jerteh-355 model.

Fine-tunovan za regresiju 16 dimenzionalnog prostora emocija (8 ispoljenih emocija i 8 evociranih emocija).

Obučen na preko 30.000 anotiranih primera iz Reddit i Twitter korpusa na srpskom jeziku.

Integrisan kao nativni SentenceTransformer pipeline za jednostavnu inferenciju bez dodatnih klase definicija.

Serbian Emotion and Evocation Vector Embedding Model

355 Million Parameters fine-tuned on top of the jerteh/Jerteh-355 base.

Designed for 16-dimensional emotion vector regression (8 base emotions & 8 evocation emotions).

Trained on over 30,000 annotated samples from Serbian Reddit and Twitter datasets.

Exported directly as a native SentenceTransformer module for instant inference.

Dimenzija / Dimension Bazne Emocije / Base Emotions Evocirane Emocije / Evocation Emotions
0 - 7 Anger, Anticipation, Disgust, Fear, Joy, Sadness, Surprise, Trust -
8 - 15 - Anger, Anticipation, Disgust, Fear, Joy, Sadness, Surprise, Trust
## Usage / Upotreba Model se u potpunosti učitava i koristi preko `sentence_transformers` biblioteke: ```python from sentence_transformers import SentenceTransformer model = SentenceTransformer("procesaur/Emo355") test_sentences = [ "Nisam siguran šta će se desiti sutra, ali se nadam najboljem." "Ovo je nedopustivo! Kakav užasan uspeh i sramota za celu zemlju.", ] # Get 16-dimensional emotion vector predictions directly predictions = model.encode(test_sentences) LABELS = [ # 8 Base "anger", "anticipation", "disgust", "fear", "joy", "sadness", "surprise", "trust", # 8 Evocation "evoc_anger", "evoc_anticipation", "evoc_disgust", "evoc_fear", "evoc_joy", "evoc_sadness", "evoc_surprise", "evoc_trust" ] for text, pred in zip(test_sentences, predictions): print(f"\nText: {text}") scores = dict(zip(LABELS, pred.tolist())) for k, v in scores.items(): print(f" {k:<20}: {v:.4f}") ``` ``` Text: Nisam siguran šta će se desiti sutra, ali se nadam najboljem. anger : 0.0026 anticipation : 0.4779 disgust : 0.0189 fear : 0.0056 joy : 0.2393 sadness : 0.1392 surprise : 0.1545 trust : 0.0844 evoc_anger : 0.2122 evoc_anticipation : 0.2360 evoc_disgust : -0.0765 evoc_fear : 0.0729 evoc_joy : 0.3163 evoc_sadness : 0.1806 evoc_surprise : 0.1333 evoc_trust : 0.0023 Text: Ovo je nedopustivo! Kakav užasan uspeh i sramota za celu zemlju. anger : 0.5147 anticipation : 0.0130 disgust : 0.1701 fear : 0.0393 joy : 0.0718 sadness : 0.0931 surprise : 0.1342 trust : 0.0176 evoc_anger : 0.4144 evoc_anticipation : 0.0837 evoc_disgust : -0.0117 evoc_fear : 0.0504 evoc_joy : 0.0973 evoc_sadness : 0.1900 evoc_surprise : 0.1695 evoc_trust : 0.0149 ``` ```python import matplotlib.pyplot as plt import numpy as np import base64 from io import BytesIO def plot_radar_chart(embedding, labels, color="blue", title=""): plt.rcParams["font.family"] = "Times New Roman" num_vars = len(embedding) angles = np.linspace(0, 2 * np.pi, num_vars, endpoint=False).tolist() angles += angles[:1] # Complete the loop fig, ax = plt.subplots(figsize=(5, 5), subplot_kw=dict(polar=True)) ax.set_title(title, fontdict={"fontsize": 20, "fontweight": "bold"}, loc="left") ax.set_theta_offset(np.pi / 2) ax.set_theta_direction(-1) ax.set_xticks(angles[:-1]) plt.xticks(angles[:-1], labels, size=20) plt.yticks([0.1, 0.5, 1, 2], ["0.1", "0.5", "1", "2"], color="grey", size=10) plt.ylim(0, 1) embedding.append(embedding[0]) embedding = [0 if x<0 else x for x in embedding] ax.plot(angles, embedding, linewidth=2, linestyle='solid') ax.fill(angles, embedding, color=color, alpha=0.25) plt.legend(loc='upper right', bbox_to_anchor=(0.1, 0.1)) buffer = BytesIO() fig.savefig(buffer, format="png") buffer.seek(0) img_base64 = base64.b64encode(buffer.read()).decode("utf-8") return f'' scores = list(predictions[1].squeeze()) print(plot_radar_chart(scores[0:8], LABELS[0:8], "blue", "emotion") + plot_radar_chart(scores[8:16], LABELS[8:16], "green", "evocation")) ```
Author
Mihailo Škorić
@procesaur
Data
TESLA project
@te-sla
Funding
Fond za Nauku
@fondzanauku_rs
## Cit. ```bibtex @inproceedings{vskoric2025embedding, title={Embedding Text in Emotion and Evocation Vector Spaces}, author={{\v{S}}kori{\'c}, Mihailo and Stankovi{\'c}, Ranka}, booktitle={ReLDI 2025 Synergies}, pages={63-67}, year={2025} } ```

Истраживање jе спроведено уз подршку Фонда за науку Републике Србиjе, #7276, Text Embeddings – Serbian Language Applications – TESLA

This research was supported by the Science Fund of the Republic of Serbia, #7276, Text Embeddings - Serbian Language Applications - TESLA