카테고리 없음

도서매칭 시스템 구현과 테스트 과정 이모저모 최적화

야옹만원 2025. 2. 10. 17:05
반응형
SMALL

본 글에서는 ChatGPT와 네이버 책검색 API를 활용한 도서매칭 시스템 구현 과정과 이를 위한 테스트 절차를 심층적으로 다룹니다. 구현의 핵심 요소와 최적화를 통한 성능 개선 방향에 대해 소개합니다.

도서 매칭 시스템 개요와 설계

도서 매칭 시스템은 사용자에게 최적의 책을 추천하기 위해 다양한 데이터와 알고리즘을 활용하여 실시간으로 도서를 검색하고 매칭하는 시스템입니다. 이 시스템은 책 추천 데이터 구조, API 연동을 통한 검색 결과 요청, 그리고 매칭 로직 및 유사도 평가 체계로 구성되어 있습니다. 이제 각 섹션을 하나씩 살펴보겠습니다. 📚

책 추천 데이터 구조 이해

도서 매칭 시스템의 첫번째 단계는 책 추천 데이터 구조를 이해하는 것입니다. 이 시스템은 각 책을 제목, 저자, 출판사로 구성된 이라는 데이터 구조체로 표현합니다. 예를 들어, "심리학의 모든 것"이란 책은 다음과 같이 표현될 수 있습니다:

이러한 구조는 시스템 내에서 책 데이터의 일관성을 유지할 수 있도록 도와줍니다. 또한, 이는 API를 사용하여 검색된 책 데이터를 변환하는 데 중요한 역할을 합니다.

"도서 매칭 시스템의 효율성은 데이터 구조의 설계에 크게 의존합니다."

API 연동을 통한 검색 결과 요청

두번째 단계는 네이버 책 검색 API를 통해 검색 결과를 요청하는 것입니다. 시스템은 사용자의 질문에 기반하여 GPT 모델이 추천한 책 제목을 네이버 API에 전달하고, 상위 20개의 검색 결과를 요청합니다. 이 과정에서 API의 요소를 효과적으로 활용해야 하며, 다음과 같은 메서드를 통해 작업을 수행합니다:

이 메서드는 사용자가 입력한 제목을 기반으로 최적의 검색 결과를 반환하며, 특히 엣지케이스나 반응속도 문제도 고려하여 설계되어야 합니다. 예를 들어, 공백이나 특수문자 처리를 통해 무결한 데이터를 보장합니다.

매칭 로직 및 유사도 평가 체계

세번째 단계는 매칭 로직과 유사도 평가 체계입니다. 이 시스템은 세 가지 요소에 대한 유사도를 평가하고, 각각의 중요도에 따라 가중치를 부여합니다:

  1. 제목 유사도
  2. 저자 유사도
  3. 출판사 유사도

이렇게 측정된 유사도 점수는 총합산되어 최종 매칭 후보를 결정하는 데 사용됩니다. 예를 들어, 다음과 같은 구조로 유사도를 계산할 수 있습니다:

가중치가 부여된 각 유사도를 통해, 매칭 로직은 모든 유사도 점수를 종합하여 최상의 책을 추천하게 됩니다. 마지막으로, 가장 높은 유사도 점수를 기반으로 추천 리스트를 반환합니다.

💡 결론적으로, 도서 매칭 시스템은 데이터 구조의 설계, 효과적인 API 사용, 그리고 정교한 매칭 루틴을 통해 정확하고 신뢰할 수 있는 책 추천을 가능하게 합니다. 이러한 모든 단계를 통해 최종 사용자에게 성능이 뛰어난 맞춤형 서비스를 제공할 수 있습니다.

👉도서 매칭 시스템 시작하기

검색 결과 반환 로직 구현 및 테스트

도서 매칭 시스템에서의 검색 결과 반환 로직을 설정하는 과정은 여러 중요 단계를 포함합니다. 이 섹션에서는 API 메서드 구현, 테스트 환경 구축, 그리고 비정상 데이터 처리에 대한 트러블 슈팅 과정을 다루겠습니다. 이러한 과정을 통해 데이터의 정확성과 시스템의 신뢰성을 높이는 것이 목표입니다. 📚💻

