Firebase Hosting
Web Static Asset 들을 무료로 호스팅 가능함. CDN 설정과 HTTPS 까지 자동으로 설정한다.
Cloud Run
완전 관리형 방식의 Docker Container serverless 플랫폼이다.
사용량에 따른 초당 과금 방식으로 비용을 지불한다. 우리 서비스는 free tier 에서 사용 가능
Docker Container
코드가 실행 환경에 상관없이 동일하게 실행 할 수 있는 Linux Container 서비스.
일종에 가상화인데 Host OS 의 커널을 사용한다는 점에서 다른 가상화와 다르고 더 가벼움
Flask
Micro web framework
Tensorflow
Pytorch
Controller
Flask 를 이용해서 HTTP 요청을 처리함.
HTTP 요청을 받아서 클라이언트로부터 전송된 쿼리를 토대로 Classifier
, BERT_Similarity
등의 모듈을 호출해서 추천 결과를 유저에게 응답함.
Classifier
위의 페이지에 기술된 라벨로 사용자의 쿼리를 분류하는 기능을 함.
BERT_similarity
https://huggingface.co/sentence-transformers/paraphrase-xlm-r-multilingual-v1
위의 모델을 이용해서 사용자의 입력을 임베딩 하고 cosine 유사도 분석을 통해 dataset 에서 입력과 가장 유사한 문장 3개를 추론함. (label 안에서)
리뷰 텍스트는 review.csv
로부터 가져오고 데이터셋 리뷰들의 임베딩 데이터는 bert_vec.csv
에서 불러온다. 데이터셋은 미리 임베딩 해놓아서 쿼리가 들어올때마다 처리하지 않도록 한다.
Return
[
{
"review": "This perfume is..",
"accords": ["spicy", "tabacco", "aquatic"],
},
...
]
Doc2Vec_similarity, FastText_similarity, Finetuned_similarity
위의 모델을 이용해서 사용자의 입력을 임베딩 하고 cosine 유사도 분석을 통해 dataset 에서 입력과 가장 유사한 문장 3개를 추론함.
데이터 셋의 임베딩 데이터는 doc2vec.csv
에 미리 저장해놓고 로드해서 사용한다.
Interface 는 BERT_similarity
와 같음.
Word2Vec_similarity
위의 모델을 이용해서 사용자의 입력을 임베딩 하고 cosine 유사도 분석을 통해 dataset 에서 입력과 가장 유사한 문장 3개를 추론함.
데이터 셋의 임베딩 데이터는 word2vec.csv
에 미리 저장해놓는다.
Interface 는 BERT_similarity
와 같음.
WordRank_Keywords
사용자의 입력 문장과 similarity 모듈을 통해서 추론한 유사문장을 입력받아서 웹페이지에서 마스킹 할 부분의 index 와 컬러를 정해서 반환함.
Return
{
text: "Hello world my friends",
highlight: [
{
"color": "#00FF00",
"word": "향수"
},
{
"color": "#0000FF",
"word": "좋은"
}
],
}
Preprocessor
텍스트 데이터를 토큰화, 짧은 단어 제거, stopwords 제거, 어간 추출 등을 하는 전처리기.
모듈마다 전처리가 다르면 결과도 다를수밖에 없으므로 전처리 된 데이터를 사용해야 한다면 꼭 이 모듈의 전처리기를 사용한다.
list<string>
: 전처리된 text 데이터BaseURL - 배포 시 생성
Request (JSON)
{
"query": "This is gorgeous perfume...."
}