820nam commited on
Commit
2e4d46c
ยท
verified ยท
1 Parent(s): ebdab57

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +15 -8
app.py CHANGED
@@ -2,11 +2,12 @@ import streamlit as st
2
  import pandas as pd
3
  import requests
4
  from transformers import pipeline, AutoTokenizer, AutoModelForSequenceClassification
 
5
 
6
  # ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ ๋กœ๋“œ
7
  @st.cache_resource
8
  def load_model():
9
- model_name = "bucketresearch/politicalBiasBERT" # ์ •์น˜ ์„ฑํ–ฅ ๋ถ„์„์— ํŠนํ™”๋œ ๋ชจ๋ธ
10
  tokenizer = AutoTokenizer.from_pretrained(model_name)
11
  model = AutoModelForSequenceClassification.from_pretrained(model_name)
12
  return pipeline("text-classification", model=model, tokenizer=tokenizer)
@@ -15,22 +16,26 @@ def load_model():
15
  def fetch_naver_news(query, display=5):
16
  url = "https://openapi.naver.com/v1/search/news.json"
17
  headers = {
18
- "X-Naver-Client-Id": "I_8koTJh3R5l4wLurQbG",
19
- "X-Naver-Client-Secret": "W5oWYlAgur",
20
  }
21
  params = {"query": query, "display": display, "sort": "sim"}
22
- response = requests.get(url, headers=headers, params=params)
23
- response.raise_for_status()
24
- return response.json()
 
 
 
 
25
 
26
  # ์ •์น˜ ์„ฑํ–ฅ ๋ถ„๋ฅ˜
27
  def classify_sentiment(text, classifier):
28
  result = classifier(text, truncation=True, max_length=512)
29
  label = result[0]['label']
30
  score = result[0]['score']
31
- if label in ['LABEL_0', 'LABEL_1']:
32
  return "๋ณด์ˆ˜", score
33
- elif label in ['LABEL_4']:
34
  return "์ง„๋ณด", score
35
  else:
36
  return "์ค‘๋ฆฝ", score
@@ -71,6 +76,8 @@ if st.button("๋ถ„์„ ์‹œ์ž‘"):
71
  try:
72
  # ๋„ค์ด๋ฒ„ ๋‰ด์Šค ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘
73
  news_data = fetch_naver_news(query, display=10)
 
 
74
  news_items = news_data["items"]
75
 
76
  # ๋ชจ๋ธ ๋กœ๋“œ
 
2
  import pandas as pd
3
  import requests
4
  from transformers import pipeline, AutoTokenizer, AutoModelForSequenceClassification
5
+ import os
6
 
7
  # ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ ๋กœ๋“œ
8
  @st.cache_resource
9
  def load_model():
10
+ model_name = "bucketresearch/politicalBiasBERT"
11
  tokenizer = AutoTokenizer.from_pretrained(model_name)
12
  model = AutoModelForSequenceClassification.from_pretrained(model_name)
13
  return pipeline("text-classification", model=model, tokenizer=tokenizer)
 
16
  def fetch_naver_news(query, display=5):
17
  url = "https://openapi.naver.com/v1/search/news.json"
18
  headers = {
19
+ "X-Naver-Client-Id": os.getenv("NAVER_CLIENT_ID"),
20
+ "X-Naver-Client-Secret": os.getenv("NAVER_CLIENT_SECRET"),
21
  }
22
  params = {"query": query, "display": display, "sort": "sim"}
23
+ try:
24
+ response = requests.get(url, headers=headers, params=params)
25
+ response.raise_for_status() # HTTP ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ
26
+ return response.json()
27
+ except requests.exceptions.RequestException as e:
28
+ st.error(f"API ํ˜ธ์ถœ ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: {e}")
29
+ return None
30
 
31
  # ์ •์น˜ ์„ฑํ–ฅ ๋ถ„๋ฅ˜
32
  def classify_sentiment(text, classifier):
33
  result = classifier(text, truncation=True, max_length=512)
34
  label = result[0]['label']
35
  score = result[0]['score']
36
+ if label in ['LABEL_0', 'LABEL_1']: # ๋ผ๋ฒจ์— ๋”ฐ๋ผ ์ˆ˜์ • ํ•„์š”
37
  return "๋ณด์ˆ˜", score
38
+ elif label in ['LABEL_4']: # ๋ผ๋ฒจ์— ๋”ฐ๋ผ ์ˆ˜์ • ํ•„์š”
39
  return "์ง„๋ณด", score
40
  else:
41
  return "์ค‘๋ฆฝ", score
 
76
  try:
77
  # ๋„ค์ด๋ฒ„ ๋‰ด์Šค ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘
78
  news_data = fetch_naver_news(query, display=10)
79
+ if news_data is None:
80
+ return
81
  news_items = news_data["items"]
82
 
83
  # ๋ชจ๋ธ ๋กœ๋“œ