soojeongcrystal commited on
Commit
7dda444
·
verified ·
1 Parent(s): 242a9f3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -15
app.py CHANGED
@@ -1,7 +1,8 @@
1
  import streamlit as st
2
  import pandas as pd
3
  import numpy as np
4
- from anthropic import Anthropic
 
5
  from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer
6
  from sklearn.decomposition import LatentDirichletAllocation
7
  from konlpy.tag import Okt
@@ -296,7 +297,7 @@ if 'run_analysis' in st.session_state and st.session_state.run_analysis:
296
  st.table(topic_summary_df)
297
 
298
  def interpret_topics(api_key, topic_results):
299
- client = Anthropic(api_key=api_key)
300
 
301
  prompt = f"""다음은 LDA 토픽 모델링 결과로 나온 각 토픽의 정보입니다. 이를 바탕으로 전체 토픽을 종합적으로 해석해주세요:
302
 
@@ -336,19 +337,19 @@ if 'run_analysis' in st.session_state and st.session_state.run_analysis:
336
  위 형식에 맞춰 답변해주세요. 사용자가 쉽게 복사하여 사용할 수 있도록 간결하고 명확하게 작성해주세요.
337
  """
338
 
339
- try:
340
- response = client.messages.create(
341
- model="claude-3-sonnet-20240229",
342
- max_tokens=4000,
343
- temperature=0,
344
- system="당신은 토픽 모델링과 텍스트 분석 전문가입니다. 토픽 모델링 결과에 대해 명확하고 간결하며 상세한 해석을 제공합니다. 모든 응답은 반드시 한국어로만 작성해야 합니다.",
345
- messages=[
346
- {"role": "user", "content": f"{prompt}\n\n다음 형식에 맞춰 답변해주세요:\n\n1. 전체 문서의 주제 요약 (3-4문장):\n [여기에 전체 문서의 주제를 종합적으로 설명해주세요. 각 토픽의 비중을 고려하여 중요도를 반영해주세요.]\n\n2. 각 토픽 요약:\n [각 토픽에 대해 다음 형식으로 요약해주세요]\n 토픽[번호] \"[토픽명]\" [비중]%\n • LDA 상위 단어 10개: [LDA 상위 단어 10개를 쉼표로 구분하여 나열]\n • TF-IDF 상위 단어 10개: [TF-IDF 상위 단어 10개를 쉼표로 구분하여 나열]\n • 토픽명 설명: [토픽명이 이렇게 지어진 이유를 1-2문장으로 설명해주세요. LDA와 TF-IDF 상위 단어들이 어떻게 이 토픽명과 연관되는지 설명하세요.]\n • 토픽 설명: [2-3문장으로 토픽의 전반적인 내용을 설명해주세요.]\n\n주의사항:\n1. 토픽명은 \"[구체적인 토픽명]\" 형식으로 작성해주세요. 반드시 8어절 이상으로 구체적이고 설명적으로 작성해야 합니다. \n 예시: \"구성원의 전문성 향상을 위한 체계적인 학습과 역량 개발 방안 모색\", \"조직의 장기적 성과 향상을 위한 핵심 학습 역량 강화 전략\", \n \"현재 컬리지 멤버들의 역할 고민과 향후 발전 방향에 대한 논의\" 등\n2. 토픽명은 단순히 단어를 나열하는 것이 아니라, 토픽의 핵심 주제나 의미를 잘 나타내는 구체적이고 설명적인 문구로 만들어주세요.\n3. 토픽명 설명에서는 왜 그러한 토픽명이 선택되었는지, LDA와 TF-IDF 상위 단어들과의 연관성을 구체적으로 설명해주세요.\n4. 각 토픽의 LDA 상위 단어와 TF-IDF 상위 단어 10개를 반드시 포함해주세요.\n\n위 형식에 맞춰 답변해주세요. 사용자가 쉽게 복사하여 사용할 수 있도록 간결하고 명확하게 작성해주세요."}
347
- ]
348
- )
349
- return response.content[0].text
350
- except Exception as e:
351
- return f"Claude API 호출 중 오류가 발생했습니다: {str(e)}"
352
 
353
  # Claude API를 사용한 토픽 해석 부분
354
  if api_key:
 
1
  import streamlit as st
2
  import pandas as pd
3
  import numpy as np
4
+ import anthropic
5
+ import json
6
  from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer
7
  from sklearn.decomposition import LatentDirichletAllocation
8
  from konlpy.tag import Okt
 
297
  st.table(topic_summary_df)
298
 
299
  def interpret_topics(api_key, topic_results):
300
+ client = anthropic.Anthropic(api_key=api_key)
301
 
302
  prompt = f"""다음은 LDA 토픽 모델링 결과로 나온 각 토픽의 정보입니다. 이를 바탕으로 전체 토픽을 종합적으로 해석해주세요:
303
 
 
337
  위 형식에 맞춰 답변해주세요. 사용자가 쉽게 복사하여 사용할 수 있도록 간결하고 명확하게 작성해주세요.
338
  """
339
 
340
+ try:
341
+ response = client.messages.create(
342
+ model="claude-3-sonnet-20240229",
343
+ max_tokens=4000,
344
+ temperature=0,
345
+ system="당신은 토픽 모델링과 텍스트 분석 전문가입니다. 토픽 모델링 결과에 대해 명확하고 간결하며 상세한 해석을 제공합니다. 모든 응답은 반드시 한국어로만 작성해야 합니다.",
346
+ messages=[
347
+ {"role": "user", "content": prompt}
348
+ ]
349
+ )
350
+ return response.content[0].text
351
+ except Exception as e:
352
+ return f"Claude API 호출 중 오류가 발생했습니다: {str(e)}"
353
 
354
  # Claude API를 사용한 토픽 해석 부분
355
  if api_key: