Spaces:
Running on Zero
Running on Zero
Update semantic_breed_recommender.py
Browse files
semantic_breed_recommender.py
CHANGED
|
@@ -26,29 +26,27 @@ from smart_breed_filter import apply_smart_filtering
|
|
| 26 |
|
| 27 |
class SemanticBreedRecommender:
|
| 28 |
"""
|
| 29 |
-
增強的基於 SBERT 的語義品種推薦系統
|
| 30 |
-
為狗品種推薦提供多維度自然語言理解
|
| 31 |
"""
|
| 32 |
|
| 33 |
def __init__(self):
|
| 34 |
"""初始化語義品種推薦器"""
|
| 35 |
-
# 初始化語義
|
| 36 |
self.vector_manager = SemanticVectorManager()
|
| 37 |
|
| 38 |
# 初始化用戶查詢分析器
|
| 39 |
self.query_analyzer = UserQueryAnalyzer(self.vector_manager.get_breed_list())
|
| 40 |
|
| 41 |
-
# 初始化
|
| 42 |
self.score_calculator = MatchingScoreCalculator(self.vector_manager.get_breed_list())
|
| 43 |
|
| 44 |
-
# 保留原有屬性以維持向後兼容性
|
| 45 |
self.model_name = self.vector_manager.model_name
|
| 46 |
self.sbert_model = self.vector_manager.get_sbert_model()
|
| 47 |
self.breed_vectors = self.vector_manager.get_breed_vectors()
|
| 48 |
self.breed_list = self.vector_manager.get_breed_list()
|
| 49 |
self.comparative_keywords = self.query_analyzer.comparative_keywords
|
| 50 |
|
| 51 |
-
# 初始化增強系統組件(
|
| 52 |
try:
|
| 53 |
self.query_engine = QueryUnderstandingEngine()
|
| 54 |
print("QueryUnderstandingEngine initialized")
|
|
@@ -121,7 +119,7 @@ class SemanticBreedRecommender:
|
|
| 121 |
top_k: int = 15) -> List[Dict[str, Any]]:
|
| 122 |
"""
|
| 123 |
當 multi_head_scorer 不可用時的回退評分方法
|
| 124 |
-
|
| 125 |
"""
|
| 126 |
print(f"Fallback scoring for {len(passed_breeds)} filtered breeds")
|
| 127 |
|
|
@@ -1307,4 +1305,4 @@ def _get_basic_text_matching_recommendations(user_description: str, top_k: int =
|
|
| 1307 |
except Exception as e:
|
| 1308 |
error_msg = f"Error in basic text matching: {str(e)}"
|
| 1309 |
print(f"ERROR: {error_msg}")
|
| 1310 |
-
raise RuntimeError(error_msg) from e
|
|
|
|
| 26 |
|
| 27 |
class SemanticBreedRecommender:
|
| 28 |
"""
|
| 29 |
+
增強的基於 SBERT 的語義品種推薦系統
|
|
|
|
| 30 |
"""
|
| 31 |
|
| 32 |
def __init__(self):
|
| 33 |
"""初始化語義品種推薦器"""
|
| 34 |
+
# 初始化語義vector的管理器
|
| 35 |
self.vector_manager = SemanticVectorManager()
|
| 36 |
|
| 37 |
# 初始化用戶查詢分析器
|
| 38 |
self.query_analyzer = UserQueryAnalyzer(self.vector_manager.get_breed_list())
|
| 39 |
|
| 40 |
+
# 初始化評分計算器
|
| 41 |
self.score_calculator = MatchingScoreCalculator(self.vector_manager.get_breed_list())
|
| 42 |
|
|
|
|
| 43 |
self.model_name = self.vector_manager.model_name
|
| 44 |
self.sbert_model = self.vector_manager.get_sbert_model()
|
| 45 |
self.breed_vectors = self.vector_manager.get_breed_vectors()
|
| 46 |
self.breed_list = self.vector_manager.get_breed_list()
|
| 47 |
self.comparative_keywords = self.query_analyzer.comparative_keywords
|
| 48 |
|
| 49 |
+
# 初始化增強系統組件(if 可用)
|
| 50 |
try:
|
| 51 |
self.query_engine = QueryUnderstandingEngine()
|
| 52 |
print("QueryUnderstandingEngine initialized")
|
|
|
|
| 119 |
top_k: int = 15) -> List[Dict[str, Any]]:
|
| 120 |
"""
|
| 121 |
當 multi_head_scorer 不可用時的回退評分方法
|
| 122 |
+
仍然用 constraint_manager 的過濾結果,並產生自然分佈的分數
|
| 123 |
"""
|
| 124 |
print(f"Fallback scoring for {len(passed_breeds)} filtered breeds")
|
| 125 |
|
|
|
|
| 1305 |
except Exception as e:
|
| 1306 |
error_msg = f"Error in basic text matching: {str(e)}"
|
| 1307 |
print(f"ERROR: {error_msg}")
|
| 1308 |
+
raise RuntimeError(error_msg) from e
|