이 프로젝트는 다양한 플랫폼에서 데이터를 가져와 사용자의 피드백을 기반으로 개인화된 추천을 제공하는 Flask 웹 애플리케이션입니다. 주된 특징과 사용된 기술 스택은 다음과 같습니다.
-
플랫폼:
- 네이버 뉴스
- 구글 뉴스
- 인스타그램
- 틱톡
- 트위치
- 유튜브
- 클리앙
- 인벤
-
기술: Playwright를 사용한 웹 스크래핑과 비동기 방식으로 빠르게 데이터를 수집.
- 모델:
- 텍스트 모델:
SentenceTransformer(xlm-r-100langs-bert-base-nli-stsb-mean-tokens)
- 이미지 모델:
CLIPProcessor및CLIPModel(openai/clip-vit-base-patch32)CLIP-ViT-L-14
- 기능:
- 텍스트 임베딩:
SentenceTransformer모델을 활용하여 텍스트를 벡터화.- 텍스트 데이터를 입력받아 고차원 벡터로 변환, 각 벡터는 텍스트 간 의미적 유사성을 반영.
- 이미지 임베딩:
CLIPProcessor및CLIPModel을 사용하여 이미지 데이터를 벡터화.- 썸네일 이미지와 같은 시각적 데이터를 텍스트 임베딩과 결합하여 다차원적으로 분석.
- 멀티모달 임베딩:
- 텍스트와 이미지 벡터를 결합하여 단일 벡터로 통합.
- 텍스트와 이미지를 모두 활용하여 더 정교한 추천 결과를 생성.
- 유사도 분석:
cosine similarity를 통해 사용자가 좋아하거나 싫어한 콘텐츠와 새로운 콘텐츠 간의 유사성을 계산.- 유사도 점수가 높은 콘텐츠를 선별하여 추천 목록에 포함.
- 텍스트 임베딩:
- 텍스트 모델:
- 사용자의 긍정 및 부정 피드백을 수집하여 추천 결과를 지속적으로 업데이트.
- 비슷한 콘텐츠를 실시간으로 추천.
- 콘텐츠를 카테고리별로 정리하여 사용자 검색 및 탐색을 용이하게 함.
- 스크래핑한 이미지와 데이터를 로컬에 캐싱하여 효율성을 향상.
- 텍스트와 이미지 데이터를 결합하여 멀티모달 임베딩 생성.
- 텍스트 데이터(
SentenceTransformer)와 이미지 데이터(CLIPProcessor,CLIPModel)를 통합하여 더 나은 추천 제공.
- Flask: 웹 애플리케이션 프레임워크
- Playwright: 비동기 웹 스크래핑
- Torch: 딥러닝 모델 처리
- SentenceTransformers: 텍스트 임베딩 생성
- Hugging Face 생태계 기반으로 설계된 라이브러리로, 다양한 프리트레인 모델 지원.
- NLP 작업에 최적화되어 문장 간 의미적 유사성을 계산.
- Transformers: Hugging Face의 강력한 라이브러리로 다양한 언어 및 비전 모델 제공.
CLIPModel과 같은 멀티모달 모델 활용.
- Scikit-learn: 코사인 유사도 계산
asyncio및aiohttp: 비동기 데이터 처리
플랫폼별로 비동기 함수가 정의되어 있으며, 각 함수는 다음을 포함합니다:
- 데이터 스크래핑 로직
- 콘텐츠 구조화
- 썸네일, 제목, 링크 등의 필드 수집
사용자가 좋아하거나 싫어한 콘텐츠에 따라:
- 피드백 데이터를 활용하여 사용자 선호를 학습.
- 임베딩 기반 유사도 분석으로 개인화된 추천 제공.
- Flask 템플릿을 사용하여 웹 인터페이스 제공.
- 사용자 피드백 (좋아요/싫어요)을 폼을 통해 수집.
- 필수 패키지 설치:
pip install -r requirements.txt- Flask 애플리케이션 실행:
python run.py- 웹 브라우저에서 다음 주소로 접속:
http://127.0.0.1:5000
{
"id": 1,
"title": "추천 콘텐츠 제목",
"category": "Community",
"link": "https://example.com",
"thumbnail_url": "https://example.com/thumbnail.jpg",
"embeddings": [0.1, 0.2, 0.3, ...]
}{
"liked": ["좋아하는 콘텐츠 제목"],
"disliked": ["싫어하는 콘텐츠 제목"]
}- 확장 가능한 구조로 다양한 플랫폼의 데이터를 통합.
- GPU를 활용한 임베딩 처리를 통해 효율적인 계산.
- 사용자 피드백을 적극적으로 활용하여 점진적인 성능 개선.

