Η χρήση βιβλιοθηκών κώδικα µειώνει το χρόνο ανάπτυξης νέου λογισµικού, δίνει τη δυνατότητα στους προγραµµατιστές να εστιάσουν περισσότερο στην υλοποίηση νέων λειτουργικών απαιτήσεων, και αυξάνει την αξιοπιστία του παραγόµενου κώδικα. Έτσι, η αναζήτηση κατάλληλων βιβλιοθηκών είναι απαραίτητη για τη γρήγορη ανάπτυξη λογισµικού υψηλής ποιότητας. Ταυτόχρονα, όµως, απαιτείται χρόνος (και αντίστοιχο κόστος) για διερεύνηση και επιλογή βιβλιοθηκών µεταξύ των χιλιάδων σχετικών λύσεων που διαµοιϱάζονται µέσω αποθετηρίων λογισµικού. Στην εργασία αυτή, εστιάζουµε στο αρχικό στάδιο της ανάπτυξης έργων λογισµικού, όπου η διαθέσιµη πληροφορία για αναζήτηση συνίσταται στην περιγραφή των έργων προς ανάπτυξη µε λέξεις-κλειδιά. Υπάρχοντα συστήµατα µελετάνε την εξαγωγή σχετικών βιβλιοθηκών ϐάσει της οµοιότητας των περιγραφών τους µε λέξεις-κλειδιά. Αλλά αυτή η πρακτική αγνοεί τη δηµοτικότητα των σχετικών βιβλιοθηκών και τις σηµασιολογικές συσχετίσεις µεταξύ λέξεων που δε βρίσκονται στις περιγραφές τους, όπως λέξεις που βρίσκονται στις περιγραφές έργων λογισµικού που τις χρησιµοποιούν. Για την ταυτόχρονη ενσωµάτωση των παραπάνω σηµασιολογικών συσχετίσεων και της δηµοτικότητας σε µοντέλα πρόβλεψης βιβλιοθηκών, προτείνουµε µια προσέγγιση συνεργατικού ϕιλτραρίσµατος. Για την ακρίβεια, οργανώνουµε βιβλιοθήκες και λέξεις-κλειδιά σε γράφους συσχετίσεων, όπου οι ακµές αντιστοιχούν σε εµφάνιση των λέξεων σε έργα λογισµικού που χρησιµοποιούν τις βιβλιοθήκες. ∆εδοµένης αυτής της οργάνωσης, εφαρµόζουµε παραλλαγές του αλγορίθµου PageRank για τη βαθµολόγηση των κόµβων του γράφου ϐάσει της σχετικότητάς τους µε λέξεις-κλειδιά που περιγράφουν το λογισµικό προς ανάπτυξη και προτείνουµε χρήση των βιβλιοθηκών µε την υψηλότερη βαθµολογία. Αυτή η πρακτική συγκρίνεται πειραµατικά µε υπάρχουσες εναλλακτικές σε δύο σύνολα δεδοµένων της γλώσσας Java, όπου χρησιµοποιούµε τα ονόµατα των έργων λογισµικού ως σύντοµες περγραφές. Η µέθοδός µας παρουσιάζει µεγαλύτερη προβλεπτική ικανότητα σε σχέση µε απλή αναζήτηση λέξεων-κλειδιών σε κλάσµατα του δευτερολέπτου και µπορεί να µεταβληθεί ώστε να παράγει ετερογενείς προβλέψεις.