어떤 데이터셋에도 적용 가능한 "Amazon 스타일" AI 리뷰 요약기 구축 (NLP, Transformers, Streamlit)
요약
어떤 데이터셋에도 적용 가능한 'Amazon 스타일'의 AI 리뷰 요약 엔진 NEXUS 구축 과정을 소개합니다. Bi-LSTM 베이스라인, DeBERTa-v3를 활용한 감정 분석, 그리고 LLM의 환각을 방지하기 위한 결정론적 요약 엔진 아키텍처를 다룹니다.
핵심 포인트
- Bi-LSTM과 Sentiment140을 활용한 맞춤형 딥러닝 베이스라인 구축
- DeBERTa-v3 및 RoBERTa를 이용한 정밀한 제로샷 감정 분석 파이프라인
- LLM 환각 방지를 위해 Regex와 Pandas를 결합한 결정론적 요약 엔진 설계
- Streamlit과 커스텀 CSS를 활용한 프리미엄 프론트엔드 구현
Amazon에서 볼 수 있는 새로운 AI 생성 리뷰 요약들을 보신 적이 있나요? 구매자들에게 매우 유용하지만, 한 가지 문제가 있습니다. 바로 Amazon의 생태계 안에 완전히 갇혀 있다는 점입니다.
만약 당신이 흩어져 있는 5,000개의 App Store 리뷰, Shopify 댓글, 또는 Zendesk 티켓을 분석하려는 개발자, PM, 또는 데이터 과학자라면, 여전히 수동으로 작업하거나 기본적인 워드 클라우드 (Word Cloud)에 의존해야 하는 상황에 처해 있을 것입니다.
저는 이를 해결하고 싶었습니다. 그래서 저는 어떤 데이터셋에도 정확히 그 "Amazon 스타일"의 AI 분석을 제공하는 프로덕션급 리뷰 인텔리전스 엔진(Review Intelligence Engine)인 NEXUS 🧠를 구축했습니다.
아키텍처와 제가 이를 어떻게 구성했는지에 대한 심층 분석을 소개합니다. 👇
🏗️ 1. 딥러닝 베이스라인 (Deep Learning Baseline)
거대한 사전 학습된 모델 (Pre-trained models)로 바로 뛰어들기 전에, 강력하고 맞춤화된 베이스라인을 구축하고자 했습니다.
데이터: Sentiment140 데이터셋 (160만 개의 레코드)으로 학습되었습니다.
아키텍처: TensorFlow/Keras를 사용하여 맞춤형 딥 양방향 LSTM (Bidirectional LSTM)을 구축했습니다. 깊은 문맥적 시퀀스 (Contextual sequences)를 포착하기 위해 128차원 임베딩 (Embedding) 레이어를 활용하고 Bi-LSTM을 쌓았습니다.
최적화: 과적합 (Overfitting)을 방지하기 위해 공격적인 드롭아웃 (Dropout, 0.5) 레이어를 사용하였고, 검증 손실 (Validation loss)에 따른 조기 종료 (EarlyStopping)를 적용하여 동적으로 학습을 중단하고 최적의 가중치를 복원했습니다.
🤖 2. 트랜스포머 추론 파이프라인 (Transformer Inference Pipelines)
라이브 앱에서 제로샷 분류 (Zero-shot classification)와 세밀한 감정 분석을 달성하기 위해, 가벼운 HuggingFace 파이프라인을 메모리에 직접 로드했습니다:
감정 (Sentiment): 매우 정확한 제로샷 분류 (Positive, Neutral, Negative)를 위해 DeBERTa-v3를 사용했습니다.
감정 지형 (Emotional Topography): 28가지 미세 감정을 추출하기 위해 RoBERTa-go_emotions를 사용했으며, 이를 휴리스틱 점수 (기쁨, 좌절, 긴급성, 해결)로 매핑했습니다.
⚙️ 3. "Amazon 스타일" 인텔리전스 엔진
가장 큰 도전 과제는 이것이었습니다: DistilBART와 같은 무거운 생성형 LLM은 엄청난 RAM을 소비하며 환각 (Hallucination) 현상이 발생하기 쉽습니다.
요약을 작성하기 위해 순수하게 LLM에만 의존하는 대신, 저는 결정론적(Deterministic)인 Component-Impact Engine을 작성했습니다. 이 엔진은 Regex(정규 표현식)와 Pandas를 사용하여 문장을 청크(Chunk) 단위로 나누고, 하드웨어/소프트웨어 구성 요소(배터리, 화면, 소프트웨어, 포트 등)를 추출하며, 각 요소의 실패/찬사 비율을 계산하여 자연어 요약을 동적으로 합성합니다.
그 결과물은 무엇일까요? 바로 엔지니어링 팀이 확인해야 할 핵심 내용입니다: "고객들은 화면과 UI를 크게 찬양하지만, 배터리 수명에 대해서는 깊은 불만을 표현하고 있습니다."
✨ 4. 프론트엔드 UX/UI
Streamlit은 Python 개발자들에게 환상적이지만, 기본 설정 상태로는 다소 평범해 보일 수 있습니다. 저는 프리미엄하고 광택이 나는 느낌을 원했습니다. 그래서 수백 줄의 커스텀 CSS를 주입하여 기본 DOM을 오버라이드(Override)했고, 애니메이션 마이크로 인터랙션(Micro-interactions), 그라데이션 테두리, 커스텀 Plotly 차트를 활용하여 "글래스모피즘 (Glassmorphism)" 미학을 구현했습니다.
NEXUS는 단순히 리뷰가 "부정적"이라고 말하는 데 그치지 않습니다. 엔지니어링 팀이 무엇이 고장 났는지 정확히 파악하여 더 빠르게 수정 사항을 반영할 수 있도록 알려줍니다.
여러분의 의견을 듣고 싶습니다! 여러분의 감성 분석(Sentiment) 프로젝트에서 DeBERTa와 커스텀 Bi-LSTM 중 무엇을 실험해 보셨나요? 댓글로 함께 이야기해 봅시다! 💬
링크- https://sentimentanalyser-ucccl9ut869ugpmqid2ttg.streamlit.app/
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기