API 메서드 구현과 반환 데이터 처리

이 시스템의 첫 단계는, 제목, 저자, 출판사로 구성된 구조체를 기반으로 하여 데이터를 처리하는 API 메서드를 구현하는 것입니다. 아래는 이를 위한 간단한 코드 예시입니다:

이 메서드는 네이버 책 검색 API를 호출하여 검색 결과를 반환합니다. 중요한 것은, API 호출이 필수적인 만큼 매칭 시스템의 필수 절차로 판단됩니다. 이 과정에서 최종적으로 1개 이상의 책을 반환받는 것이 핵심입니다. 🌟

테스트 환경 구축: 다양한 케이스 검토

테스트는 시스템 안정성을 보장하기 위해 필수적입니다. gpt로부터 데이터를 받는 과정을 구현하지 않은 상태에서, 웹 기반의 gpt를 통해 예시 데이터를 직접 배열로 추가했습니다. 아래는 테스트 케이스의 구조입니다:

제목 저자 출판사 성공 여부
심리학의 모든 것 필립 짐바르도 시그마프레스 true
삼체 류츠신 자음과모음 true
존재하지않는책 가상의저자 없는출판사 false

테스트 케이스에서 중요한 것은 특정 엣지 케이스 예를 들어, 빈 문자열이나 비정상 입력이 들어왔을 때의 대응을 포함하여 가능성을 최소화하는 것입니다.

“테스트는 단순히 코드를 실행하는 것이 아니다. 결과를 이해하고 분석하는 것이 중요하다.”

트러블 슈팅: 비정상 데이터 처리

실험 결과, API 호출을 통해 일관되게 책 데이터를 반환하지 못하는 상황이 발생했습니다. 검색 결과가 매번 달라지는 이유에 대한 분석이 필요했습니다. 이 문제의 원인은 주로 네트워크 통신과 관련된 에러로, 네이버의 API 요청 제한에 의한 것이었습니다.

API 요청 시 속도 제한을 고려하여 호출 빈도를 조절함으로써 문제를 해결했습니다. 그리고 추가적으로 여러 엣지 케이스에 대한 처리 로직을 추가하였습니다. 예를 들어 빈 문자열 입력 시, nil을 반환하도록 하는 코드를 추가하여 정확성을 높였습니다.

이러한 과정들을 통해 최종적으로 모든 테스트 케이스에서 100%의 검색 성공률을 기록할 수 있었습니다. 🎉 시스템의 안정성을 개선하며, 데이터 무결성을 보장하는 것이 중요합니다.

결론

검색 결과 반환 로직은 도서 매칭 시스템의 핵심입니다. API 메서드 구현, 테스트 환경 구축, 그리고 비정상 데이터 처리는 성공적인 시스템 구축을 위한 필수 요소입니다. 이러한 과정에서 발견된 문제를 해결하며, 본 포스트에서 설명한 내용을 통해 향후 안정적인 시스템 구현을 위한 기초를 다질 수 있었습니다.

👉검색 로직 최적화 방법 보기

엣지 케이스와 데이터 정합성 개선

도서 매칭 시스템을 구현하면서 다양한 엣지 케이스를 고려하고 데이터 정합성을 개선해 나가는 과정은 매우 중요합니다. 이 과정에서 우리는 빈 스트링 처리, 영문 제목의 한국어 검색 문제, 그리고 유사도 평가 함수의 캡슐화와 같은 이슈들에 집중하였습니다. 아래에서 각 하위 섹션을 통해 이들 문제를 어떻게 해결했는지 자세히 살펴보겠습니다.

빈 스트링 처리와 오류 케이스 정리

빈 스트링 처리 여부는 데이터 무결성을 유지하는 데 처음이자 가장 중요한 단계입니다. 빈 값이 검색 요청에 포함될 경우, API에서 발생하는 에러를 방지하기 위해 다음과 같은 로직을 추가했습니다.

