- Python 3.x
- Πλοηγηθείτε στον φάκελο του project
- Δημιουργήστε ένα virtual environment Python:
python -m venv venv
- Ενεργοποιήστε το virtual environment:
- Σε Windows:
.\venv\Scripts\activate
- Σε macOS/Linux:
source venv/bin/activate
- Σε Windows:
- Εγκαταστήστε τις βιβλιοθήκες του project:
pip install -r requirements.txt
- Εγκαταστήστε την επέκταση για την ελληνική γλώσσα του Spacy:
python -m spacy download el_core_news_sm
Όλα τα μέρη μπορούν να εκτελεστούν ανεξάρτητα μεταξύ τους
-
Αρχεία μέρους 1:
dataCleanupPart1.py
,inverse_index.py
,search_engine.py
,search.py
,static/
,assets/
,templates/
Το μέρος 1 υποστηρίζει την μηχανή αναζήτησης. Για την εκτέλεση του απαιτείται το original dataset να είναι στον φάκελο του προγράμματος ή οι σταθερές με όνομα FILEPATH στα αρχεία κώδικα να δείχνουν στην θέση του dataset μέσα στον υπολογιστή, διαφορετικά θα εμφανίσει κατάλληλο μήνυμα. Η εκτέλεση γίνεται με την εντολή
python3 search.py
. Δεν χρειάζεται να περαστεί κάποια παράμετρος. Ο καθαρισμός ομιλιών και η δημιουργία του αντεστραμμένου πίνακα σε περίπτωση που δεν έχουν δημιουργηθεί γίνεται αυτόματα μέσα από το πρόγραμμα, δηλαδή δεν χρειάζεται να τρέξει κάποια εντολή.
-
Αρχεία μέρους 2:
part3.py
,cacheAndSaved/
speeches.db
(generated)helpers/
Το μέρος 2 υποστηρίζει όλα τα ζητούμενα της εκφώνησης και τα εκτελέι με command line arguments
python part2.py --help
για πληροφορίες.-
python part2.py --process-keywords
Υπολογίζει τα keywords ανά ομιλία, ομιλητή και κόμμα και λόγω όγκου τα αποθηκεύει στη βάση αντί να τα εμφανίζει. -
python parth2.py --gather-politician-keywords "μητσοτακης κωνσταντινου κυριακος"
Υπολογίζει τα keywords ανά χρονιά για το άτομο στα εισαγωγικά. Το όνομα δίνεται σε μη τονισμένη τυπική μορφή, όπως στο παράδειγμα. -
python parth2.py --gather-party-keywords "νεα δημοκρατια"
Υπολογίζει τα keywords ανά χρονιά για το κόμμα στα εισαγωγικά. Το όνομα δίνεται σε μη τονισμένη τυπική μορφή, όπως στο παράδειγμα. -
python part2.py --gather-total-keywords
Υπολογίζει τα keywords ανά ομιλία, και εμφανίζει ανά χρονιά την εξέλιξή τους. -
python part2.py --demo
Τρέχει ένα demo που εμφανίζει τη χρονική εξέλιξη των keywords για τον κ. Κυριάκο Μητσοτάκη και τη Νέα Δημοκρατία
Επίσης παρέχονται οι παράμετροι
--max-rows {number}
και--output {filename.csv}
ώστε η εκτέλεση να πραγματοποιηθεί με άνω φράγμα στο πλήθος των ομιλιών ή να διοχετευτεί το output σε ένα csv αρχείο. -
-
Αρχεία μέρους 3:
part3.py
,cacheAndSaved/
speeches.db
(generated)helpers/
Για το μέρος 3, αρκεί να τρέξει
python part3.py
που by-default θα εμφανίσει τα 5 πιο όμοια ζεύγη.Επίσης παρέχονται οι παράμετροι
--top-k {number}
και--output {filename.csv}
ώστε να επιστρέψει επιθυμητό πλήθος ζευγών ή να διοχετευτεί το output σε ένα csv αρχείο.
- Αρχεία μέρους 4:
lsi.py
,inverse_index.py
,dataCleanupPart1.py
Αρκεί να τρέξει η εντολήpython3 lsi.py lsi
Παράγει το αρχείοprojected_documents.nzp
το οποίο περιέχει τις αναπαραστάσεις των ομιλιών στον νέο χώρο. Για να εκφραστούν οι ομιλίες σε χώρο διαστάσεων από τον χρήστη αρκεί να διαγραφεί το παραπάνω αρχείο (εάν έχει δημιουργηθεί) και να αλλάξει η τιμή της σταθεράς THRESHOLD που είναι δηλωμένη στο αρχείοlsi.py
. Ως default τιμή έχει 80 (με αυτήν που έγιναν τα πειράματα στο report)
- Αρχεία μέρους 5:
lsi.py
,inverse_index.py
,dataCleanupPart1.py
Αρκεί να τρέξει η εντολήpython3 lsi.py clustering <number1>
όπου number1 ένας φυσικός αριθμός που αντιστοιχεί στο cluster του οποίου θα τυπωθούν οι ομιλίες στο τερματικό. Θα παραχθούν τα αρχείαkmeans_results.npz
final_clustering_results.pkl
τα οποία θα περιέχουν τα αποτελέσματα της ομαδοποίησης. Οπότε για να τυπωθούν οι ομιλίες άλλου cluster αρκεί να τρέξει η παραπάνω εντολή για διαφορετικό number1. Οι default τιμές σε THRESHOLD και CLUSTER είναι 80 και 100 αντίστοιχα. Για να εκτελεστεί ο κώδικας για διαφορετικές τιμές πρέπει να αλλάξουν οι τιμές αυτών των σταθερών που είναι δηλωμένες στην αρχή τουlsi.py
και φυσικά να διαγραφούν όλα τα αρχεία εάν έχουν δημιουργηθεί γιατί θα περιέχουν αποτελέσματα από την προηγούμενεη εκτέλεση. Μετά απλά εκτελείται πάλι ηpython3 lsi.py clustering <number1>
.
-
Αρχεία μέρους 6:
part6.py
,cacheAndSaved/
speeches.db
(generated)helpers/
Το μέρος 6 υποστηρίζει command line arguments όπου δέχεται σαν όρισμα τους ομιλητές προς σύγκρηση και ένα άνω φράγμα στο πλήθος ομιλιών (default 200).
python part6.py --help
για πληροφορίεςpython part6.py --demo
τρέχει μια demo λειτουργία, όπου συλλέγει και εμφανίζει τη σύγκριση για δύο πολιτικούς, τουςΚυριάκος Μητσοτάκης
καιΑλέξης Τσίπρας
. Είναι αντίστοιχο της εντολήςpython part6.py --politicians "μητσοτακης κωνσταντινου κυριακος" "τσιπρας παυλου αλεξιος" --limit 200