-
Notifications
You must be signed in to change notification settings - Fork 0
/
program.py
54 lines (42 loc) · 1.94 KB
/
program.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import pandas as pd
from collections import Counter
# CSV 파일 로드
data = pd.read_csv('/aimlk/Blackboard/Analysis_data/user_intent_clusters.csv')
# 클러스터 데이터를 계층적으로 분리
data['cluster_levels'] = data['cluster'].str.split('.')
def get_cluster_descriptions(data, level, parent_cluster=''):
# 해당 레벨의 클러스터 설명을 가져옴
if parent_cluster:
filtered_data = data[data['cluster'].str.startswith(parent_cluster)]
else:
filtered_data = data
clusters = filtered_data['cluster_levels'].str[level - 1].unique()
descriptions = {}
for cluster in clusters:
# 특정 클러스터에 해당하는 텍스트 데이터 필터링
cluster_texts = filtered_data[filtered_data['cluster_levels'].str[level - 1] == cluster]['text']
# 가장 흔한 단어 또는 문구 찾기
most_common_text = Counter(cluster_texts).most_common(1)[0][0]
descriptions[cluster] = most_common_text
return descriptions
def display_clusters(level, parent_cluster=''):
descriptions = get_cluster_descriptions(data, level, parent_cluster)
for cluster, description in descriptions.items():
print(f"클러스터 {cluster}: {description}")
# 메인 프로그램 루프
current_level = 1
current_cluster = ''
max_level = data['cluster_levels'].apply(len).max()
while True:
display_clusters(current_level, current_cluster)
user_input = input(f"다음 레벨의 클러스터를 보려면 클러스터 번호를 입력하세요 (종료하려면 'exit' 입력): ")
if user_input.lower() == 'exit':
break
if not user_input.isdigit() or int(user_input) >= max_level:
print("잘못된 입력입니다. 다시 시도하세요.")
continue
current_cluster += user_input + '.'
current_level += 1
if current_level > max_level:
print("더 이상의 하위 레벨이 없습니다. 프로그램을 종료합니다.")
break