sentiment-analyzer / README.md
indrajeet77's picture
Update README.md
1096b8d verified
---
base_model: google/gemma-2b
library_name: peft
pipeline_tag: text-generation
tags:
- base_model:adapter:google/gemma-2b
- lora
- transformers
- sentiment-analysis
- gemma
---
# Model Card for sentiment-analyzer
This model is a Fine-tuned LoRA (Low-Rank Adaptation) adapter for **Google's Gemma-2b**, specifically designed for **Sentiment Analysis**.
## Model Details
### Model Description
This is a PEFT (Parameter-Efficient Fine-Tuning) adapter capable of analyzing text sentiment. It was trained using the LoRA method on top of the `google/gemma-2b` base model. It is designed to be lightweight and efficient while retaining the capabilities of the base model.
- **Developed by:** Indrajeet Pimpalgaonkar (indrajeet77)
- **Model type:** LoRA Adapter for Causal Language Modeling
- **Language(s) (NLP):** English
- **License:** Apache-2.0 (Inherited from Gemma)
- **Finetuned from model:** [google/gemma-2b](https://huggingface.co/google/gemma-2b)
### Model Sources
- **Repository:** [https://huggingface.co/indrajeet77/sentiment-analyzer](https://huggingface.co/indrajeet77/sentiment-analyzer)
## Uses
### Direct Use
The model is intended for analyzing the sentiment of input text (e.g., classifying text as Positive, Negative, or Neutral) or generating sentiment-aware responses.
## How to Get Started with the Model
You can load this model using the `peft` and `transformers` libraries. Since this is a LoRA adapter, you must load the base model first.
```python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
# 1. Load Model & Adapter
base_model = "google/gemma-2b"
adapter_repo = "indrajeet77/sentiment-analyzer"
tokenizer = AutoTokenizer.from_pretrained(base_model)
model = AutoModelForCausalLM.from_pretrained(
base_model,
device_map="auto",
torch_dtype=torch.float16
)
model = PeftModel.from_pretrained(model, adapter_repo)
# 2. Inference Function
def get_sentiment(text):
# We use "Few-Shot Prompting" to force the model to give a one-word answer
prompt = f"""Classify the sentiment as positive, negative, or neutral.
Text: The movie was terrible and boring.
Sentiment: negative
Text: I am so happy with this result!
Sentiment: positive
Text: {text}
Sentiment:"""
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=2,
do_sample=False,
pad_token_id=tokenizer.eos_token_id
)
# Decode and clean the output
response = tokenizer.decode(outputs[0][inputs.input_ids.shape[1]:], skip_special_tokens=True)
return response.strip().lower()
# 3. Run It
print("Model Loaded. Testing...")
text = "The product quality is amazing"
print(f"Text: {text}")
print(f"Prediction: {get_sentiment(text)}")