위의 코드가 실행되면, 빈 스트링을 입력받는 경우 에러를 발생시키지 않고 빈 배열을 반환하게 함으로써 이후의 데이터 처리를 원활하게 합니다. 또한, 데이터 검색 중 에러가 발생하는 다양한 엣지 케이스도 정리했습니다.

"예외 처리는 보험과 같다. 소중한 데이터를 지키려면 반드시 필요하다!"

이렇게 빈 값과 예상치 못한 입력을 처리함으로써 시스템의 안정성을 높일 수 있었습니다.

영문 제목 한국어 검색 문제 해결

영문 책 제목을 한국어로 검색하는 경우가 자주 발생했습니다. 이러한 문제를 해결하기 위해, 시스템이 영문 제목과 저자를 함께 요청할 수 있도록 프롬프트를 수정했습니다. 예를 들어:

이런 방식으로 프롬프트를 개선하자 검색 API에서 더 정확한 결과를 받을 수 있었습니다. 이를 통해 모든 테스트 케이스에서 검색 API로부터 데이터 하나 이상을 확보하며 100% 성공률을 달성했습니다.

유사도 평가 함수 캡슐화

유사도 비교는 도서 매칭 시스템에서 중요한 부분으로, 이를 효과적으로 캡슐화하여 로직을 모듈화하는 것이 목표였습니다. 아래와 같이 유사도 평가를 위한 함수를 모듈화했습니다.

이로 인해 유사도 평가 로직을 중앙 집중화하여 가독성을 높이고, 향후 다른 시스템에서도 재사용할 수 있는 기능으로 발전시킬 수 있었습니다. 캡슐화는 코드를 더욱 유지보수하기 쉽게 만들며, 향후 필요에 따라 쉽게 수정 및 확장이 가능합니다.


이러한 세 가지 개선 과정은 우리 도서 매칭 시스템의 정확성을 높이고 불필요한 오류를 줄이는 데 큰 역할을 했습니다. 엣지 케이스를 다루고 데이터 정합성을 개선하는 과정에서 우리는 시스템의 안정성신뢰성을 한층 더 끌어올릴 수 있었습니다. 📚🔍

👉엣지 케이스 확실하게 해결하기

GPT 연동 및 유사도 측정 구현

도서 매칭 시스템의 핵심 요소인 GPT 연동 및 유사도 측정 구현은 정확한 비슷한 책을 추천하기 위한 중요한 단계입니다. 이 과정에서는 추천 알고리즘 설계와 매칭 로직, 유사도 분석 전략, 그리고 성능 개선을 위한 테스트 결과 분석을 다룰 것입니다.

추천 알고리즘 설계 및 매칭 로직

책 추천을 위해 GPT에서 1~3개의 도서 데이터를 반환받고, 그를 바탕으로 사용자에게 적합한 도서 리스트를 제공하는 시스템을 설계했습니다. 매칭 로직은 다음과 같은 단계로 구성됩니다:

  1. GPT API 호출: 사용자의 질문을 바탕으로 GPT에 책 추천을 요청합니다.
  2. 네이버 책 검색 API 연동: GPT가 제공한 책 제목으로 네이버 책 검색 API를 호출하고, 상위 20개의 검색결과를 요청합니다.
  3. 유사도 측정:
  4. 제목, 저자, 출판사 간의 유사도를 각각 계산합니다.
  5. 각 유사도 점수에 대해 중요도에 따라 가중치를 부여합니다.

이러한 과정을 거쳐 최종적으로 가장 유사도가 높은 검색결과를 최종 반환합니다.

"추천 시스템의 성공은 유사도 측정의 정확성에 달려있다."

유사도 분석을 위한 전략 설계

유사도 분석을 효과적으로 수행하기 위한 전략으로는 다음과 같은 방법을 적용했습니다:

  • Exact Match Strategy: 정확히 일치하는 경우 1.0의 점수를 주는 전략입니다. 이 방법은 뒤섞이기 쉬운 유사도 기준을 정리하는 데 도움을 줍니다.
  • Contains Strategy: 특정 단어가 포함되어 있는지를 기준으로 유사도를 점수화합니다.
  • Levenshtein Distance Algorithm: 문자열 간의 차이를 수치화하여 유사도를 계산하는 알고리즘입니다. 이는 공백이나 특수문자, 오타 등에 유연하게 대처할 수 있는 장점이 있습니다.

