From 70f019d61534ed92d36c472d2f541580affcc279 Mon Sep 17 00:00:00 2001 From: JIYEON HWANG Date: Thu, 31 Jul 2025 11:20:55 +0900 Subject: [PATCH 1/4] =?UTF-8?q?chore[#21]=20:=20gitignore=EC=97=90=20?= =?UTF-8?q?=EB=AA=A8=EB=8D=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index f8d60a6..3215ec0 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,5 @@ __pycache__/ *.log # w2v 모델 -GoogleNews-vectors-negative300.bin.gz \ No newline at end of file +GoogleNews-vectors-negative300.bin.gz +node2vec.model \ No newline at end of file From 95147321cb057dea41cdc62ad39ef90c9a0d5bd5 Mon Sep 17 00:00:00 2001 From: JIYEON HWANG Date: Thu, 31 Jul 2025 11:21:48 +0900 Subject: [PATCH 2/4] =?UTF-8?q?chore[#21]=20:=20CI=20=EC=8B=9C=20=EB=AA=A8?= =?UTF-8?q?=EB=8D=B8=20=EA=B2=BD=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index de45645..cae47b0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,7 +26,7 @@ jobs: echo "DB_USERNAME=testuser" >> .env echo "DB_PASSWORD=testpass" >> .env echo "DB_NAME=testdb" >> .env - echo "W2V_MODEL_PATH=./app/assets/word2vec.model" >> .env + echo "W2V_MODEL_PATH=./app/assets/node2vec.model" >> .env echo "MONGO_URL=mongodb://localhost:27017" >> .env echo "DEV_REDIS_HOST=localhost" >> .env echo "DEV_REDIS_PORT=6379" >> .env From 7301db74c2fe3ddf69bfb03944397f59958ff598 Mon Sep 17 00:00:00 2001 From: JIYEON HWANG Date: Thu, 31 Jul 2025 11:22:32 +0900 Subject: [PATCH 3/4] =?UTF-8?q?refactor[#21]=20:=20=ED=81=B4=EB=A6=AD?= =?UTF-8?q?=EC=97=90=20=EB=8C=80=ED=95=9C=20=EA=B0=80=EC=A4=91=EC=B9=98=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/weight_strategy.py | 47 +++++++++++++++++---------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/app/services/weight_strategy.py b/app/services/weight_strategy.py index 4f7ebc1..280d8d1 100644 --- a/app/services/weight_strategy.py +++ b/app/services/weight_strategy.py @@ -1,25 +1,26 @@ from app.enum.action_type import ActionType -def convert_to_weight(type : ActionType, value : float) -> float : - if type == ActionType.CLICK: - return 0.2 - if type == ActionType.LIKE: - return 0.1 - if type == ActionType.WATCH: - if 30 <= value <= 50: - return 0.1 - if 50 <= value <= 70: - return 0.2 - if 70 <= value: - return 0.3 - else: - return 0 - if type == ActionType.RATING: - if value <= 2: - return 0 - if value == 3: - return 0.2 - if value == 4: - return 0.3 - if value == 5: - return 0.4 + +def convert_to_weight(type: ActionType, value: float) -> float: + if type == ActionType.CLICK: + return 0.05 + if type == ActionType.LIKE: + return 0.1 + if type == ActionType.WATCH: + if 30 <= value <= 50: + return 0.1 + if 50 <= value <= 70: + return 0.2 + if 70 <= value: + return 0.3 + else: + return 0 + if type == ActionType.RATING: + if value <= 2: + return 0 + if value == 3: + return 0.2 + if value == 4: + return 0.3 + if value == 5: + return 0.4 From 69890f29c8cbfdeba905205485ae062438bd2b2a Mon Sep 17 00:00:00 2001 From: JIYEON HWANG Date: Thu, 31 Jul 2025 11:23:09 +0900 Subject: [PATCH 4/4] =?UTF-8?q?refactor[#21]=20:=20=EC=83=88=EB=A1=9C?= =?UTF-8?q?=EC=9A=B4=20=EC=9E=84=EB=B2=A0=EB=94=A9=20=EB=AA=A8=EB=8D=B8?= =?UTF-8?q?=EB=A1=9C=20=EA=B5=90=EC=B2=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/db_w2v_mapper.py | 14 +++++++++++--- app/models/word2vec_model.py | 6 +++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/app/models/db_w2v_mapper.py b/app/models/db_w2v_mapper.py index 6ff00d0..0b2d61f 100644 --- a/app/models/db_w2v_mapper.py +++ b/app/models/db_w2v_mapper.py @@ -6,7 +6,7 @@ "가족": "Family", "코미디": "Comedy", "애니메이션": "Animation", - "SF": "SF", + "SF": "Science Fiction", "다큐멘터리": "Documentary", "판타지": "Fantasy", "드라마": "Drama", @@ -24,5 +24,13 @@ } -def translate_genre(korean_genre: str) -> str: - return _genre_mapping.get(korean_genre, korean_genre) +def translate_genre(genre: str) -> str | None: + genre = genre.strip() + + if genre in _genre_mapping: + return _genre_mapping[genre] + + if genre in _genre_mapping.values(): + return genre + + return genre diff --git a/app/models/word2vec_model.py b/app/models/word2vec_model.py index 296cf4b..6bcf831 100644 --- a/app/models/word2vec_model.py +++ b/app/models/word2vec_model.py @@ -1,4 +1,4 @@ -from gensim.models import KeyedVectors +from gensim.models import Word2Vec class Word2VecModel: @@ -8,7 +8,7 @@ class Word2VecModel: def load_model(cls, model_path: str): if cls._model is None: print("모델 로딩 중...") - cls._model = KeyedVectors.load_word2vec_format(model_path, binary=True) + cls._model = Word2Vec.load(model_path) print("모델 로드 완료!") return cls._model @@ -16,7 +16,7 @@ def load_model(cls, model_path: str): def get_vector(cls, word: str): if cls._model is None: raise RuntimeError("모델이 아직 로드되지 않았습니다.") - return cls._model.get_vector(word) + return cls._model.wv.get_vector(word) @classmethod def similarity(cls, word1: str, word2: str) -> float: