Spaces:
Sleeping
Sleeping
| """ | |
| Tüm sistemi hazırlayan ana script. | |
| Bu script: | |
| 1. TDK veri setini yükler | |
| 2. Veriyi işler | |
| 3. Embedding'leri oluşturur | |
| 4. Vector store'u hazırlar | |
| """ | |
| import sys | |
| import os | |
| # src klasörünü path'e ekle | |
| sys.path.append(os.path.join(os.path.dirname(__file__), 'src')) | |
| from data_loader import TDKDataLoader | |
| from embeddings import EmbeddingModel | |
| from vector_store import FAISSVectorStore | |
| def main(): | |
| """Ana hazırlık fonksiyonu.""" | |
| print("=" * 70) | |
| print("TDK CHATBOT SİSTEM HAZIRLIĞI") | |
| print("=" * 70) | |
| print() | |
| # ============================================ | |
| # ADIM 1: VERİ YÜKLEME | |
| # ============================================ | |
| print("ADIM 1: Veri Yükleme") | |
| print("-" * 70) | |
| loader = TDKDataLoader(cache_dir="./data") | |
| # Daha önce işlenmiş veri var mı kontrol et | |
| processed_file = "./data/processed_tdk.json" | |
| if os.path.exists(processed_file): | |
| print("Daha önce işlenmiş veri bulundu, yükleniyor...") | |
| documents = loader.load_processed_data() | |
| else: | |
| print("Veri ilk kez yükleniyor...") | |
| loader.load_dataset() | |
| loader.explore_data() | |
| documents = loader.process_data() | |
| loader.save_processed_data() | |
| if not documents: | |
| print("Veri yüklenemedi!") | |
| return | |
| print(f"Toplam {len(documents)} doküman hazır") | |
| print() | |
| # ============================================ | |
| # ADIM 2: EMBEDDING OLUŞTURMA | |
| # ============================================ | |
| print("ADIM 2: Embedding Oluşturma") | |
| print("-" * 70) | |
| embeddings_file = "./data/embeddings.pkl" | |
| # Daha önce oluşturulmuş embedding var mı kontrol et | |
| if os.path.exists(embeddings_file): | |
| print("Daha önce oluşturulmuş embedding'ler bulundu, yükleniyor...") | |
| embedding_data = EmbeddingModel.load_embeddings(embeddings_file) | |
| embeddings = embedding_data['embeddings'] | |
| valid_documents = embedding_data['documents'] | |
| else: | |
| print("Embedding'ler oluşturuluyor (bu işlem biraz zaman alabilir)...") | |
| # Embedding modelini yükle | |
| embedder = EmbeddingModel() | |
| # Dokümanları embedding'e çevir | |
| embeddings, valid_documents = embedder.encode_documents(documents) | |
| # Kaydet | |
| embedder.save_embeddings(embeddings, valid_documents, embeddings_file) | |
| print(f"{len(valid_documents)} doküman için embedding hazır") | |
| print(f"Embedding shape: {embeddings.shape}") | |
| print() | |
| # ============================================ | |
| # ADIM 3: VECTOR STORE OLUŞTURMA | |
| # ============================================ | |
| print("ADIM 3: Vector Store Oluşturma") | |
| print("-" * 70) | |
| vector_store_path = "./data/vector_store" | |
| # Vector store oluştur | |
| store = FAISSVectorStore(embedding_dim=embeddings.shape[1]) | |
| store.create_index(embeddings, valid_documents) | |
| # Kaydet | |
| store.save(vector_store_path) | |
| # İstatistikleri göster | |
| store.get_stats() | |
| print() | |
| # ============================================ | |
| # ADIM 4: SİSTEM TESTİ | |
| # ============================================ | |
| print("ADIM 4: Sistem Testi") | |
| print("-" * 70) | |
| # Embedding modelini test için yükle | |
| embedder = EmbeddingModel() | |
| # Test sorguları | |
| test_queries = [ | |
| "kitap ne demek", | |
| "sevgi nedir", | |
| "bilgisayar kelimesinin anlamı" | |
| ] | |
| print("Test sorguları ile arama yapılıyor...\n") | |
| for query in test_queries: | |
| print(f"Sorgu: '{query}'") | |
| # Sorguyu embedding'e çevir | |
| query_emb = embedder.encode_single(query) | |
| # Arama yap | |
| results = store.search(query_emb, top_k=2) | |
| # Sonuçları göster | |
| for i, result in enumerate(results, 1): | |
| kelime = result['document'].get('kelime', 'N/A') | |
| anlam = result['document'].get('anlam', 'N/A') | |
| score = result['score'] | |
| print(f" {i}. Kelime: {kelime}") | |
| print(f" Anlam: {anlam[:100]}...") | |
| print(f" Benzerlik: {score:.4f}") | |
| print() | |
| # ============================================ | |
| # TAMAMLANDI | |
| # ============================================ | |
| print("=" * 70) | |
| print("SİSTEM HAZIRLIĞI TAMAMLANDI!") | |
| print("=" * 70) | |
| print() | |
| print("Oluşturulan dosyalar:") | |
| print(f" - {processed_file}") | |
| print(f" - {embeddings_file}") | |
| print(f" - {vector_store_path}.index") | |
| print(f" - {vector_store_path}.pkl") | |
| print() | |
| print("Artık chatbot'u çalıştırmaya hazırsınız!") | |
| print() | |
| if __name__ == "__main__": | |
| try: | |
| main() | |
| except KeyboardInterrupt: | |
| print("\n\nİşlem kullanıcı tarafından durduruldu.") | |
| except Exception as e: | |
| print(f"\n\nHata oluştu: {e}") | |
| import traceback | |
| traceback.print_exc() |