Product-Classifier / predict.py
bangbangkido's picture
Upload folder using huggingface_hub
a5ecb48 verified
Raw History Blame Contribute Delete
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()