YAML Metadata Warning: empty or missing yaml metadata in repo card (https://huggingface.co/docs/hub/model-cards#model-card-metadata)

Design Pattern Detection Model

This model detects software design patterns in Java source code using CodeBERT. The model has been fine-tuned for single-label classification tasks and supports the following design pattern labels:

Supported Labels

Label ID Design Pattern
0 Observer
1 Decorator
2 Adapter
3 Proxy
4 Singleton
5 Facade
6 AbstractFactory
7 Memento
8 FactoryMethod
9 Prototype
10 Visitor
11 Builder
12 Unknown

How to Use

from transformers import AutoTokenizer, AutoModelForSequenceClassification

# Load the model and tokenizer
tokenizer = AutoTokenizer.from_pretrained("ichsanbudiman/design-pattern-detection-codebert")
model = AutoModelForSequenceClassification.from_pretrained("ichsanbudiman/design-pattern-detection-codebert")

# Example input
input_code = """
public class Singleton {
    private static Singleton instance;

    private Singleton() {}

    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}
"""

# Tokenize the input
inputs = tokenizer(input_code, return_tensors="pt", padding="max_length", truncation=True, max_length=512)

# Make predictions
with torch.no_grad():
    outputs = model(**inputs)

# Get the predicted class and label
predicted_class = torch.argmax(outputs.logits, dim=1).item()
predicted_label = model.config.id2label[predicted_class]

print(f"Predicted label: {predicted_label}")

Input Requirements

  • Input Format: Java code snippets as strings.
  • Max Length: Input code longer than 512 tokens will be truncated.
  • Padding: Automatically pads to 512 tokens for batch processing.

Task

This model performs single-label classification for the detection of design patterns in Java source code. The supported design patterns are listed above.

Fine-Tuning Details

  • Base Model: CodeBERT

  • Dataset: Fine-tuned on a curated dataset of labeled Java code examples. The dataset was sourced from the following research article:

    Najam Nazar, Aldeida Aleti, Yaokun Zheng, Feature-based software design pattern detection, Journal of Systems and Software, Volume 185, 2022, 111179, ISSN 0164-1212, https://doi.org/10.1016/j.jss.2021.111179.

  • Metrics: The model achieves high accuracy on detecting design patterns, making it suitable for software engineering tasks.

Contact

For inquiries or feedback, please reach out to Ichsan Budiman.

License

This model is licensed under the Apache 2.0 License.

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