이러한 다양한 전략 방식을 통해 시스템의 유연성과 강력함을 극대화하고 있습니다.

성능 개선을 위한 테스트 결과 분석

테스트를 통해 각 유사도 측정 방법의 성능을 분석하였습니다. 초기 테스트에서 Exact Match Strategy와 Contains Strategy를 적용해본 결과 각각 58%와 66%의 정확도를 기록했습니다. 이러한 수치는 만족스럽지 않았으므로, Levenshtein Distance 알고리즘을 도입하여 유사도 연산의 정밀도를 높이는 방향으로 개선했습니다.

결과적으로, 새로운 전략을 도입한 후 평균 75%의 테스트 성공률을 보이며, 17% 이상의 성능 개선을 이끌어냈습니다. 이러한 성과들은 시스템이 더욱 성숙해지며 사용자에게 보다 정확한 추천을 가능하게 할 것입니다.

이 과정을 통해 우리는 유사도 측정의 중요성을 다시 한 번 확인할 수 있었으며, 교육용 시스템에 있어서 가장 정확한 결과를 도출할 수 있도록 지속적으로 개선할 계획입니다. 🚀

전략 정확도 (%)
Exact Match Strategy 58
Contains Strategy 66
Levenshtein Distance 75

위의 표는 각 전략별 테스트 결과를 정리한 것입니다. 앞으로도 이러한 데이터를 기반으로 지속적으로 시스템을 보완해 나가겠습니다. 😊

👉유사도 측정 전략 확인하기

시스템 고도화와 향후 과제

도서 매칭 시스템의 품질을 향상시키기 위해서 여러 가지 최적화 및 리팩토링 작업을 진행해야 합니다. 여기서는 API 최적화 및 재설계, 데이터 정확성을 높이기 위한 설정 변경, 그리고 미해결 문제 및 차선책 개발에 대해 심도 있는 논의를 진행하겠습니다. 🚀

API 최적화 및 재설계

API는 시스템의 핵심 요소 중 하나로, 효율적이고 신뢰성 있게 작동하여야 합니다. 특히, 네이버 책 검색 API 호출 속도가 중요한 요소로 작용하고 있습니다. 예를 들어, 1초에 10번 이상의 요청을 초과할 경우 오류가 발생하기 때문에, 적절한 요청 간격을 두고 API를 호출해야 합니다. 이를 위해 비동기 요청 처리에러 핸들링을 강화하여 시스템의 안정성을 높일 수 있습니다.

“API의 성능 최적화는 시스템의 전체 성능을 좌우합니다.”

그 외에도, 검색 결과의 다각화를 위해 제목뿐만 아니라 저자 필드를 활용한 검색 결과 도출을 고려할 수 있습니다. 이를 통해, 사용자가 원하는 책을 더 잘 찾아줄 가능성을 높일 수 있겠죠. 📚

데이터 정확성을 높이기 위한 설정 변경

데이터의 정확성은 시스템의 신뢰성과 직결됩니다. 현재 도서 매칭 시스템에서 몇 가지 엣지 케이스를 처리하기 위해 설정 변경이 필요합니다.

  • 부제가 잘못된 경우의 처리:
    부제가 포함된 제목을 검색할 때, 부제를 제거한 주제목으로 검색하는 로직을 추가해야 합니다. 예를 들어, 제목에 특수문자가 포함되어 있을 경우, 부제로 간주하여 제목만 재검색하게 할 수 있습니다.
  • 에러 처리 강화:
    빈 제목이나 잘못된 저자명에 대한 예외 처리를 통해 검색 결과가 없을 때도 적절히 대처할 수 있도록 해야 합니다. 이를 통해 전반적인 데이터 무결성을 강화할 수 있습니다.
처리 항목 문제 상황 해결 방안
반응형
LIST