Skip to content
This repository was archived by the owner on Jul 10, 2025. It is now read-only.
porfanidPublic archive

About

exploring machine learning methodologies for citation link prediction within academic networks. This project leverages Natural Language Processing, graph theory, and advanced feature engineering to identify potential citation links, demonstrating an evolutive development process from baseline approaches to optimized, performance-driven solutions.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

1 watching

Forks

Repository files navigation

Citation Link Prediction in Academic Networks

Αυτό το repository περιέχει την υλοποίηση ενός συστήματος πρόβλεψης συνδέσεων (link prediction) σε ακαδημαϊκά δίκτυα, με στόχο την πρόβλεψη πιθανών παραπομπών (citations) μεταξύ επιστημονικών εργασιών. Το έργο αναπτύχθηκε στο πλαίσιο της πρόκλησης "NLP 053 - CSE UOI 2025 Kaggle Challenge" του Πανεπιστημίου Ιωαννίνων, συνδυάζοντας τεχνικές Επεξεργασίας Φυσικής Γλώσσας (NLP) και Ανάλυσης Γράφων.

Επισκόπηση Έργου

Το πρόβλημα της πρόβλεψης παραπομπών διαμορφώνεται ως ένα πρόβλημα δυαδικής ταξινόμησης (binary classification), όπου το σύστημα προβλέπει την πιθανότητα ύπαρξης μιας παραπομπής μεταξύ δύο εργασιών. Η προσέγγιση περιλαμβάνει:

  • Προεπεξεργασία Δεδομένων: Καθαρισμός και μετασχηματισμός των abstracts και των πληροφοριών συγγραφέων, καθώς και κατασκευή του γραφήματος παραπομπών.
  • Μηχανική Χαρακτηριστικών (Feature Engineering): Εξαγωγή χαρακτηριστικών βασισμένων σε κείμενο (π.χ., ομοιότητα abstracts), συγγραφείς (π.χ., κοινοί συγγραφείς), και δομή δικτύου (π.χ., κοινοί γείτονες, δείκτες κεντρικότητας).
  • Εκπαίδευση Μοντέλου: Χρήση αλγορίθμων Μηχανικής Μάθησης, με ιδιαίτερη έμφαση στο XGBoost, για την εκπαίδευση ενός μοντέλου ικανού να διακρίνει μεταξύ υπαρχόντων και μη-υπαρχόντων παραπομπών.
  • Βελτιστοποίηση και Αξιολόγηση: Εφαρμογή τεχνικών βελτιστοποίησης υπερπαραμέτρων (hyperparameter tuning) και μεθοδολογιών αποφυγής υπερπροσαρμογής (overfitting).

Δομή Repository

Το repository οργανώνεται ως εξής:


.
├── README.md                 \# Αυτό το αρχείο
├── requirements.txt          \# Απαραίτητες βιβλιοθήκες Python
├── code/                     \# Περιέχει όλα τα scripts της λύσης
│   ├── success-simple.py     \# Απλή, αρχική υλοποίηση (καλή βάση)
│   ├── failed-1st-attempt-create\_training\_data.py \# 1η προσπάθεια: Δημιουργία training data
│   ├── failed-1st-attempt-train\_predict.py \# 1η προσπάθεια: Εκπαίδευση μοντέλου και πρόβλεψη
│   ├── failed-2nd-attempt.py \# 2η προσπάθεια: Περιλαμβάνει προηγμένα features & παραλληλοποίηση
│   ├── success-improved.py   \# Βελτιστοποιημένη και τελική λύση (όλα σε ένα αρχείο)
│   └── ...                   \# Τυχόν άλλα βοηθητικά αρχεία
├── input/                     \# Περιέχει τα αρχικά δεδομένα του Kaggle Challenge
│   └── nlp-cse-uoi-2025/
│       └── data\_new/
│           ├── abstracts.txt
│           ├── authors.txt
│           ├── edgelist.txt
│           └── test.txt
├── report/                   \# Σχετικά έγγραφα της εργασίας
│   ├── NLP Citation Prediction Challenge Report.pdf \# Αναλυτική αναφορά
│   ├── NLP\_exam\_challenge\_June\_2025.pdf \# Πρόσθετες σημειώσεις για την πρόκληση
│   ├── report.pdf \# Αναφορά της εργασίας
│   └── kaggle\_challenge\_2025.pdf \# Περιγραφή της πρόκλησης
└── .gitignore                \# Αρχείο για την παράβλεψη ανεπιθύμητων αρχείων από το Git

Δεδομένα

Τα δεδομένα για την πρόκληση είναι διαθέσιμα μέσω του Kaggle Challenge. Για την αναπαραγωγή, τα αρχεία (abstracts.txt, authors.txt, edgelist.txt, test.txt) θα πρέπει να τοποθετηθούν στη διαδρομή input/nlp-cse-uoi-2025/data_new/.

Απαιτήσεις Συστήματος

Ο κώδικας έχει αναπτυχθεί και δοκιμαστεί σε περιβάλλον Ubuntu 24.04. Για την εκτέλεση του κώδικα, απαιτούνται οι ακόλουθες βιβλιοθήκες Python:


# Περιεχόμενα του requirements.txt (Θα δημιουργηθεί με όλες τις βιβλιοθήκες)

