Spaces:
Running
Running
import streamlit as st | |
import pandas as pd | |
from transformers import pipeline | |
# 1) κ°μ±λΆμ λͺ¨λΈ λΆλ¬μ€κΈ° | |
sentiment_analyzer = pipeline( | |
"sentiment-analysis", | |
model="monologg/koelectra-base-finetuned-nsmc", | |
truncation=True | |
) | |
st.title("μ΅λͺ κ²μν κ°μ±λΆμ") | |
st.write(""" | |
- CSV λλ Excel νμΌμ μ λ‘λν΄μ£ΌμΈμ. | |
- 'λ΄μ©' μ΄(λλ μνλ μ΄)μ κ²μκΈ ν μ€νΈκ° μλ€κ³ κ°μ ν©λλ€. | |
- μ λ‘λ ν 'κ°μ±λΆμ μ€ν' λ²νΌμ λλ₯΄λ©΄, κ° κΈμ λν κΈμ /λΆμ λ μ΄λΈκ³Ό μ μκ° νμλ©λλ€. | |
""") | |
# 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["λ΄μ©"]: | |
# κ°μ±λΆμ | |
result = sentiment_analyzer(text, truncation=True) | |
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" | |
) | |