FinBERT is a pre-trained NLP model to analyze sentiment of financial text. It is built by further training the BERT language model in the finance domain, using a large financial corpus and thereby fine-tuning it for financial sentiment classification. Financial PhraseBank by Malo et al. (2014) is used for fine-tuning. For more details, please see the paper FinBERT: Financial Sentiment Analysis with Pre-trained Language Models and our related blog post on Medium. The model will give softmax outputs for three labels: positive, negative or neutral. About Prosus Prosus is a global consumer internet group and one of the largest technology investors in the world. Operating and investing globally…
Open-weight model · Text classification
OpenThai-SystemOne-Ollama
by iApp Technology iapp/OpenThai-SystemOne-Ollama
OpenThai-SystemOne-Ollama is an open-weight model for text classification from iApp Technology, released under Apache License 2.0. Its published files total 2.9 GB.
OpenThai-SystemOne is an open Thai + English System One decision model (0.8B, Apache-2.0).
Model Card
By iApp Technology, published under apache-2.0, revision 4c9b06aab79d.
OpenThai-SystemOne is an open Thai + English System One decision model (0.8B, Apache-2.0). It does not generate text: given a state (text or JSON) and typed questions it returns probabilities: choice between named options, noul (yes/no) and score on an ordered scale. This repo is its Ollama build for Ollama's System One API (POST /v1/systemone, Ollama ≥ 0.35), the same API Ollama serves Nimble and Tev1 with. Everything runs on your machine; no API key. The curl example below uses the hf.co name; with the ollama.com pull, use "model": "iapp/openthai-systemone". (Probabilities rounded. The whole request is part of every question's prompt, so the same question can score slightly differently…
Read iApp Technology's full model card
OpenThai-SystemOne v0.3 for Ollama
OpenThai-SystemOne is an open Thai + English System One decision
model (0.8B, Apache-2.0). It does not generate text: given a state (text or JSON) and typed questions it returns
probabilities: choice between named options, noul (yes/no) and score on an ordered scale.
This repo is its Ollama build for Ollama's System One API (POST /v1/systemone, Ollama ≥ 0.35), the same API
Ollama serves Nimble and Tev1 with. Everything runs on your machine; no API key.
ollama pull iapp/openthai-systemone # ollama.com: 0.8b (= 0.8b-q8_0), 0.8b-q4_K_M, 0.8b-bf16
ollama pull hf.co/iapp/OpenThai-SystemOne-Ollama:Q8_0 # the same files from this repo
The curl example below uses the hf.co name; with the ollama.com pull, use "model": "iapp/openthai-systemone".
curl http://localhost:11434/v1/systemone -d '{
"model": "hf.co/iapp/OpenThai-SystemOne-Ollama:Q8_0",
"state": {"ticket": "ลูกค้าแจ้งว่าโดนหักเงินซ้ำสองครั้ง ขอเงินคืนด่วน โทรมาสามรอบแล้ว"},
"questions": {
"department": {"type": "choice", "instructions": "ทีมใดควรรับผิดชอบ",
"criteria": {"billing": "การเงิน/ค่าบริการ", "technical": "ระบบใช้งานไม่ได้", "sales": null}},
"frustration": {"type": "score", "instructions": "ลูกค้าหงุดหงิดแค่ไหน",
"criteria": ["ใจเย็น", "หงุดหงิดแต่สุภาพ", "โกรธมาก"]},
"refund_requested": {"type": "noul", "instructions": "ลูกค้าขอเงินคืนอย่างชัดเจนหรือไม่"}
}
}'
{"model": "hf.co/iapp/OpenThai-SystemOne-Ollama:Q8_0",
"answers": {
"department": {"type": "choice", "choice": "billing", "probabilities": {"billing": 0.9515, "technical": 0.0334, "sales": 0.0151}, "confidence": 0.7959},
"frustration": {"type": "score", "score": 1.8771, "legend": {"0": "ใจเย็น", "1": "หงุดหงิดแต่สุภาพ", "2": "โกรธมาก"},
"probabilities": {"0": 0.0216, "1": 0.0797, "2": 0.8987}, "confidence": 0.6537},
"refund_requested": {"type": "noul", "noul": 0.9805}},
"usage": {"input_tokens": 741, "output_tokens": 4}}
(Probabilities rounded. The whole request is part of every question's prompt, so the same question can score slightly differently next to other questions.)
How this build differs from the main repo
Ollama does not run OpenThai-SystemOne's 256-slot decision head. For each question it renders one chat prompt (the whole
request as JSON plus Requested field: "<name>", with the model's Qwen3.5 chat template and thinking off) and reads the
next-token probabilities of the answer letters A–Z. The weights here are therefore v0.3 fine-tuned for that
prompt:
- 3,000 steps (192k questions) on the v0.3 training mix, rendered exactly as Ollama 0.35 renders them (a byte-exact port
of Ollama's
decision/systemone.go, checked against Go) and tokenized by llama.cpp, as Ollama's runner does. - Loss = cross-entropy over the question's candidate letters only, which is the softmax Ollama computes.
- One temperature, fitted on held-out records, is folded into the final norm (Ollama always scores at temperature 1).
- The GGUF files are a plain Qwen3.5 (
qwen35) text model with tied embeddings; the Modelfile /systemfile sets the system prompt the model was trained with andnum_ctx 8192.
Compared with the main repo's own API (pip install openthai-systemone): Ollama allows 2–26 options per question
(the main API: 255), runs one prompt per question (the shared prefix is cached), and has no order-invariant mode and no
abstain answer.
Evaluation (through Ollama 0.35)
All columns were run by us through Ollama's /v1/systemone on the same records: the first 800 of each set, keeping only
records whose questions have ≤ 26 options (Ollama's limit; drops banking77 and the 60-way MASSIVE-th intents). The first
column is the original v0.3 weights with their 256-slot head on the same records, for reference. choice / noul =
accuracy, score = exact level. Harness: scripts/25_competitor_eval.py --model ollama:<name> --max-options 26 in the
GitHub repo.
Public 13 subsets (Bespoke Nimble's public benchmark)
| set (type, n) | v0.3, main repo's API | this repo, Q8_0 | this repo, Q4_K_M | Tev1 0.8B | Tev1 4B | Nimble 9B |
|---|---|---|---|---|---|---|
| aegis2 (noul, n=250) | 83.2 | 82.0 | 81.2 | 60.8 | 80.8 | 83.2 |
| boolq (noul, n=300) | 79.7 | 79.7 | 81.0 | 77.7 | 85.3 | 86.3 |
| civil_comments (noul, n=300) | 79.0 | 76.0 | 77.3 | 76.7 | 73.3 | 78.0 |
| helpsteer2 (score, n=250) | 41.6 | 39.2 | 40.0 | 33.2 (1 err) | 36.8 (1 err) | 33.6 |
| massive-de-DE (choice, n=350) | 88.6 | 88.0 | 87.4 | 69.7 | 83.1 | 83.1 |
| massive-en-US (choice, n=350) | 89.1 | 88.9 | 88.6 | 78.9 | 85.4 | 84.0 |
| multinli (choice, n=299) | 88.6 | 86.0 | 84.3 | 75.6 | 92.0 | 90.0 |
| paws (noul, n=250) | 94.0 | 92.8 | 92.8 | 65.2 | 82.4 | 74.0 |
| pubmedqa (choice, n=250) | 64.0 | 65.6 | 65.6 | 61.2 | 74.4 | 77.2 |
| squad2 (noul, n=299) | 89.3 | 89.0 | 86.3 | 70.9 | 76.3 | 74.2 |
| summeval-consistency (score, n=144) | 75.0 | 76.4 | 74.3 | 84.0 | 79.9 | 81.9 |
| summeval-relevance (score, n=240) | 21.7 | 28.7 | 27.9 | 13.8 | 50.0 | 48.3 |
| vitaminc-dev (choice, n=599) | 72.5 | 74.1 | 75.0 | 68.8 | 74.3 | 79.0 |
| macro | 74.3 | 74.3 | 74.0 | 64.3 | 74.9 | 74.8 |
Thai sets (8 sets, 12 rows; wisesight and SIB-200 held out of training)
| set (type, n) | v0.3, main repo's API | this repo, Q8_0 | this repo, Q4_K_M | Tev1 0.8B | Tev1 4B | Nimble 9B |
|---|---|---|---|---|---|---|
| contrastive_th (choice, n=296) | 80.7 | 83.8 | 82.4 | 75.7 | 92.2 | 93.2 |
| contrastive_th (noul, n=248) | 83.5 | 84.7 | 84.3 | 79.0 | 94.8 | 97.2 |
| contrastive_th (score, n=56) | 78.6 | 78.6 | 75.0 | 60.7 | 91.1 | 83.9 |
| massive_th (choice, n=588) | 94.6 | 92.7 | 92.3 | 71.6 | 88.8 | 90.8 |
| prachathai (choice, n=413) | 98.5 | 97.8 | 97.6 | 56.7 | 61.7 | 61.5 |
| prachathai (noul, n=1568) | 93.4 | 95.2 | 95.0 | 68.8 | 74.2 | 66.3 |
| sib200_th (choice, n=204) | 77.9 | 78.9 | 76.5 | 83.3 | 86.3 | 88.7 |
| wisesight (choice, n=800) | 49.0 | 49.9 | 49.8 | 40.8 | 48.0 | 48.5 |
| wongnai (score, n=800) | 64.5 | 64.0 | 62.3 | 38.5 | 56.1 | 52.1 |
| xlam_tools (choice, n=800) | 99.4 | 99.4 | 99.4 | 90.1 | 97.1 | 97.2 |
| xnli_th (choice, n=800) | 79.8 | 79.2 | 78.5 | 66.9 | 76.5 | 76.0 |
| xnli_th (noul, n=800) | 86.8 | 85.9 | 85.6 | 20.9 | 38.4 | 84.0 |
| macro | 82.2 | 82.5 | 81.6 | 62.7 | 75.4 | 78.3 |
Latency (median end to end through Ollama, one model loaded, idle H100, Thai requests): 1 question 23 ms (Q8_0), 23 ms (Q4_K_M), 26 ms (BF16); 3 questions 136 / 127 / 142 ms. Same setup: Tev1 0.8B 22 / 102 ms, Tev1 4B 66 / 406 ms, Nimble 9B 69 / 392 ms. Ollama runs one prompt per question, reusing the shared prefix.
BF16 scores the same as Q8_0 (public 74.3, Thai 82.5).
Files
| file | size | public / Thai macro through Ollama |
|---|---|---|
OpenThai-SystemOne-v0.3-Ollama-Q8_0.gguf |
812 MB | 74.3 / 82.5 (recommended) |
OpenThai-SystemOne-v0.3-Ollama-Q4_K_M.gguf |
529 MB | 74.0 / 81.6 |
OpenThai-SystemOne-v0.3-Ollama-BF16.gguf |
1517 MB | 74.3 / 82.5 |
Modelfile, Modelfile.Q4_K_M, Modelfile.BF16 |
– | for ollama create from a local file |
system, params |
– | system prompt and num_ctx 8192, applied by ollama pull hf.co/... |
Modelfile builds the same model from a local file (ollama create openthai-systemone -f Modelfile); system and
params are what ollama pull hf.co/... applies.
Limits
- Up to 26 options per question (Ollama). For more options, bucket them, or use the main repo's API (255 options).
- Not a chat model:
ollama runwill produce text, but the model was only trained to answer/v1/systemoneprompts. - A small model: use
confidenceand route low-confidence decisions to a bigger model or a person.
License
Apache-2.0. Built by iApp Technology / OpenThai on Qwen3.5-0.8B-Base (Apache-2.0). Not affiliated with TypeSafe AI, Bespoke Labs or Together AI.
Identity and Version
- Repository
- iapp/OpenThai-SystemOne-Ollama
- Publisher
- iApp Technology
- Task
- Text classification
- Modality
- Text
- Library
- gguf
- Parameters
- Not stated by the source
- Languages
- th, en
- Revision
- 4c9b06aab79da2cf96368f0a214cbe26496659f5
- First published
- 2026-10-01
- Last updated
- 2026-10-01
Files and Weights
11 files, 2.9 GB in total. The weights are 3 files totalling 2.9 GB in gguf.
Every file
| File | Type | Size | SHA-256 |
|---|---|---|---|
| OpenThai-SystemOne-v0.3-Ollama-BF16.gguf | Weights | 1.5 GB | be282177fddc |
| OpenThai-SystemOne-v0.3-Ollama-Q4_K_M.gguf | Weights | 529.3 MB | cfc641d1f13a |
| OpenThai-SystemOne-v0.3-Ollama-Q8_0.gguf | Weights | 811.9 MB | 24ccacfa6632 |
| LICENSE | Documentation | 11.4 KB | — |
| README.md | Documentation | 9.0 KB | — |
| Modelfile | Other | 11.8 KB | — |
| Modelfile.BF16 | Other | 11.8 KB | — |
| Modelfile.Q4_K_M | Other | 11.8 KB | — |
| params | Other | 18 B | — |
| system | Other | 155 B | — |
| .gitattributes | Repository | 1.8 KB | — |
License and Download
- License
- apache-2.0
- Access
- Open weights, no gate
- Download size
- 2.9 GB
Released by iApp Technology through its official repository on Hugging Face. Read the license.
Built From
- Derived from iapp/OpenThai-SystemOne
Memory Requirements
| Precision | Weights in memory |
|---|---|
| As published | 2.9 GB |
Weights only, from the published parameter count; the key-value cache and runtime add to this.
Questions About OpenThai-SystemOne-Ollama
Can I use OpenThai-SystemOne-Ollama commercially?
Yes. OpenThai-SystemOne-Ollama is released under Apache License 2.0. The Apache License 2.0 is a permissive open-source license. It permits commercial use, modification and redistribution. It requires keeping the license and copyright notices and any NOTICE file, stating significant changes, and it includes an express patent grant from contributors.
Similar Models
This is a RoBERTa-base model trained on ~124M tweets from January 2018 to December 2021, and finetuned for sentiment analysis with the TweetEval benchmark. The original Twitter-based RoBERTa model can be found here and the original reference paper is TweetEval. This model is suitable for English. 0 -> Negative; 1 -> Neutral; 2 -> Positive This sentiment analysis model has been integrated into TweetNLP. You can access the demo here.
FinBERT is a BERT model pre-trained on financial communication text. The purpose is to enhance financial NLP research and practice. It is trained on the following three financial communication corpus. The total corpora size is 4.9B tokens. More technical details on FinBERT: Click Link This released finbert-tone model is the FinBERT model fine-tuned on 10,000 manually annotated (positive, negative, neutral) sentences from analyst reports. This model achieves superior performance on financial tone analysis task. If you are simply interested in using FinBERT for financial tone analysis, give it a try. If you use the model in your academic work, please cite the following paper: Huang, Allen H.…
https://huggingface.co/cross-encoder/ms-marco-MiniLM-L-6-v2 with ONNX weights to be compatible with Transformers.js. If you haven't already, you can install the Transformers.js JavaScript library from NPM using: Note: Having a separate repo for ONNX weights is intended to be a temporary solution until WebML gains more traction. If you would like to make your models web-ready, we recommend converting to ONNX using Optimum and structuring your repo like this one (with ONNX weights located in a subfolder named onnx).
This is a multilingual XLM-roBERTa-base model trained on ~198M tweets and finetuned for sentiment analysis. The sentiment fine-tuning was done on 8 languages (Ar, En, Fr, De, Hi, It, Sp, Pt) but it can be used for more languages (see paper for details). This model has been integrated into the TweetNLP library.
With this model, you can classify emotions in English text data. The model was trained on 6 diverse datasets (see Appendix below) and predicts Ekman's 6 basic emotions, plus a neutral class: 1) anger 2) disgust 3) fear 4) joy 5) neutral 6) sadness 7) surprise The model is a fine-tuned checkpoint of DistilRoBERTa-base. For a 'non-distilled' emotion model, please refer to the model card of the RoBERTa-large version. a) Run emotion model with 3 lines of code on single text example using Hugging Face's pipeline command on Google Colab: b) Run emotion model on multiple examples and full datasets (e.g.,.csv files) on Google Colab: Please reach out to [email protected] if you have any…
