Views
No views yet
Qwen/Qwen3-4B-Instruct-2507 for 4-class multi-label
maritime chartering email classification.vessel — Owner offers ship position (Open Tonnage)cargo — Charterer seeks ship for cargo (Cargo Inquiry)tct — Time Charter Trip (single voyage with daily hire rate)other — S&P, market reports, ops, admin["cargo", "tct"]).| Metric | Value |
|---|---|
| Macro F1 | 0.7639 |
| Set accuracy | 0.7608 |
| Class | Precision | Recall | F1 |
|---|---|---|---|
| vessel | 0.887 | 0.683 | 0.772 |
| cargo | 0.984 | 0.775 | 0.867 |
| tct | 0.714 | 0.625 | 0.667 |
| other | 0.621 | 0.947 | 0.750 |
Qwen/Qwen3-4B-Instruct-2507b817d2b49800abae1from unsloth import FastLanguageModel
2
3model, tokenizer = FastLanguageModel.from_pretrained(
4 model_name="ihlee1/navio-flow-v1.0",
5 max_seq_length=2048,
6 load_in_4bit=True,
7)
8FastLanguageModel.for_inference(model)
9
10# Use the system prompt from the snapshot
11system_prompt = open("_system_prompt.txt").read() # 580-token dense ruleset
12
13messages = [
14 {"role": "system", "content": system_prompt},
15 {"role": "user", "content": "Subject: ...\n\nDELY Busan, REDELY Spore..."},
16]
17prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
18inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
19out = model.generate(**inputs, max_new_tokens=40)
20print(tokenizer.decode(out[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))
21# Expected output: {"labels": ["vessel"]}tct minority class (test n=19) — F1 0.67