지난 시간에 이어서 이제는 chatGPT로 부터 가져온 데이터에 대해 키워드 분석을 진행해보자
코드를 작성하고 좀 알아보다 보니 카카오 키워드 분석 API가 유료라는 사실을 알게됐다. 나는 돈이 없으니 가능한 다른 방법을 찾아보자.
그리고 좀 생각해보니까 chatGPT도 키워드 분석을 해준다!!
하는 수 없이 개발 편의성을 위해 변경에 용이하지 않더라도 Keyword Extractor를 제거하고 Question Generator에서 키워드 분석까지 진행하도록 변경했다. 아래의 이미지는 기존에 내가 설계했던 클래스 다이어그램이다.
비록, Keyword Extractor가 Question Generator와 합쳐져 변경이 어려운 객체지향적이지 않은 코드가 되겠지만 일단 빠르게 개발을 하기 위해 이렇게 진행하고 나중에 리팩토링을 통해 위 설계와 같이 만들도록 하자.. 단순하게 생각하면 KeywordExtractor의 구현체로 chatGPT Keyword Extractor를 구현하면된다.
자 이제 그럼 구현 과정에 대해 나열해보겠다.
- 모든 카테고리에 대해 chatGPT에게 한 번에 질문할 수 있도록 List로 변환하기
- 질의에 시간이 꽤 들어가기 때문에 가능하면 한 번에 많은 내용을 질문하기 위해서 이렇게 했다.
public enum Category {
DB,
OperatingSystem,
Network,
DataStructure;
public static List<String> collectCategories() {
return Arrays.stream(values()).map(Enum::toString).collect(Collectors.toList());
}
}
- 이를 통해 DB, OperatingSystem, Network, DataStructure에 대해 개발자 면접 질문 3가지와 키워드 만들어줘~ 라고 질문할 수 있고 아래는 그에 맞춰 매핑된 결과이다.
{
"category": "DB",
"questions": [
{
"question": "Database normalization이란 무엇인가요?",
"keywords": [
"데이터 정규화",
"1NF",
"2NF",
"3NF"
]
},
{
"question": "ACID란 무엇인가요?",
"keywords": [
"원자성",
"일관성",
"고립성",
"지속성"
]
},
{
"question": "NoSQL이란 무엇인가요?",
"keywords": [
"비관계형 데이터베이스",
"MongoDB",
"Cassandra",
"Redis"
]
}
]
},
{
"category": "OperatingSystem",
"questions": [
{
"question": "프로세스와 스레드의 차이점은 무엇인가요?",
"keywords": [
"동시성",
"병렬성",
"메모리 공유"
]
},
{
"question": "가상 메모리란 무엇인가요?",
"keywords": [
"페이지 폴트",
"스왑",
"페이지 교체 알고리즘"
]
},
{
"question": "디스크 스케줄링 알고리즘에는 어떤 것이 있나요?",
"keywords": [
"FCFS",
"SSTF",
"SCAN",
"C-SCAN"
]
}
]
},
{
"category": "Network",
"questions": [
{
"question": "OSI 7계층 모델은 무엇인가요?",
"keywords": [
"응용 계층",
"전송 계층",
"네트워크 계층",
"데이터 링크 계층"
]
},
{
"question": "TCP와 UDP의 차이점은 무엇인가요?",
"keywords": [
"신뢰성",
"흐름 제어",
"혼잡 제어",
"멀티캐스팅"
]
},
{
"question": "HTTP와 HTTPS의 차이점은 무엇인가요?",
"keywords": [
"SSL",
"TLS",
"암호화",
"보안"
]
}
]
},
{
"category": "DataStructure",
"questions": [
{
"question": "스택(Stack)과 큐(Queue)의 차이점은 무엇인가요?",
"keywords": [
"LIFO",
"FIFO",
"푸쉬",
"팝"
]
},
{
"question": "이진 검색(Binary Search) 알고리즘에 대해 설명해주세요.",
"keywords": [
"정렬된 배열",
"시간 복잡도",
"분할 정복"
]
},
{
"question": "그래프(Graph) 자료구조란 무엇인가요?",
"keywords": [
"정점",
"간선",
"방향성",
"무방향성"
]
}
]
}
]
이제 마지막으로, 질문들과 키워드들을 바탕으로 데이터베이스에 저장하는 로직을 작성하면 된다. 이는 다음 시간에 진행하여 정리하겠다.
'프로젝트' 카테고리의 다른 글
Chat GPT 활용 서비스 구현하기 - 5. 메일로 전송하기 (2) | 2023.05.05 |
---|---|
Chat GPT 활용 서비스 구현하기 - 4. 데이터 저장하기 (0) | 2023.05.04 |
Chat GPT 활용 서비스 구현하기 - 2. Open AI API 연동하기 (0) | 2023.05.02 |
Chat GPT 활용 서비스 구현하기 - 1. 설계하기 (0) | 2023.04.29 |
당근마켓 클론코딩 - 1. 인접 동 조회 기능 구현하기 (0) | 2023.02.08 |