hy commited on
Commit
4ff995f
ยท
1 Parent(s): fd0737a
Files changed (1) hide show
  1. aggro_model.py +19 -24
aggro_model.py CHANGED
@@ -1,5 +1,6 @@
1
  import torch
2
  import torch.nn as nn
 
3
  from transformers import BertTokenizer, BertModel
4
  import pickle
5
  import re
@@ -177,48 +178,42 @@ def get_aggro_score(title: str) -> dict:
177
 
178
  with torch.no_grad():
179
  outputs = aggro_model(input_ids, mask)
180
- probs = torch.softmax(outputs, dim=1)
181
  bert_score = probs[0][1].item() * 100
182
  except:
183
  bert_score = 50.0
184
 
185
- # 3. ํ•ฉ์‚ฐ (๊ทœ์น™ 40% + BERT 60%)
186
- if rule_scorer and aggro_model:
187
- final_score = (rule_score * 0.4) + (bert_score * 0.6)
188
- elif aggro_model:
189
- final_score = bert_score
190
- elif rule_scorer:
191
- final_score = rule_score
192
- else:
193
- final_score = 0.0
 
 
194
 
195
  # 4. ๊ฒฐ๊ณผ
196
  normalized_score = min(final_score / 100.0, 1.0)
197
 
198
- reason = "์ œ๋ชฉ์ด ํ‰์ดํ•ฉ๋‹ˆ๋‹ค."
199
- recommendation = "์–‘ํ˜ธํ•ฉ๋‹ˆ๋‹ค."
200
-
201
- # if final_score >= 70:
202
- # reason = f"AI ์˜ˆ์ธก({bert_score:.0f}์ ) ๋ฐ ๊ทœ์น™({rule_pattern})์— ์˜ํ•ด ๋‚š์‹œ์„ฑ์œผ๋กœ ํŒ๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค."
203
- # recommendation = "๊ฐ๊ด€์ ์ธ ์‚ฌ์‹ค ์œ„์ฃผ์˜ ์ œ๋ชฉ์œผ๋กœ ์ˆ˜์ •ํ•ด์ฃผ์„ธ์š”."
204
- # elif final_score >= 40:
205
- # reason = f"์ผ๋ถ€ ๋‚š์‹œ์„ฑ ์š”์†Œ({rule_pattern})๊ฐ€ ๊ฐ์ง€๋˜์—ˆ์Šต๋‹ˆ๋‹ค."
206
- # recommendation = "ํ‘œํ˜„์„ ์กฐ๊ธˆ ๋” ๋‹ค๋“ฌ๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค."
207
  if final_score >= 80:
208
  reason = f"๋งค์šฐ ๋†’์Œ ๐Ÿ”ด (AI: {bert_score:.0f}์ , ๊ทœ์น™: {rule_pattern})"
209
- recommendation = "์ „๋ฉด ์ˆ˜์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. (๋‚š์‹œ์„ฑ ๋†ํ›„)"
210
 
211
  elif final_score >= 60:
212
  reason = f"๋†’์Œ ๐ŸŸ  (AI: {bert_score:.0f}์ , ๊ทœ์น™: {rule_pattern})"
213
- recommendation = "๊ณผ์žฅ๋œ ํ‘œํ˜„์„ ์ค„์ด๊ณ  ๊ฐ๊ด€์ ์œผ๋กœ ์ˆ˜์ •ํ•˜์„ธ์š”."
214
 
215
  elif final_score >= 40:
216
  reason = f"๋ณดํ†ต ๐ŸŸก (AI: {bert_score:.0f}์ , ๊ทœ์น™: {rule_pattern})"
217
- recommendation = "์ผ๋ถ€ ํ‘œํ˜„์„ ์ค‘๋ฆฝ์ ์œผ๋กœ ๋‹ค๋“ฌ๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค."
218
 
219
  else:
220
- reason = "๋‚ฎ์Œ ๐ŸŸข ์ œ๋ชฉ์ด ํ‰์ดํ•˜๊ณ  ์ ์ ˆํ•ฉ๋‹ˆ๋‹ค."
221
- recommendation = "์ ์ ˆํ•œ ์ œ๋ชฉ์ž…๋‹ˆ๋‹ค. ๋ฐœํ–‰ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค."
222
 
223
  return {
224
  "score": round(normalized_score, 4),
 
1
  import torch
2
  import torch.nn as nn
3
+ import torch.nn.functional as F
4
  from transformers import BertTokenizer, BertModel
5
  import pickle
6
  import re
 
178
 
179
  with torch.no_grad():
180
  outputs = aggro_model(input_ids, mask)
181
+ probs = F.softmax(outputs / 2.0, dim=1)
182
  bert_score = probs[0][1].item() * 100
183
  except:
184
  bert_score = 50.0
185
 
186
+ # Safety Net ์ ์šฉ (๊ทœ์น™ ์ ์ˆ˜๊ฐ€ ๋‚ฎ์œผ๋ฉด AI ์ ์ˆ˜๋„ ๊นŽ์Œ)
187
+ if rule_score < 5:
188
+ bert_score *= 0.3 # ๊ทœ์น™ ์ ์ˆ˜๊ฐ€ ๊ฑฐ์˜ ์—†์œผ๋ฉด AI ์ ์ˆ˜ 70% ์‚ญ๊ฐ
189
+ elif rule_score < 20:
190
+ bert_score *= 0.8 # ๊ทœ์น™ ์ ์ˆ˜๊ฐ€ ๋‚ฎ์œผ๋ฉด AI ์ ์ˆ˜ 20% ์‚ญ๊ฐ
191
+
192
+ #3. ํ•ฉ์‚ฐ
193
+ w_rule = 0.0
194
+ w_bert = 1.0
195
+
196
+ final_score = (rule_score * w_rule) + (bert_score * w_bert)
197
 
198
  # 4. ๊ฒฐ๊ณผ
199
  normalized_score = min(final_score / 100.0, 1.0)
200
 
201
+ # 5. ๋“ฑ๊ธ‰ ํŒ์ •
 
 
 
 
 
 
 
 
202
  if final_score >= 80:
203
  reason = f"๋งค์šฐ ๋†’์Œ ๐Ÿ”ด (AI: {bert_score:.0f}์ , ๊ทœ์น™: {rule_pattern})"
204
+ recommendation = "์ „๋ฉด ์ˆ˜์ • ๊ถŒ์žฅ"
205
 
206
  elif final_score >= 60:
207
  reason = f"๋†’์Œ ๐ŸŸ  (AI: {bert_score:.0f}์ , ๊ทœ์น™: {rule_pattern})"
208
+ recommendation = "๊ณผ์žฅ๋œ ํ‘œํ˜„ ์ˆ˜์ • ํ•„์š”"
209
 
210
  elif final_score >= 40:
211
  reason = f"๋ณดํ†ต ๐ŸŸก (AI: {bert_score:.0f}์ , ๊ทœ์น™: {rule_pattern})"
212
+ recommendation = "์ผ๋ถ€ ํ‘œํ˜„ ์ค‘๋ฆฝํ™” ๊ถŒ์žฅ"
213
 
214
  else:
215
+ reason = "๋‚ฎ์Œ ๐ŸŸข"
216
+ recommendation = "์ ์ ˆํ•œ ์ œ๋ชฉ์ž…๋‹ˆ๋‹ค"
217
 
218
  return {
219
  "score": round(normalized_score, 4),