Text Classification
Transformers
PyTorch
Safetensors
English
distilbert
sentiment-analysis
text-embeddings-inference
Instructions to use juliensimon/reviews-sentiment-analysis with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use juliensimon/reviews-sentiment-analysis with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-classification", model="juliensimon/reviews-sentiment-analysis")# Load model directly from transformers import AutoTokenizer, AutoModelForSequenceClassification tokenizer = AutoTokenizer.from_pretrained("juliensimon/reviews-sentiment-analysis") model = AutoModelForSequenceClassification.from_pretrained("juliensimon/reviews-sentiment-analysis", device_map="auto") - Notebooks
- Google Colab
- Kaggle
| import random, sys, argparse, os, logging, torch | |
| from transformers import AutoModelForSequenceClassification, AutoTokenizer, Trainer, TrainingArguments | |
| from sklearn.metrics import accuracy_score, precision_recall_fscore_support | |
| from datasets import load_from_disk | |
| if __name__ == "__main__": | |
| parser = argparse.ArgumentParser() | |
| # hyperparameters sent by the client are passed as command-line arguments to the script. | |
| parser.add_argument("--epochs", type=int, default=3) | |
| parser.add_argument("--train-batch-size", type=int, default=32) | |
| parser.add_argument("--eval-batch-size", type=int, default=64) | |
| parser.add_argument("--save-strategy", type=str, default='no') | |
| parser.add_argument("--save-steps", type=int, default=500) | |
| parser.add_argument("--model-name", type=str) | |
| parser.add_argument("--learning-rate", type=str, default=5e-5) | |
| # Data, model, and output directories | |
| parser.add_argument("--output-data-dir", type=str, default=os.environ["SM_OUTPUT_DATA_DIR"]) | |
| parser.add_argument("--model-dir", type=str, default=os.environ["SM_MODEL_DIR"]) | |
| parser.add_argument("--n-gpus", type=str, default=os.environ["SM_NUM_GPUS"]) | |
| parser.add_argument("--train-dir", type=str, default=os.environ["SM_CHANNEL_TRAIN"]) | |
| parser.add_argument("--valid-dir", type=str, default=os.environ["SM_CHANNEL_VALID"]) | |
| args, _ = parser.parse_known_args() | |
| # load datasets | |
| train_dataset = load_from_disk(args.train_dir) | |
| valid_dataset = load_from_disk(args.valid_dir) | |
| logger = logging.getLogger(__name__) | |
| logger.info(f" loaded train_dataset length is: {len(train_dataset)}") | |
| logger.info(f" loaded valid_dataset length is: {len(valid_dataset)}") | |
| # compute metrics function for binary classification | |
| def compute_metrics(pred): | |
| labels = pred.label_ids | |
| preds = pred.predictions.argmax(-1) | |
| precision, recall, f1, _ = precision_recall_fscore_support(labels, preds, average="binary") | |
| acc = accuracy_score(labels, preds) | |
| return {"accuracy": acc, "f1": f1, "precision": precision, "recall": recall} | |
| # download model from model hub | |
| model = AutoModelForSequenceClassification.from_pretrained(args.model_name) | |
| # download the tokenizer too, which will be saved in the model artifact | |
| # and used at prediction time | |
| tokenizer = AutoTokenizer.from_pretrained(args.model_name) | |
| # define training args | |
| training_args = TrainingArguments( | |
| output_dir=args.model_dir, | |
| num_train_epochs=args.epochs, | |
| per_device_train_batch_size=args.train_batch_size, | |
| per_device_eval_batch_size=args.eval_batch_size, | |
| save_strategy=args.save_strategy, | |
| save_steps=args.save_steps, | |
| evaluation_strategy="epoch", | |
| logging_dir=f"{args.output_data_dir}/logs", | |
| learning_rate=float(args.learning_rate), | |
| ) | |
| # create Trainer instance | |
| trainer = Trainer( | |
| model=model, | |
| args=training_args, | |
| tokenizer=tokenizer, | |
| compute_metrics=compute_metrics, | |
| train_dataset=train_dataset, | |
| eval_dataset=valid_dataset, | |
| ) | |
| # train model | |
| trainer.train() | |
| # evaluate model | |
| eval_result = trainer.evaluate(eval_dataset=valid_dataset) | |
| # writes eval result to file which can be accessed later in s3 output | |
| with open(os.path.join(args.output_data_dir, "eval_results.txt"), "w") as writer: | |
| print(f"***** Eval results *****") | |
| for key, value in sorted(eval_result.items()): | |
| writer.write(f"{key} = {value}\n") | |
| # Saves the model to s3 | |
| trainer.save_model(args.model_dir) | |