import streamlit as st import pandas as pd from transformers import pipeline # 1) 감성분석 모델 불러오기 sentiment_analyzer = pipeline( "sentiment-analysis", model="monologg/koelectra-base-finetuned-nsmc" ) st.title("익명게시판 감성분석") st.write(""" - CSV 또는 Excel 파일을 업로드해주세요. - 'content' 열(또는 원하는 열)에 게시글 텍스트가 있다고 가정합니다. - 업로드 후 '감성분석 실행' 버튼을 누르면, 각 글에 대한 긍정/부정 레이블과 점수가 표시됩니다. """) # 2) 파일 업로드 위젯 uploaded_file = st.file_uploader("게시글 파일 업로드 (CSV 또는 XLSX)", type=["csv", "xlsx"]) if uploaded_file is not None: # 3) CSV/XLSX 판별 후 DataFrame 로드 if uploaded_file.name.endswith(".csv"): df = pd.read_csv(uploaded_file) else: # xlsx df = pd.read_excel(uploaded_file) st.write("미리보기:") st.dataframe(df.head()) # 업로드한 데이터 일부 확인 # 4) 감성분석 실행 if st.button("감성분석 실행"): results_label = [] results_score = [] for text in df["content"]: # 'content' 열에 게시글이 있다고 가정 # 감성분석 result = sentiment_analyzer(text) label = result[0]['label'] # positive/negative score = result[0]['score'] # 신뢰도(0~1) results_label.append(label) results_score.append(score) df["sentiment_label"] = results_label df["sentiment_score"] = results_score # 5) 결과 표시 st.write("감성분석 결과:") st.dataframe(df) st.write("아래 버튼을 눌러 결과를 CSV로 다운로드할 수도 있습니다.") # 6) CSV 다운로드 버튼 csv_data = df.to_csv(index=False).encode('utf-8-sig') st.download_button( label="결과 CSV 다운로드", data=csv_data, file_name="sentiment_analysis_result.csv", mime="text/csv" )