Download predict.py from bangbangkido/Product-Classifier: direct link, hf CLI and curl.
- Browser
- Download file 1.27 kB
-
https://huggingface.co/bangbangkido/Product-Classifier/resolve/main/predict.py
- Command line
-
hf download hf://bangbangkido/Product-Classifier/predict.py
-
curl -L -o predict.py https://huggingface.co/bangbangkido/Product-Classifier/resolve/main/predict.py
1.27 kB
| """用法:python predict.py '商品标题'""" | |
| import argparse | |
| import json | |
| from pathlib import Path | |
| import torch | |
| from transformers import AutoTokenizer | |
| from model import BertTitleClassifier | |
| def main(): | |
| parser = argparse.ArgumentParser(description="商品标题分类") | |
| parser.add_argument("text", help="待分类的商品标题") | |
| args = parser.parse_args() | |
| model_dir = Path(__file__).resolve().parent | |
| settings = json.loads((model_dir / "inference_config.json").read_text(encoding="utf-8")) | |
| labels = json.loads((model_dir / "labels.json").read_text(encoding="utf-8")) | |
| device = "cuda" if torch.cuda.is_available() else "cpu" | |
| model = BertTitleClassifier.from_pretrained(model_dir, device=device) | |
| tokenizer = AutoTokenizer.from_pretrained(model_dir, local_files_only=True) | |
| inputs = tokenizer( | |
| args.text, return_tensors="pt", padding="max_length", | |
| truncation=True, max_length=settings["max_length"], | |
| ) | |
| with torch.no_grad(): | |
| logits = model(inputs["input_ids"].to(device), inputs["attention_mask"].to(device)) | |
| pred_id = logits.argmax(dim=1).item() | |
| print(json.dumps({"id": pred_id, "label": labels["id2label"][str(pred_id)]}, ensure_ascii=False)) | |
| if __name__ == "__main__": | |
| main() | |