""" 緊急測試修復後的關鍵字提取 """ def test_emergency_keyword_extraction(): """測試緊急修復的關鍵字提取""" def extract_keywords_emergency(query_text: str): """緊急修復版的關鍵字提取邏輯""" # 移除常見的查詢詞彙 stop_words = ['推薦', '有沒有', '是否有', '請問', '想要', '需要', '找', '查詢', '搜尋', '還有嗎', '還有', '嗎', '可以'] # 清理查詢文字 cleaned_text = query_text.replace('?', '').replace('?', '').strip() # 先嘗試提取核心商品詞彙 core_product_words = ['貓砂', '狗糧', '寵物', '商品', '產品', '貓', '狗', '犬', '礦砂'] extracted_core_words = [] for core_word in core_product_words: if core_word in cleaned_text: extracted_core_words.append(core_word) # 分割並清理關鍵字 words = cleaned_text.split() keywords = [] for word in words: if word not in stop_words and len(word) > 1: keywords.append(word) # 合併核心詞彙和分割的關鍵字 all_keywords = list(set(extracted_core_words + keywords)) # 如果沒有有效關鍵字,使用清理後的文字 if not all_keywords: all_keywords = [cleaned_text] # 擴展相關關鍵字 expanded_keywords = [] for keyword in all_keywords: expanded_keywords.append(keyword) # 貓砂相關擴展 if '貓砂' in keyword or '貓' in keyword: expanded_keywords.extend(['礦砂', '豆腐砂', '水晶砂', '木屑砂', 'litter', '貓砂']) # 狗糧相關擴展 if '狗糧' in keyword or '狗' in keyword: expanded_keywords.extend(['犬糧', '犬種', '狗食', 'dog']) # 寵物相關擴展 if '寵物' in keyword: expanded_keywords.extend(['貓', '狗', '犬', 'pet', 'cat']) # 商品相關擴展 if '商品' in keyword or '產品' in keyword: expanded_keywords.extend(['貓砂', '狗糧', '寵物', '食品', '用品']) # 去除重複並返回 unique_keywords = list(set(expanded_keywords)) return unique_keywords, extracted_core_words print("🚨 緊急測試關鍵字提取修復") print("=" * 50) # 測試實際的用戶查詢 test_cases = [ "請問有商品可以推薦嗎?", "請問貓砂還有嗎?", "貓砂還有嗎?", "推薦一些商品", "有什麼寵物用品?" ] for query in test_cases: print(f"\n查詢: '{query}'") keywords, core_words = extract_keywords_emergency(query) print(f" 核心詞彙: {core_words}") print(f" 最終關鍵字: {keywords}") # 檢查是否包含預期的關鍵字 if "貓砂" in query: if '貓砂' in keywords and '礦砂' in keywords: print(" ✅ 包含預期的貓砂相關關鍵字") else: print(" ❌ 缺少預期的貓砂關鍵字") if "商品" in query: if any(word in keywords for word in ['商品', '貓砂', '狗糧', '寵物']): print(" ✅ 包含商品相關關鍵字") else: print(" ❌ 缺少商品相關關鍵字") def test_product_matching_emergency(): """測試緊急修復的商品匹配""" def extract_keywords_emergency(query_text: str): stop_words = ['推薦', '有沒有', '是否有', '請問', '想要', '需要', '找', '查詢', '搜尋', '還有嗎', '還有', '嗎', '可以'] cleaned_text = query_text.replace('?', '').replace('?', '').strip() core_product_words = ['貓砂', '狗糧', '寵物', '商品', '產品', '貓', '狗', '犬', '礦砂'] extracted_core_words = [] for core_word in core_product_words: if core_word in cleaned_text: extracted_core_words.append(core_word) words = cleaned_text.split() keywords = [word for word in words if word not in stop_words and len(word) > 1] all_keywords = list(set(extracted_core_words + keywords)) if not all_keywords: all_keywords = [cleaned_text] expanded_keywords = [] for keyword in all_keywords: expanded_keywords.append(keyword) if '貓砂' in keyword or '貓' in keyword: expanded_keywords.extend(['礦砂', '豆腐砂', '水晶砂', '木屑砂', 'litter', '貓砂']) if '狗糧' in keyword or '狗' in keyword: expanded_keywords.extend(['犬糧', '犬種', '狗食', 'dog']) if '寵物' in keyword: expanded_keywords.extend(['貓', '狗', '犬', 'pet', 'cat']) if '商品' in keyword or '產品' in keyword: expanded_keywords.extend(['貓砂', '狗糧', '寵物', '食品', '用品']) return list(set(expanded_keywords)) # 實際商品資料 products = [ { "id": 1, "productCode": "OL1100-1", "productName": "毆力天然犬種300g 室內成犬無榖小顆粒", "stock": 100 }, { "id": 2, "productCode": "SW-06-01", "productName": "Shovel well豪好鏟 破碎型礦砂", "stock": 50 }, { "id": 3, "productCode": "TL-03", "productName": "美國極冠貓砂 薰衣草12kg", "stock": 48 }, { "id": 4, "productCode": "SL11002", "productName": "首領汪 膠原鴨舌 5入彭湃包", "stock": 100 } ] print("\n🛍️ 緊急測試商品匹配") print("=" * 50) test_queries = [ "請問有商品可以推薦嗎?", "請問貓砂還有嗎?", "貓砂還有嗎?" ] for query in test_queries: print(f"\n查詢: '{query}'") keywords = extract_keywords_emergency(query) print(f"關鍵字: {keywords}") matched_products = [] for product in products: product_name_lower = product["productName"].lower() product_code_lower = product["productCode"].lower() for keyword in keywords: keyword_lower = keyword.lower() if (keyword_lower in product_name_lower or keyword_lower in product_code_lower): if product not in matched_products: matched_products.append(product) print(f" ✅ 匹配: {product['productName']} (關鍵字: {keyword})") break print(f"找到 {len(matched_products)} 個商品") if not matched_products: print(" ❌ 沒有找到商品 - 需要進一步調試") def main(): """主函數""" print("🚨 緊急修復測試") print("=" * 60) test_emergency_keyword_extraction() test_product_matching_emergency() print("\n" + "=" * 60) print("🔍 診斷結果:") print("1. 檢查關鍵字提取是否正確") print("2. 檢查商品匹配邏輯") print("3. 如果測試通過,重啟服務應該能工作") if __name__ == "__main__": main()