diff --git a/.gitignore b/.gitignore index aba264a..277f84f 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -Nothing should be ignored based on the provided file changes. The only file added is SETUP_LOCALHOST.md, which is a markdown documentation file and should not be ignored. \ No newline at end of file +Nothing to output - the modified file is just README.md which is a source/config file and doesn't require any gitignore entries. \ No newline at end of file diff --git a/README.md b/README.md index 7cc35ac..f20b341 100644 --- a/README.md +++ b/README.md @@ -5,74 +5,235 @@ [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://networkx.org/) +[](https://github.com/stipwunaraha/latent-knowledge-diffusion-index) > *"Melacak hantu ide: Ketika pemikiran dari masa lalu tiba-tiba menjadi solusi masa depan."* -**L-KDI** adalah algoritma untuk mendeteksi **Revival Impact Factor (RIF)**βfenomena ketika sebuah ide dari disertasi doktoral tahun 1970-an tiba-tiba muncul kembali sebagai solusi utama untuk masalah AI modern. Kita menyebutnya "hantu" ide, dan proyek ini melacaknya di korpus teks ilmiah yang sangat besar. +**L-KDI** adalah pustaka Python open-source untuk mendeteksi fenomena **"Sleeping Beauties"** dalam literatur ilmiahβmakalah yang awalnya terabaikan lalu menjadi sangat berpengaruh setelah masa dormansi panjang. Library ini menghitung **Revival Impact Factor (RIF)** dan menganalisis pola difusi pengetahuan melalui graf sitasi temporal. -### π‘ Ide Utama -Banyak terobosan ilmiah yang sebenarnya merupakan *rediscovery* dari konsep lama. Contoh klasik: *Backpropagation* dan *Convolutional Neural Networks* sudah ada sejak puluhan tahun sebelum menjadi dominan. Metrik saat ini tidak menghargai *delayed impact* ini. +## π― Fitur Utama -L-KDI mengukur "jarak difusi" (`diffusion distance`) dan "waktu latensi" (`latency time`) dengan: -1. **Diffusion Meme Score**: Mengevaluasi jarak difusi pengetahuan dalam jaringan sitasi makalah menggunakan *network embedding space*. -2. **Knowledge Diffusion Breakthrough**: Mengukur seberapa besar sebuah karya mendobrak batasan bidang ilmunya. +- π **Deteksi Otomatis Kebangkitan Ide**: Identifikasi makalah dengan periode dormansi diikuti lonjakan sitasi +- π **Metrik L-KDI & RIF**: Kuantifikasi dampak tertunda (delayed impact) dalam sains +- πΈοΈ **Analisis Graf Sitasi Temporal**: Bangun dan analisis jaringan sitasi dengan bobot waktu +- π **Integrasi Data Multi-Sumber**: Fetch data dari OpenAlex API dan Semantic Scholar +- π§ **Ekstraksi Konsep Kunci**: NLP-powered extraction untuk identifikasi ide yang di-revive +- π **Visualisasi Timeline**: Dashboard Streamlit untuk eksplorasi interaktif -### π Metodologi +## π‘ Mengapa L-KDI? -Kami mengusulkan tiga komponen utama: +Banyak terobosan ilmiah sebenarnya merupakan *rediscovery* dari konsep lama: +- **Backpropagation** (1974 β 1986 β 2010s) +- **Convolutional Neural Networks** (1980s β 2012) +- **Attention Mechanism** (2014 β 2017) -1. **Pembangkit Graf Sitasi Temporal**: Membangun jaringan sitasi dengan bobot berdasarkan waktu dan kesamaan konten. -2. **Kalkulasi "Jarak Difusi"**: Menggunakan *random walk with restart* atau metrik berbasis *embedding* untuk mengukur seberapa jauh sebuah konsep bergerak melintasi ruang dan waktu. -3. **Skor RIF (Revival Impact Factor)**: Formula untuk mengkuantifikasi lonjakan perhatian setelah periode dormansi panjang. +Metrik tradisional tidak menangkap *delayed impact* ini. L-KDI mengisi celah tersebut dengan mengukur: +1. **Diffusion Distance**: Seberapa jauh konsep bergerak melintasi ruang ilmu +2. **Latency Time**: Durasi periode dormansi sebelum kebangkitan +3. **Breakthrough Score**: Sejauh mana karya mendobrak batasan bidang -```python -# Pseudocode konsep L-KDI -def calculate_rif(paper): - # 1. Dapatkan semua sitasi ke paper ini, kelompokkan per tahun - citation_timeline = get_citations_per_year(paper) - - # 2. Deteksi "periode dormansi" (min 10 tahun tanpa sitasi signifikan) - dormant_start, dormant_end = detect_dormancy(citation_timeline) - - # 3. Jika ada lonjakan sitasi > threshold setelah dormansi - if has_revival_spike(citation_timeline, dormant_end): - # 4. Hitung RIF = (Tinggi Lonjakan) * (Faktor Kelangkaan) - return spike_magnitude * rarity_factor - - return 0.0 -``` +## π¦ Instalasi Cepat -### π¦ Instalasi & Penggunaan +### Prasyarat +- Python 3.9 atau lebih tinggi +- pip (Python package manager) +- Git + +### Langkah Instalasi (5 Menit) ```bash +# 1. Clone repository git clone https://github.com/stipwunaraha/latent-knowledge-diffusion-index.git cd latent-knowledge-diffusion-index + +# 2. Buat virtual environment (direkomendasikan) +python -m venv venv + +# 3. Aktifkan virtual environment +# Linux/Mac: +source venv/bin/activate +# Windows: +# venv\Scripts\activate + +# 4. Install semua dependensi pip install -r requirements.txt + +# 5. Verifikasi instalasi dengan menjalankan test suite +python -m pytest tests/ -v ``` -**Contoh:** Menganalisis "hantu" ide *Backpropagation*: +β Jika semua 32 test lulus, library siap digunakan! + +## π Cara Penggunaan + +### Contoh 1: Analisis Paper dengan DOI ```python from lkdi import RevivalDetector +# Inisialisasi detector dengan sumber data OpenAlex detector = RevivalDetector(data_source="openalex") -# Analisis makalah seminal Rumelhart et al. (1986) +# Analisis makalah seminal Backpropagation (Rumelhart et al., 1986) result = detector.analyze(doi="10.1038/323533a0") -print(f"Revival Impact Factor (RIF): {result.rif_score}") -print(f"Periode Dormansi: {result.dormant_period}") -print(f"Konsep yang di-revive: {result.key_concepts}") +print(f"π Revival Impact Factor (RIF): {result.rif_score:.2f}") +print(f"β³ Periode Dormansi: {result.dormant_period}") +print(f"π‘ Konsep yang di-revive: {result.key_concepts}") +print(f"π Total Sitasi: {result.total_citations}") +``` + +### Contoh 2: Bangun Graf Sitasi Custom + +```python +from lkdi import CitationGraphBuilder + +# Inisialisasi builder +builder = CitationGraphBuilder() + +# Tambahkan paper ke graf +builder.add_paper("paper_1", year=1980, title="Early Neural Nets") +builder.add_paper("paper_2", year=1986, title="Learning Representations") +builder.add_paper("paper_3", year=2012, title="Deep Learning Revolution") + +# Tambahkan edge sitasi +builder.add_edge("paper_2", "paper_1", weight=0.8) # paper_2 sitasi paper_1 +builder.add_edge("paper_3", "paper_2", weight=0.9) + +# Bangun graf +graph = builder.build() + +# Hitung centrality metrics +centralities = builder.compute_centrality(graph) +print(f"PageRank scores: {centralities['pagerank']}") +``` + +### Contoh 3: Gunakan Fungsi Metrik Langsung + +```python +from lkdi.metrics import detect_dormancy, calculate_rif, diffusion_distance + +# Timeline sitasi per tahun +citations = [2, 1, 0, 1, 0, 0, 1, 2, 15, 45, 120, 300] + +# Deteksi periode dormansi +dormant = detect_dormancy(citations, min_years=5) +print(f"Dormant period: {dormant}") + +# Hitung RIF score +rif = calculate_rif(citations) +print(f"RIF Score: {rif}") +``` + +## π Struktur Repository + ``` +latent-knowledge-diffusion-index/ +βββ lkdi/ # Package utama +β βββ __init__.py # Export modul publik +β βββ metrics.py # Fungsi metrik inti (RIF, dormancy, dll) +β βββ graph_builder.py # Class CitationGraphBuilder +β βββ detector.py # Class RevivalDetector +βββ tests/ # Test suite +β βββ conftest.py # Konfigurasi pytest +β βββ test_metrics.py # Test fungsi metrik +β βββ test_graph_builder.py # Test graph builder +β βββ test_detector.py # Test detector +βββ requirements.txt # Daftar dependensi +βββ INSTALLATION.md # Panduan instalasi detail +βββ SETUP_LOCALHOST.md # Setup localhost cepat +βββ README.md # Dokumentasi ini +``` + +## π§ͺ Pengujian + +Jalankan seluruh test suite: + +```bash +# Semua test dengan verbose output +python -m pytest tests/ -v + +# Dengan coverage report +python -m pytest tests/ --cov=lkdi --cov-report=html + +# Test spesifik +python -m pytest tests/test_metrics.py -v +``` + +## π οΈ Development Tools + +Repository ini menyertakan tools untuk development: + +- **Black**: Code formatting (`black lkdi/ tests/`) +- **Flake8**: Linting (`flake8 lkdi/ tests/`) +- **Pytest**: Testing framework dengan coverage +- **Streamlit**: Dashboard visualisasi (opsional) + +## π Dokumentasi Lengkap + +- **[INSTALLATION.md](INSTALLATION.md)**: Panduan instalasi detail dengan troubleshooting +- **[SETUP_LOCALHOST.md](SETUP_LOCALHOST.md)**: Setup cepat untuk pengembangan localhost +- **Docstrings**: Setiap fungsi dan class memiliki docstring lengkap + +## π§ Troubleshooting Umum + +| Masalah | Solusi | +|---------|--------| +| `ModuleNotFoundError` | Pastikan virtual environment aktif dan `pip install -r requirements.txt` sudah dijalankan | +| Gagal install dependency | Coba upgrade pip: `pip install --upgrade pip` | +| Timeout API OpenAlex | Periksa koneksi internet atau gunakan mode offline dengan data lokal | +| Test gagal | Pastikan versi Python β₯ 3.9 | + +Untuk panduan troubleshooting lengkap, lihat [INSTALLATION.md](INSTALLATION.md#troubleshooting). + +## πΊοΈ Roadmap + +- [x] β Implementasi core metrics (RIF, dormancy detection) +- [x] β Graph builder dengan NetworkX +- [x] β RevivalDetector dengan OpenAlex integration +- [x] β Test suite lengkap (32 tests) +- [ ] Visualisasi timeline interaktif dengan Streamlit +- [ ] Support multiple data sources (Crossref, PubMed) +- [ ] CLI interface untuk analisis batch +- [ ] Pre-trained models untuk ekstraksi konsep +- [ ] Dashboard web untuk eksplorasi data + +## π€ Kontribusi + +Kami menyambut kontribusi! Cara berkontribusi: + +1. Fork repository ini +2. Buat branch fitur (`git checkout -b feature/amazing-feature`) +3. Commit perubahan (`git commit -m 'Add amazing feature'`) +4. Push ke branch (`git push origin feature/amazing-feature`) +5. Buka Pull Request + +Lihat [Issues](https://github.com/stipwunaraha/latent-knowledge-diffusion-index/issues) untuk task yang bisa dikerjakan. + +### Standar Kode +- Gunakan Black untuk formatting +- Jalankan Flake8 untuk linting +- Pastikan semua test lulus sebelum submit PR +- Tambahkan test untuk fitur baru + +## π Lisensi + +Distributed under the **MIT License**. Lihat [LICENSE](LICENSE) untuk detail. + +## π Acknowledgements + +- [OpenAlex](https://openalex.org/) - Sumber data bibliografik terbuka +- [Semantic Scholar](https://www.semanticscholar.org/) - API pencarian akademik +- [NetworkX](https://networkx.org/) - Library graf Python +- Konsep "Sleeping Beauties" dari ilmuometri + +## π¬ Kontak -### π§ Roadmap -- [ ] Implementasi *graph builder* dari OpenAlex. -- [ ] Algoritma deteksi dormansi berbasis statistik. -- [ ] Visualisasi *timeline* kebangkitan ide (streamlit). -- [ ] Studi kasus: *Attention Mechanism* (dari Bahdanau 2014 ke Transformer 2017). +- Repository: [GitHub](https://github.com/stipwunaraha/latent-knowledge-diffusion-index) +- Issues: [Laporkan bug atau request fitur](https://github.com/stipwunaraha/latent-knowledge-diffusion-index/issues) -### π€ Kontribusi -Lihat [Issues](https://github.com/stipwunaraha/latent-knowledge-diffusion-index/issues) untuk tugas-tugas yang bisa dikerjakan. +--- -### π Lisensi -MIT License. +
+ Dibuat dengan β€οΈ untuk komunitas riset terbuka +