WildOjisan commited on
Commit
e8a2c53
ยท
1 Parent(s): 899f482
Files changed (2) hide show
  1. .gitignore +2 -1
  2. xtreme_distil_use.py +59 -0
.gitignore CHANGED
@@ -4,4 +4,5 @@ __pycache__/
4
  *.pyd
5
  *.log
6
  .venv/
7
- xtreme-distil-review-classifier/
 
 
4
  *.pyd
5
  *.log
6
  .venv/
7
+ xtreme-distil-review-classifier/
8
+ shopping.txt
xtreme_distil_use.py ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ from transformers import AutoTokenizer, AutoModelForSequenceClassification
3
+
4
+ # 1. ๋ชจ๋ธ์ด ์ €์žฅ๋œ ํด๋” ๊ฒฝ๋กœ ์ง€์ •
5
+ LOAD_MODEL_PATH = "./xtreme-distil-review-classifier"
6
+
7
+ # 2. GPU/CPU ์žฅ์น˜ ์„ค์ •
8
+ device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
9
+ print(f"์‚ฌ์šฉ ์žฅ์น˜: {device}")
10
+
11
+ # 3. ์ €์žฅ๋œ ํ† ํฌ๋‚˜์ด์ €์™€ ๋ชจ๋ธ ๋กœ๋“œ
12
+ # ์ €์žฅ๋œ config.json๊ณผ model.safetensors ํŒŒ์ผ์„ ๋ฐ”ํƒ•์œผ๋กœ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
13
+ print(f"\n--- ๋ชจ๋ธ ๋กœ๋“œ ์ค‘: {LOAD_MODEL_PATH} ---")
14
+ loaded_tokenizer = AutoTokenizer.from_pretrained(LOAD_MODEL_PATH)
15
+ loaded_model = AutoModelForSequenceClassification.from_pretrained(LOAD_MODEL_PATH)
16
+
17
+ # ๋ชจ๋ธ์„ ์„ค์ •๋œ ์žฅ์น˜(GPU ๋˜๋Š” CPU)๋กœ ์ด๋™
18
+ loaded_model.to(device)
19
+ loaded_model.eval() # ๋ชจ๋ธ์„ ํ‰๊ฐ€ ๋ชจ๋“œ๋กœ ์„ค์ • (ํ•„์ˆ˜)
20
+
21
+ # 4. ๋ถ„๋ฅ˜ ํ•จ์ˆ˜ ์ •์˜
22
+ def classify_review(text):
23
+ # ํ…์ŠคํŠธ๋ฅผ ํ† ํฐํ™”ํ•˜๊ณ  ์žฅ์น˜๋กœ ์ด๋™
24
+ inputs = loaded_tokenizer(
25
+ text,
26
+ return_tensors="pt", # PyTorch ํ…์„œ๋กœ ๋ฐ˜ํ™˜
27
+ padding=True,
28
+ truncation=True
29
+ ).to(device)
30
+
31
+ # ๋ชจ๋ธ ์ถ”๋ก  (Inference)
32
+ with torch.no_grad():
33
+ outputs = loaded_model(**inputs)
34
+
35
+ # ๊ฒฐ๊ณผ ์ฒ˜๋ฆฌ
36
+ probabilities = torch.softmax(outputs.logits, dim=1)
37
+ predicted_class_id = probabilities.argmax().item()
38
+
39
+ # ๋ ˆ์ด๋ธ” ๋งคํ•‘ (ํŒŒ์ธ ํŠœ๋‹ ์‹œ ์„ค์ •ํ•œ 0: ๋ถ€์ •, 1: ๊ธ์ • ๊ธฐ์ค€)
40
+ label_map = {0: "๋ถ€์ • (Negative)", 1: "๊ธ์ • (Positive)"}
41
+ predicted_label = label_map[predicted_class_id]
42
+ confidence = probabilities[0][predicted_class_id].item()
43
+
44
+ return predicted_label, confidence
45
+
46
+ # 5. ์ƒˆ๋กœ์šด ๋‹น๊ทผ๋งˆ์ผ“ ๋ฆฌ๋ทฐ ํ…Œ์ŠคํŠธ ์‹คํ–‰
47
+ new_reviews = [
48
+ "๋งค๋„ˆ๊ฐ€ ์ •๋ง ์ข‹์œผ์„ธ์š”! ๊ธฐ๋ถ„ ์ข‹์€ ๊ฑฐ๋ž˜๋„ค์š”",
49
+ "๋ฌผ๊ฑด ์ƒํƒœ๊ฐ€ ์ƒ๊ฐ๋ณด๋‹ค ๋„ˆ๋ฌด ์•ˆ ์ข‹์•„์„œ ์†์•˜๋‹ค๋Š” ๋А๋‚Œ์ด ๋“ญ๋‹ˆ๋‹ค.",
50
+ "๋น ๋ฅธ ๊ฑฐ๋ž˜ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ ์—†์ด ์ž˜ ๋ฐ›์•˜์–ด์š”.",
51
+ "์—ฐ๋ฝ์„ ์•ˆ๋ฐ›๋„ค์š”",
52
+ ]
53
+
54
+ print("\n--- ์ƒˆ๋กœ์šด ๋ฆฌ๋ทฐ ๋ถ„๋ฅ˜ ๊ฒฐ๊ณผ ---")
55
+ for review in new_reviews:
56
+ label, confidence = classify_review(review)
57
+ print(f"๋ฆฌ๋ทฐ: '{review}'")
58
+ print(f" -> ์˜ˆ์ธก ๋ถ„๋ฅ˜: **{label}** (ํ™•๋ฅ : {confidence:.4f})")
59
+ print("-" * 35)