SW사관학교 정글/정글일지

[Week15] 나만의 무기를 갖기 - 3

아크리미츠 2024. 8. 16. 14:14

키워드 추출하는 타이밍을 정하는 데에 ELMo를 사용하려고 시도했다. ELMo는 사전학습된 모델로 단어의 임베딩 섹터를 생성하여 문맥이 바뀌었을 때를 알 수 있는 모델이었다. 나는 이를 사용하여 문맥이 바뀔 때를 체크해서 Keyword의 추출타이밍으로 적용하거나 키워드를 묶을 때 다른 메인 아이디어로 묶고자 하였다.

 

찾아보니 한국어 모델이 mini 모델이지만 있긴 있어서 이를 사용하게 되었다. 그러나 세팅을 마치고 직접 사용해보니 mini model이어서 그런가 성능이 너무 안좋았다. 이 때 사용한 예시 스크립트는

script = '여행 어디로 갈까? 대구나 부산 어때? 그럼 부산으로 가자. 우리 여행가서 먹을 점심 메뉴 고르자. 국밥이나 밀면 어때?'

 

였는 데, ELMo 에서 반환된 데이터는

switching = {1, 3, 4}

 

으로 switching은 문맥이 전환된 문장을 뜻한다.

 

여행에서 대구나 부산도 문맥이 전환되었다고 판단되었고, 먹을 점심 메뉴도 문맥 전환이며, 메뉴의 종류도 문맥의 전환이라고 판단하고 있었다. 나는 이것을 여행 장소를 고르고 그 후에 그 장소에서의 점심으로 보기 때문에 2 개의 문맥이라고 생각하여 민감도를 낮추게 되었는데, 이를 해결할 수 없었고, 그 외에도 mini model이다 보니 여러가지 문제와 함께 한글 자체가 인식이 잘 안됐다.

 

결국 키워드를 문맥이 전환되었다고 추출하거나 관련된 키워드끼리 묶는 것이 안되어 관련된 키워드끼리 묶는 것은 다시 ChatGPT API로 사용할 수 밖에 없었고, 키워드 추출하는 타이밍에 대해서 어떻게 할 것인가에 대해 회의를 진행했다.

키워드를 추출하는 타이밍에 대해서 매 대화마다 키워드를 추출하는 방법, 대화 횟수를 기준으로 나누는 방법, GPT에 모든 대화 내역을 보내 GPT에서 키워드를 추출하는 타이밍을 정하게 하는 것 등이 나왔는 데, 아무래도 매 대 화마다 키워드를 추출하게 되면 API 요청이 너무 많이 들어가고 노드가 너무 많이 생겨서 문맥을 파악하는데 어렵게 됐다.

그래서 대화 횟수를 기준으로 나누게 되었는 데, 3개부터 10개의 대화 기준으로 키워드를 추출한 결과 대화가 많이 쌓인 상태에서 추출할 수록 노드가 더 이쁘게 나온다는 사실을 발견했다. 아무래도 문맥을 파악할 수 있는 문장이 길어지기 때문에 지피티도 더 일을 잘하는 것 같았다.

 

그러나 노드가 생성되는 시간이 너무 지연되고, 시연할 때에도 적합하지 않아 이의 적절한 조율이 필요했고, 다른 팀원들에게 문의하고 우리팀 내에서도 회의한 것을 토대로 5개의 대화를 기준으로 추출하기로 했다.