9,294개를 287개로 매칭한 실전 가이드
영문 푸시 메시지 287개에 대응하는 국문을 찾자.
간단해 보이는 요청이어요. 하지만 정리되지 않은 국문 푸시 메시지를 보니, 9,294개가 있었죠. 내려도 내려도 끝이 보이지 않았어요. 거의 무한 스크롤링이었죠. 왜 그런가 했더니, 중복된 메시지가 많았어요. 한 예를 들자면 다음과 같아요.
'배터리가 부족합니다.'
'배터리 잔량이 낮습니다.'
'배터리량이 부족합니다.'
같은 의미의 메시지가 미묘하게 다른 표현으로 수십 번씩 반복되었어요. 처음에는 이걸 어떻게 찾아내고 줄이지? 수동으로 하려면 몇 달이 걸릴지 예상을 할 수가 없었어요. 사실, 제가 처음 입사했을 때부터 해결해야 하는 문제였는데, 미루고 있던 거였죠.
추가로 중복을 찾고 287개의 영문과 매칭한다? 현실적으로 불가능한 일이었죠. 마침, AI와 많은 일을 하고 있었기에 '도움을 받으면 어떨까?'라는 생각으로 시작했어요. 제게는 Local Agent가 심어져 있는 VS Code가 있었거든요.
- 1단계: AI에게 문제를 설명하고 전략 수립
가장 먼저 VS Code에 심어둔 Claude와 전략을 수립했어요. "국문 푸시 메시지 9,294개가 있는데 중복이 많아 보여. 어떻게 정리하면 좋을까?"라고 물었죠. Claude는 즉시 여러 접근법을 제시했어요.
- 완전 일치 제거
- 의미적 유사도 기반 그룹화
- 키워드 기반 분류
- 수동 검토 영역 최소화
일단 수동 검토는 패스했어요. 의미가 없으니까요. 완전 일치 제거도 해봤어요. 하지만 실패, 영문과 매칭 자체가 잘 안 됐어요. 결국, '의미적 유사도 기반 그룹화'를 선택했고, Claude에게 "Python으로 자동화 스크립트를 만들어줘"라고 요청했어요.
- 2단계: AI가 생성한 코드로 첫 번째 중복 제거
Claude가 Python 스크립트를 작성해줬어요. openpyxl로 Excel 파일을 읽고, difflib.SequenceMatcher로 텍스트 유사도를 계산하고, 80% 이상 유사한 메시지를 하나의 그룹으로 묶는 코드였죠. (사실 뭐라 그러는지 몰랐음)
저는 이 코드를 복사해서 그대로 실행했어요. 결과는? 9,294개가 507개로 줄어들었어요. 94.5% 감소. 평균적으로 하나의 메시지가 18번씩 중복되어 있었다는 의미였죠.
- 3단계: 기존 데이터와 교차 검증
기존 데이터 교차 검증이 필요하다고 생각했어요. 엑셀의 기능을 활용해, 중복된 메시지를 우선 제거했죠. 결과는 480개, 이걸 기반으로 "이미 정리된 중복 제거 문구 480개 파일이 있어"라고 Claude에게 말했어요. Claude는 즉시 "두 파일을 비교해서 추가 중복을 찾는 스크립트"를 만들어줬어요.
실행 결과, 507개에서 353개로 다시 줄어들었죠. 최종적으로 96.2%의 중복 제거에 성공했어요.
- 4단계: DeepL API를 활용한 번역 매칭
이제 진짜 요청을 해결할 때가 됐어요. 국문 353개와 영문 287개를 매칭해야 했죠. 제가 Claude에게 물었어요.
"국문과 영문을 어떻게 매칭하지?"
Claude는 1) DeepL API로 국문을 영문으로 번역, 2)번역된 영문과 실제 영문의 유사도 계산, 3) 가장 유사한 쌍을 찾기 를 제안했어요.
저는 DeepL API 키를 발급받고 Claude에게 알려줬어요. Claude는 DeepL API를 호출하는 Python 스크립트를 작성해줬구요.
그런데 문제가 생겼어요. 실행하니 403 에러가 발생했어요. 저는 에러 메시지를 복사해서 Claude에게 보여줬어요. Claude가 즉시 분석하더라고요. "DeepL이 인증 방식을 변경했네요. form body 대신 header 방식으로 바꿔야 합니다."라고 말하더군요.
Claude가 수정된 코드를 제공했고, 이번에는 성공했어요. 353개 국문이 영문으로 번역되고 287개 영문과 비교 분석했어요. 하지만? 매칭률은 겨우 16.4%에 불과했어요.
- 5단계: 양방향 매칭으로 정확도 향상
처음에는 매칭률이 너무 낮아서 의문이 들더라고요. 저는 분명, 두 가지 방식을 제안했거든요. 1) 영문을 국문으로 번역해 매칭하는 방식과 2) 국문을 영문으로 번역해 매칭하는 방식이요. "매칭률이 너무 낮은데?"라고 물었더니, Claude가 역방향은 아직 안 했다고 하더라고요. 즉, 영문을 국문으로 번역해 매칭하는 하나의 방식만 한 거예요.
저는 다시 Claude에게 요청했어요.
"역방향도 시도해줘."
Claude는 즉시, 역방향도 시작했고, 놀랍게도 역방향 매칭률은 44.3%였습니다. 마지막으로 "양방향 결과를 통합해줘"라고 요청했어요. 129개의 신뢰도 높은 매칭을 확보했어요. 하지만 여전히 불만족스러운 결과였어요.
- 6단계: 1:1 매칭 완성
마지막으로 "영문 287개 모두에 국문을 매칭해야 해. 중복 없이 1:1로."라고 요청했어요. 이게 가장 어려운 요청이었는데요. Claude는 최적화 알고리즘을 제안했어요.
'287개 영문 각각을 353개 국문 모두와 비교 (101,211개 조합)'
- 유사도순으로 정렬
- 높은 점수부터 선택하되, 이미 사용된 영문/국문은 제외
약 1분 후, 287개의 완벽한 1:1 매칭이 완성되었어요. 사실, 여전히 신뢰도는 낮아요. 결국 수동으로 검토를 해야 하는데, 그나마 신뢰도 기반으로 어떤게 더 나은지 우리가 찾아보면 되는 거죠.
- 내가 한 일
1) 문제를 설명하고, 2) 파일 경로를 제공하고, 3) 중간 결과를 확인하고, 4) 오류 메시지를 전달하며 수정을 요청하고, 5) Prompt를 새로 생성하며 최적화를 했을 뿐이에요.
- Claude가 한 일
Claude는 내 요청에 따라 1) 전략을 수립하고, 2) Python 코드를 작성하고, 3) 오류를 디버깅하고, 4) 코드를 수정하고 최적화해줬으며, 5) Excel 파일을 생성해 통계 분석 결과를 알려줬어요.
- 이 상호 작용의 핵심은 뭘까?
'AI와의 대화였어요.' "이게 왜 안 돼?"라고 물으면 Claude가 분석하고 해결책을 제시했어요. 제 물음에 대해 대안도 제시해줬죠. 진짜 현명한 동료와 일하는 느낌이 들었어요.
1) 9,294개 → 353개: 96.2% 중복 제거
2) 287개 영문 완전 1:1 매칭: 중복 없음
3) 작업 시간: 수동 40시간 → 실제 2시간
4) 5개의 분석 Excel 파일 (각 파일은 유사도별 색상 코딩, 통계 시트, 사용 가이드까지 포함되어 있었어요.)
5) 재사용 가능한 프로세스를 얻었어요. Claude와의 대화 히스토리가 템플릿이죠.
6) AI 협업의 실제 가치도 얻었어요. 저는 Python을 깊이 알지 못해요. 하지만 Claude에게 "이런 결과를 원해"라고 말하면, Claude가 코드를 작성했죠. 제가 한 일은 복사-붙여넣기-실행뿐이었어요.
7) 시행착오가 빨랐어요. DeepL API 에러가 났을 때, Stack Overflow를 검색하거나 문서를 읽을 필요가 없었어요. 에러 메시지를 Claude에게 보여주면 즉시 해결책이 나왔죠.
8) 점진적 개선이 쉬웠어요. "이건 됐고, 이제 저것도 해줘"라고 계속 요청하면서 결과물을 발전시켰어요. 처음부터 완벽한 계획을 세울 필요가 없었죠.
9) 학습이 동시에 일어났어요. Claude가 생성한 코드를 보면서 "아, SequenceMatcher는 이렇게 쓰는구나", "DeepL API는 이런 방식으로 호출하는구나"를 자연스럽게 배웠어요. 물론 여전히 잘 몰라요.
- 한계와 배운 점
AI는 마법이 아니에요. Claude도 처음에 form body 방식으로 DeepL을 호출했다가 실패했어요. 저는 에러를 확인하고 다시 요청해야 했죠. 즉, 사람의 판단은 여전히 필요해요. 또한, "80% 유사도를 기준으로 할까, 70%로 할까?" "양방향 매칭을 해야 할까?" 같은 결정은 제가 했죠.
핵심은 '명확한 요청'이에요. "매칭해줘"보다 "영문 287개 각각에 중복 없이 국문 1개씩 1:1로 매칭해줘"가 훨씬 좋은 결과를 만들었어요.
이 프로젝트를 통해 깨달은 것은, AI를 "도구"로 보면 그 가치의 10%만 활용하는 것이라는 점이에요. AI를 "함께 일하는 동료"로 보면 가능성이 완전히 달라져요.
제가 한 일은 문제를 정의하고, 중간 결과를 확인하고, 방향을 조정하는 것이었어요. Claude가 한 일은 기술적 구현, 코드 작성, 에러 해결이었고요. 각자 잘하는 영역에 집중하며 '우리는 협업'했어요.
40시간 걸릴 작업을 2시간 만에 끝냈다는 것보다 중요한 것은, 이 과정이 전혀 고통스럽지 않았다는 것인데, 오히려 즐거웠어요. "이것도 되나?", "저것도 해볼까?" 하며 대화하듯 작업했어요.
여러분도 반복적이고 시간 소모적인 작업을 마주한다면, AI에게 물어보세요. "이거 자동화할 수 있어?"라고 말이죠. 그게 곧 여러분이 AI에 빠지게 되는 시점이라고 할 수 있어요. 저는 이미 여러 가지 AI를 쓰고 있는데, 대표적으로 1) Vooster.ai 2) Supanova 3) Antigravity 4) Local Agent 5) Figma Make를 열심히 활용하고 있어요. 추가로, OpenClaw를 어떻게 사용할 수 있을지 고민 중이에요.