Μπορείτε να εγκαταστήσετε όλες τις απαραίτητες βιβλιοθήκες χρησιμοποιώντας το pip:

pip install -r requirements.txt

Σημείωση για Windows χρήστες: Εάν αντιμετωπίσετε προβλήματα με την παράλληλη επεξεργασία (multiprocessing), μπορεί να χρειαστεί να ρυθμίσετε τη μέθοδο έναρξης (start method) σε spawn στην αρχή του main block του script, όπως έχει γίνει σε ορισμένες προσπάθειες.

Οδηγίες Εκτέλεσης

Ο φάκελος code/ περιέχει διάφορες εκδόσεις της λύσης, που δείχνουν την εξέλιξη και τις βελτιστοποιήσεις.

  1. Απλή/Βασική Υλοποίηση (success-simple.py)

    • Αυτό το script περιλαμβάνει ένα βασικό pipeline φόρτωσης δεδομένων, μηχανικής χαρακτηριστικών (text, author, network), δημιουργίας θετικών/αρνητικών δειγμάτων, εκπαίδευσης XGBoost και δημιουργίας αρχείου υποβολής.
    • Εκτέλεση: python code/success-simple.py
    • Αρχείο Εξόδου: submission.csv (με σκορ περίπου 0.208 Public LogLoss)
  2. Πρώτη Αποτυχημένη Προσπάθεια (failed-1st-attempt-create_training_data.py & failed-1st-attempt-train_predict.py)

    • Αυτή η προσπάθεια διαχωρίζει τη δημιουργία training data από την εκπαίδευση/πρόβλεψη και εισάγει παραλληλοποίηση στη δημιουργία χαρακτηριστικών και αρνητικών δειγμάτων.
    • Εκτέλεση:
      1. python code/failed-1st-attempt-create_training_data.py
      2. python code/failed-1st-attempt-train_predict.py
    • Αρχεία Εξόδου: training_data_optimized_multiprocessing.npz, best_model_optimized.pkl (δεν παράγει απευθείας .csv submission)
  3. Δεύτερη "Αποτυχημένη" Προσπάθεια (failed-2nd-attempt.py)

    • Παρά το όνομά της, αυτή η προσπάθεια εισάγει πιο προηγμένα χαρακτηριστικά (όπως Word2Vec, text statistics, temporal features) και εκτεταμένη παραλληλοποίηση σε όλες τις φάσεις.
    • Εκτέλεση: python code/failed-2nd-attempt.py
    • Αρχείο Εξόδου: enhanced_submission_parallel.csv (με Public Score 6.22277 και Private Score 6.19061)
  4. Βελτιωμένη/Τελική Προσπάθεια (success-improved.py)

    • Αυτό το script ενσωματώνει πολλές βελτιστοποιήσεις σε ένα ενιαίο pipeline, συμπεριλαμβανομένων lazy loading, caching, και βελτιωμένου negative sampling, καθώς και πιο σύνθετων χαρακτηριστικών (Word2Vec, Sentence Transformers, βελτιωμένα author/network features).
    • Εκτέλεση: python code/success-improved.py
    • Αρχείο Εξόδου: submission_optimized.csv (με Public Score 0.15045 και Private Score 0.14844)

Αποτελέσματα Kaggle (Ενδεικτικά) (Χρήση logloss αλγορίθμου)

Ενδεικτικά αποτελέσματα από υποβολές στο Kaggle Leaderboard:

Script Submission Filename Public LogLoss Private LogLoss
success-simple.py submission.csv ~0.20878 ~0.20439
failed-2nd-attempt.py enhanced_submission_parallel.csv 6.22277 6.19061
success-improved.py submission_optimized.csv 0.15045 0.14844

Αναφορές

Η υλοποίηση βασίστηκε σε αρχές και τεχνικές που καλύφθηκαν στο μάθημα NLP 053 - CSE UOI 2025, καθώς και σε ευρύτερη βιβλιογραφία για την πρόβλεψη συνδέσεων και την επεξεργασία φυσικής γλώσσας. Πιο συγκεκριμένα, χρησιμοποιήθηκαν έννοιες όπως:

  • Vector Space Model και TF-IDF
  • Τεχνικές Feature Engineering
  • Τεχνικές Ανάλυσης Γράφων (π.χ., common neighbors, PageRank, Adamic-Adar, Resource Allocation, Preferential Attachment)
  • Word Embeddings (Word2Vec, Sentence Transformers)
  • Μοντέλα Ensemble (XGBoost, Random Forest)
  • Τεχνικές Βελτιστοποίησης (Hyperparameter Tuning, Cross-validation, Regularization)
  • Παράλληλη επεξεργασία για βελτιστοποίηση απόδοσης

Αποποίηση Ευθύνης

Αυτό το repository παρέχεται ως εκπαιδευτικό και ερευνητικό υλικό. Ο κώδικας έχει σχεδιαστεί για να λειτουργεί στο συγκεκριμένο σύνολο δεδομένων της πρόκλησης και μπορεί να απαιτεί προσαρμογές για διαφορετικά σενάρια.

About

exploring machine learning methodologies for citation link prediction within academic networks. This project leverages Natural Language Processing, graph theory, and advanced feature engineering to identify potential citation links, demonstrating an evolutive development process from baseline approaches to optimized, performance-driven solutions.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages