Update app.py
Browse files
app.py
CHANGED
@@ -2,6 +2,7 @@ import streamlit as st
|
|
2 |
import requests
|
3 |
from transformers import pipeline
|
4 |
import pandas as pd
|
|
|
5 |
|
6 |
# Step 1: 네이버 뉴스 API 호출 함수
|
7 |
def fetch_naver_news(query, display=10, start=1, sort="date"):
|
@@ -42,7 +43,6 @@ def classify_political_sentiment(text, classifier):
|
|
42 |
|
43 |
sentiment_score = score if label == "POSITIVE" else -score
|
44 |
|
45 |
-
# 키워드 기반 분류 (진보/보수)
|
46 |
progressive_keywords = ["복지", "평등", "민주", "환경", "사회적 책임"]
|
47 |
conservative_keywords = ["안보", "전통", "경제", "성장", "질서", "국방"]
|
48 |
|
@@ -76,8 +76,7 @@ def analyze_news_political_orientation(news_items, classifier):
|
|
76 |
|
77 |
return results, detailed_results
|
78 |
|
79 |
-
|
80 |
-
# Streamlit 앱 시작
|
81 |
st.title("정치 성향 분석 대시보드")
|
82 |
st.markdown("### 네이버 뉴스 데이터를 실시간으로 수집하고 정치 성향을 분석합니다.")
|
83 |
|
@@ -107,10 +106,19 @@ if st.button("분석 시작"):
|
|
107 |
st.write(f"보수: {results['보수']}건")
|
108 |
st.write(f"중립: {results['중립']}건")
|
109 |
|
110 |
-
# 성향 분포 차트
|
111 |
st.subheader("성향 분포 차트")
|
112 |
st.bar_chart(pd.DataFrame.from_dict(results, orient='index', columns=["건수"]))
|
113 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
114 |
# 세부 결과 출력
|
115 |
st.subheader("세부 결과")
|
116 |
df = pd.DataFrame(detailed_results)
|
|
|
2 |
import requests
|
3 |
from transformers import pipeline
|
4 |
import pandas as pd
|
5 |
+
import matplotlib.pyplot as plt
|
6 |
|
7 |
# Step 1: 네이버 뉴스 API 호출 함수
|
8 |
def fetch_naver_news(query, display=10, start=1, sort="date"):
|
|
|
43 |
|
44 |
sentiment_score = score if label == "POSITIVE" else -score
|
45 |
|
|
|
46 |
progressive_keywords = ["복지", "평등", "민주", "환경", "사회적 책임"]
|
47 |
conservative_keywords = ["안보", "전통", "경제", "성장", "질서", "국방"]
|
48 |
|
|
|
76 |
|
77 |
return results, detailed_results
|
78 |
|
79 |
+
# Step 5: Streamlit 앱 시작
|
|
|
80 |
st.title("정치 성향 분석 대시보드")
|
81 |
st.markdown("### 네이버 뉴스 데이터를 실시간으로 수집하고 정치 성향을 분석합니다.")
|
82 |
|
|
|
106 |
st.write(f"보수: {results['보수']}건")
|
107 |
st.write(f"중립: {results['중립']}건")
|
108 |
|
109 |
+
# 성향 분포 차트 (막대 차트)
|
110 |
st.subheader("성향 분포 차트")
|
111 |
st.bar_chart(pd.DataFrame.from_dict(results, orient='index', columns=["건수"]))
|
112 |
|
113 |
+
# 성향 분포 차트 (matplotlib로 추가된 시각화)
|
114 |
+
st.subheader("성향 분포 (세부 차트)")
|
115 |
+
fig, ax = plt.subplots()
|
116 |
+
ax.bar(results.keys(), results.values())
|
117 |
+
ax.set_xlabel("성향")
|
118 |
+
ax.set_ylabel("건수")
|
119 |
+
ax.set_title("성향 분포 차트")
|
120 |
+
st.pyplot(fig)
|
121 |
+
|
122 |
# 세부 결과 출력
|
123 |
st.subheader("세부 결과")
|
124 |
df = pd.DataFrame(detailed_results)
|