Feature Extraction
sentence-transformers
spaCy
English
Turkish
scientific-text-analysis
concept-extraction
network-analysis
natural-language-processing
knowledge-graphs
temporal-analysis
networkx
pyvis
pdf-processing
Instructions to use NextGenC/ChronoSense with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- sentence-transformers
How to use NextGenC/ChronoSense with sentence-transformers:
from sentence_transformers import SentenceTransformer model = SentenceTransformer("NextGenC/ChronoSense") sentences = [ "The weather is lovely today.", "It's so sunny outside!", "He drove to the stadium." ] embeddings = model.encode(sentences) similarities = model.similarity(embeddings, embeddings) print(similarities.shape) # [3, 3] - spaCy
How to use NextGenC/ChronoSense with spaCy:
!pip install https://huggingface.co/NextGenC/ChronoSense/resolve/main/ChronoSense-any-py3-none-any.whl # Using spacy.load(). import spacy nlp = spacy.load("ChronoSense") # Importing as module. import ChronoSense nlp = ChronoSense.load() - Notebooks
- Google Colab
- Kaggle
| # run_analysis.py (Ağ Analizi Metrikleri Eklendi) | |
| import time | |
| import pandas as pd | |
| import sys | |
| from pathlib import Path | |
| import networkx as nx | |
| import webbrowser | |
| import logging | |
| # src klasöründeki modüllere erişim için | |
| sys.path.insert(0, str(Path(__file__).parent)) | |
| from src.analysis.temporal import calculate_concept_frequencies | |
| from src.analysis.similarity import calculate_concept_embeddings, calculate_similarity_matrix | |
| from src.analysis.network_builder import build_concept_network | |
| # YENİ importlar: | |
| from src.analysis.network_analysis import get_network_analysis_results, save_network_analysis | |
| from src.visualization.plotting import visualize_network | |
| from src.data_management.storage import load_dataframe, save_dataframe, CONCEPT_COLUMNS, FREQUENCY_FILENAME, SIMILARITY_FILENAME, NETWORK_ANALYSIS_FILENAME # YENİ: NETWORK_ANALYSIS_FILENAME | |
| logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') | |
| pd.set_option('display.max_rows', 100) | |
| pd.set_option('display.max_columns', 10) | |
| pd.set_option('display.width', 1000) | |
| if __name__ == "__main__": | |
| print(">>> Analizler Çalıştırılıyor (Frekans + Benzerlik + Ağ + Metrikler + Görselleştirme) <<<") | |
| overall_start_time = time.time() | |
| concepts_df = None | |
| frequency_results_df = None | |
| similarity_results_df = None | |
| concept_network = None # Grafı saklamak için | |
| network_analysis_df = None # Analiz sonuçlarını saklamak için | |
| # --- 1. Frekans Analizi --- | |
| print("\n--- 1. Frekans Hesaplaması ---"); start_time = time.time() | |
| # ... (önceki kodla aynı, sadece print süresi değişebilir) ... | |
| frequency_df = calculate_concept_frequencies(time_period='YS') | |
| if frequency_df is not None: | |
| concepts_df = load_dataframe('concepts', CONCEPT_COLUMNS) | |
| if not frequency_df.empty: | |
| print(f"Toplam {len(frequency_df)} frekans kaydı hesaplandı.") | |
| if concepts_df is not None and not concepts_df.empty: | |
| frequency_results_df = pd.merge(frequency_df, concepts_df[['concept_id', 'name']], on='concept_id', how='left') | |
| frequency_results_df = frequency_results_df[['concept_id', 'name', 'time_period_start', 'frequency']] | |
| frequency_results_df.sort_values(by=['name', 'time_period_start'], inplace=True) | |
| print("\n--- Konsept Frekansları (Yıllık) ---"); print(frequency_results_df.to_string()) | |
| save_dataframe(frequency_results_df, FREQUENCY_FILENAME) | |
| else: print("\nKonsept isimleri yüklenemedi..."); print(frequency_df.to_string()) | |
| else: print("Frekans hesaplandı ancak sonuç boş."); save_dataframe(pd.DataFrame(columns=['concept_id', 'name', 'time_period_start', 'frequency']), FREQUENCY_FILENAME) | |
| else: print("Frekans hesaplaması sırasında bir hata oluştu.") | |
| print(f"--- Frekans Hesaplaması Tamamlandı. Süre: {time.time() - start_time:.2f} saniye ---") | |
| # --- 2. Anlamsal Benzerlik Analizi --- | |
| print("\n--- 2. Anlamsal Benzerlik Hesaplaması ---"); start_time = time.time() | |
| # ... (önceki kodla aynı, sadece print süresi değişebilir) ... | |
| try: | |
| concept_embeddings = calculate_concept_embeddings(force_recalculate=False) | |
| if concept_embeddings: | |
| similarity_df = calculate_similarity_matrix(concept_embeddings, force_recalculate=False) | |
| if similarity_df is not None and not similarity_df.empty: | |
| print(f"Toplam {len(similarity_df)} konsept çifti için benzerlik hesaplandı/yüklendi.") | |
| if concepts_df is None or concepts_df.empty: concepts_df = load_dataframe('concepts', CONCEPT_COLUMNS) | |
| if concepts_df is not None and not concepts_df.empty: | |
| sim_results = pd.merge(similarity_df, concepts_df[['concept_id', 'name']], left_on='concept_id_1', right_on='concept_id', how='left').rename(columns={'name': 'name_1'}).drop(columns=['concept_id']) | |
| sim_results = pd.merge(sim_results, concepts_df[['concept_id', 'name']], left_on='concept_id_2', right_on='concept_id', how='left').rename(columns={'name': 'name_2'}).drop(columns=['concept_id']) | |
| sim_results = sim_results[['concept_id_1', 'name_1', 'concept_id_2', 'name_2', 'similarity']] | |
| sim_results.sort_values(by='similarity', ascending=False, inplace=True) | |
| similarity_results_df = sim_results | |
| print("\n--- En Benzer Konsept Çiftleri (Top 20) ---"); print(similarity_results_df.head(20).to_string(index=False)) | |
| save_dataframe(similarity_results_df, SIMILARITY_FILENAME) | |
| else: print("\nKonsept isimleri yüklenemedi..."); print(similarity_df.sort_values(by='similarity', ascending=False).head(20).to_string(index=False)) | |
| elif similarity_df is not None: print("Benzerlik hesaplandı ancak sonuç boş."); save_dataframe(pd.DataFrame(columns=['concept_id_1', 'name_1', 'concept_id_2', 'name_2', 'similarity']), SIMILARITY_FILENAME) | |
| except Exception as e: logging.exception("Benzerlik hesaplama sırasında beklenmedik hata oluştu.") | |
| print(f"--- Benzerlik Hesaplaması Tamamlandı. Süre: {time.time() - start_time:.2f} saniye ---") | |
| # --- 3. Ağ Oluşturma --- | |
| print("\n--- 3. Konsept Ağı Oluşturma ---"); start_time = time.time() | |
| # GÜNCELLEME: Ağ nesnesini değişkende tut | |
| concept_network = build_concept_network(similarity_threshold=0.60) | |
| if concept_network is not None: | |
| print("\n--- Oluşturulan Ağ Bilgileri ---") | |
| print(f"Düğüm Sayısı (Konseptler): {concept_network.number_of_nodes()}") | |
| print(f"Kenar Sayısı (İlişkiler/Benzerlikler): {concept_network.number_of_edges()}") | |
| print(f"Ağ başarıyla oluşturuldu ve kaydedildi.") | |
| else: | |
| print("Konsept ağı oluşturulamadı.") | |
| print(f"--- Ağ Oluşturma Tamamlandı. Süre: {time.time() - start_time:.2f} saniye ---") | |
| # --- YENİ: 4. Ağ Analizi (Metrik Hesaplama) --- | |
| print("\n--- 4. Ağ Analizi Metrikleri ---"); start_time = time.time() | |
| if concept_network is not None and concept_network.number_of_nodes() > 0: | |
| network_analysis_df = get_network_analysis_results(concept_network) | |
| if network_analysis_df is not None and not network_analysis_df.empty: | |
| # Sonuçları kaydet | |
| save_network_analysis(network_analysis_df) | |
| print("Ağ metrikleri hesaplandı ve kaydedildi.") | |
| # En yüksek derece merkeziyetine sahip ilk 10 konsepti göster | |
| print("\n--- En Merkezi Konseptler (Degree Centrality Top 10) ---") | |
| print(network_analysis_df.sort_values(by='degree_centrality', ascending=False).head(10).to_string(index=False)) | |
| else: | |
| print("Ağ metrikleri hesaplanamadı veya sonuç boş.") | |
| else: | |
| print("Ağ analizi yapmak için geçerli bir ağ bulunamadı.") | |
| print(f"--- Ağ Analizi Tamamlandı. Süre: {time.time() - start_time:.2f} saniye ---") | |
| # --- YENİ SIRA: 5. Ağ Görselleştirme --- | |
| print("\n--- 5. Ağ Görselleştirmesi Oluşturma ---"); start_time = time.time() | |
| visualization_path = None | |
| if concept_network is not None: | |
| # GÜNCELLEME: Analiz sonuçlarını da görselleştirmeye gönderebiliriz (ileride plotting.py'ı güncelleyince) | |
| # Şimdilik sadece grafı gönderiyoruz. | |
| visualization_path = visualize_network(graph=concept_network, output_filename="concept_network_visualization.html") | |
| if visualization_path: | |
| print(f"\nBaşarılı! İnteraktif ağ görselleştirmesi oluşturuldu:\n-> {visualization_path}") | |
| print("\nBu HTML dosyasını web tarayıcınızda açarak ağı inceleyebilirsiniz.") | |
| else: print("Ağ görselleştirmesi oluşturulurken bir sorun oluştu.") | |
| else: print("Ağ oluşturulamadığı için görselleştirme yapılamıyor.") | |
| print(f"--- Ağ Görselleştirme Tamamlandı. Süre: {time.time() - start_time:.2f} saniye ---") | |
| overall_end_time = time.time() | |
| print(f"\n<<< Tüm İşlemler Tamamlandı. Toplam Süre: {overall_end_time - overall_start_time:.2f} saniye >>>") |