soojeongcrystal commited on
Commit
eddc371
·
verified ·
1 Parent(s): 2da34a1

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +18 -16
app.py CHANGED
@@ -261,7 +261,8 @@ if 'run_analysis' in st.session_state and st.session_state.run_analysis:
261
  )
262
 
263
  st.altair_chart(chart, use_container_width=True)
264
- # 네트워크 그래프 부분 수정
 
265
  st.header("토픽 단어 네트워크 그래프")
266
  try:
267
  if 'network_graph' not in st.session_state:
@@ -281,7 +282,17 @@ if 'run_analysis' in st.session_state and st.session_state.run_analysis:
281
  key="download_graph"
282
  )
283
  except Exception as e:
284
- st.error(f"네트워크 그래프 생성 중 오류가 발생했습니다: {str(e)}")
 
 
 
 
 
 
 
 
 
 
285
 
286
  def interpret_topics(api_key, topic_results):
287
  client = Anthropic(api_key=api_key)
@@ -312,7 +323,7 @@ if 'run_analysis' in st.session_state and st.session_state.run_analysis:
312
  • 토픽 설명: [1-2문장으로 토픽의 전반적인 내용을 설명해주세요.]
313
 
314
  주의사항:
315
- 1. 토픽명은 "[구체적인 토픽명]" 형식으로 작성해주세요. 예를 들어, "구성원의 전문성 향상을 위한 학습과 역량 개발 방안" 또는 "조직 성과를 높이기 위해 강조되어야 할 학습/역량", "현재 컬리지 멤버 및 본인의 역할에 대한 고민" 등입니다.
316
  2. 토픽명은 단순히 단어를 나열하는 것이 아니라, 토픽의 핵심 주제나 의미를 잘 나타내는 구체적인 문구로 만들어주세요.
317
  3. 토픽명 설명에서는 왜 그러한 토픽명이 선택되었는지, LDA와 TF-IDF 상위 단어들과의 연관성을 설명해주세요.
318
 
@@ -333,36 +344,27 @@ if 'run_analysis' in st.session_state and st.session_state.run_analysis:
333
  except Exception as e:
334
  return f"Claude API 호출 중 오류가 발생했습니다: {str(e)}"
335
 
 
336
  if api_key:
337
  st.header("토픽 종합 해석")
338
 
339
  col1, col2 = st.columns([3, 1])
340
  with col2:
341
  if st.button("토픽 다시 해석하기", key="reinterpret"):
 
342
  st.session_state.topic_interpretation = None
343
- st.experimental_rerun()
344
 
345
  with col1:
 
346
  if 'topic_interpretation' not in st.session_state or st.session_state.topic_interpretation is None:
347
  with st.spinner("토픽 해석 중..."):
348
  st.session_state.topic_interpretation = interpret_topics(api_key, topic_results)
349
 
350
  st.subheader("토픽 모델링 종합 결과")
351
  st.text_area("결과를 복사하여 사용하세요:", value=st.session_state.topic_interpretation, height=500)
352
-
353
- st.subheader("토픽 요약 테이블")
354
- topic_summary_df = pd.DataFrame([
355
- {
356
- '토픽 번호': f"토픽{info['topic_num']}",
357
- '비중': f"{info['weight']:.1f}%",
358
- 'LDA 상위 단어': ", ".join(info['lda_words'][:10]),
359
- 'TF-IDF 상위 단어': ", ".join(info['tfidf_words'][:10])
360
- } for info in topic_results
361
- ])
362
- st.table(topic_summary_df)
363
-
364
  else:
365
  st.warning("Claude API 키가 설정되지 않았습니다. https://console.anthropic.com/settings/keys 에 접속하여 API 키를 발급받으시면 토픽명과 해석을 제공받으실 수 있습니다.")
 
366
  except Exception as e:
367
  st.error(f"분석 중 오류가 발생했습니다: {str(e)}")
368
  else:
 
261
  )
262
 
263
  st.altair_chart(chart, use_container_width=True)
264
+
265
+ # 네트워크 그래프 부분
266
  st.header("토픽 단어 네트워크 그래프")
267
  try:
268
  if 'network_graph' not in st.session_state:
 
282
  key="download_graph"
283
  )
284
  except Exception as e:
285
+ st.error(f"네트워크 그래프 생성 중 오류가 발생했습니다: {str(# 토픽 요약 테이블 (항상 표시)
286
+ st.subheader("토픽 요약 테이블")
287
+ topic_summary_df = pd.DataFrame([
288
+ {
289
+ '토픽 번호': f"토픽{info['topic_num']}",
290
+ '비중': f"{info['weight']:.1f}%",
291
+ 'LDA 상위 단어': ", ".join(info['lda_words'][:10]),
292
+ 'TF-IDF 상위 단어': ", ".join(info['tfidf_words'][:10])
293
+ } for info in topic_results
294
+ ])
295
+ st.table(topic_summary_df)
296
 
297
  def interpret_topics(api_key, topic_results):
298
  client = Anthropic(api_key=api_key)
 
323
  • 토픽 설명: [1-2문장으로 토픽의 전반적인 내용을 설명해주세요.]
324
 
325
  주의사항:
326
+ 1. 토픽명은 "[구체적인 토픽명]" 형식으로 8어절 이상 작성해주세요. 예를 들어, "구성원의 전문성 향상을 위한 학습과 역량 개발 방안" 또는 "조직 성과를 높이기 위해 강조되어야 할 학습/역량", "현재 컬리지 멤버 및 본인의 역할에 대한 고민" 등입니다.
327
  2. 토픽명은 단순히 단어를 나열하는 것이 아니라, 토픽의 핵심 주제나 의미를 잘 나타내는 구체적인 문구로 만들어주세요.
328
  3. 토픽명 설명에서는 왜 그러한 토픽명이 선택되었는지, LDA와 TF-IDF 상위 단어들과의 연관성을 설명해주세요.
329
 
 
344
  except Exception as e:
345
  return f"Claude API 호출 중 오류가 발생했습니다: {str(e)}"
346
 
347
+ # Claude API를 사용한 토픽 해석 부분
348
  if api_key:
349
  st.header("토픽 종합 해석")
350
 
351
  col1, col2 = st.columns([3, 1])
352
  with col2:
353
  if st.button("토픽 다시 해석하기", key="reinterpret"):
354
+ # 해석 결과만 초기화
355
  st.session_state.topic_interpretation = None
 
356
 
357
  with col1:
358
+ # 해석 결과가 없거나 다시 해석하기 버튼을 눌렀을 때만 새로 해석
359
  if 'topic_interpretation' not in st.session_state or st.session_state.topic_interpretation is None:
360
  with st.spinner("토픽 해석 중..."):
361
  st.session_state.topic_interpretation = interpret_topics(api_key, topic_results)
362
 
363
  st.subheader("토픽 모델링 종합 결과")
364
  st.text_area("결과를 복사하여 사용하세요:", value=st.session_state.topic_interpretation, height=500)
 
 
 
 
 
 
 
 
 
 
 
 
365
  else:
366
  st.warning("Claude API 키가 설정되지 않았습니다. https://console.anthropic.com/settings/keys 에 접속하여 API 키를 발급받으시면 토픽명과 해석을 제공받으실 수 있습니다.")
367
+
368
  except Exception as e:
369
  st.error(f"분석 중 오류가 발생했습니다: {str(e)}")
370
  else: