Entity Extraction Model - Fine-tuned SmolLM-360M

This model is a fine-tuned version of HuggingFaceTB/SmolLM-360M for extracting structured entities from natural language calendar event descriptions.

Model Description

  • Base Model: HuggingFaceTB/SmolLM-360M
  • Task: Entity Extraction for Calendar Events
  • Language: English
  • License: Apache 2.0

Intended Use

This model extracts structured entities from natural language text describing calendar events. It outputs JSON with the following fields:

  • action: Type of event (e.g., "meeting", "lunch")
  • date: Date in DD/MM/YYYY format
  • time: Time in HH:MM AM/PM format
  • attendees: Array of attendee names (or null)
  • location: Event location (or null)
  • duration: Duration description (or null)
  • recurrence: Recurrence pattern (or null)
  • notes: Additional notes (or null)

Usage

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

# Load model and tokenizer
model_name = "Shresth12345/entity-extraction-smollm"
model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)

# Example usage
text = "Meeting with John tomorrow at 2pm for 1 hour at the office"
prompt = f"Extract entities from: {text}"

# Tokenize and generate
inputs = tokenizer(prompt, return_tensors="pt", truncation=True, max_length=512)
with torch.no_grad():
    outputs = model.generate(
        **inputs,
        max_new_tokens=150,
        temperature=0.1,
        do_sample=True,
        pad_token_id=tokenizer.eos_token_id
    )

# Decode response
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
generated_text = response[len(prompt):].strip()
print(generated_text)

Expected Output Format

{
  "action": "Meeting",
  "date": "tomorrow", 
  "time": "2:00 PM",
  "attendees": ["John"],
  "location": "office",
  "duration": "1 hour",
  "recurrence": null,
  "notes": null
}

Training Details

  • Training Data: 793 calendar event samples
  • Training Split: 70% train, 15% validation, 15% test
  • Custom Loss Function: Entity-aware loss with weighted output portion
  • Training Framework: PyTorch (custom trainer)
  • Evaluation Metrics: Exact match accuracy, field-wise accuracy, JSON quality

Model Performance

The model demonstrates strong performance in:

  • Accurate entity extraction from natural language
  • Consistent JSON output format
  • Handling of missing/null values
  • Recognition of temporal expressions
  • Identification of people and locations

Limitations

  • Primarily trained on English calendar events
  • May struggle with very complex or ambiguous temporal expressions
  • Performance may vary with domain-specific terminology
  • Requires specific input format: "Extract entities from: [text]"

Training Procedure

This model was fine-tuned using:

  1. Custom PyTorch trainer implementation
  2. Entity-weighted loss function (weight: 2.0)
  3. Cosine annealing learning rate schedule
  4. Gradient accumulation for effective larger batch sizes
  5. Early stopping based on validation performance

Citation

If you use this model, please cite:

@misc{entity-extraction-smollm,
  title={Entity Extraction Fine-tuned SmolLM-360M},
  author={Shresth Mishra},
  year={2025},
  howpublished={\url{https://huggingface.co/Shresth12345/entity-extraction-smollm}}
}

Contact

For questions about this model, please open an issue in the repository or contact the author.

Downloads last month
14
Safetensors
Model size
0.4B params
Tensor type
F32
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for Shresth12345/entity-extraction-smollm

Finetuned
(44)
this model