Προγραμματισμός

8 υπέροχες βιβλιοθήκες Python για επεξεργασία φυσικής γλώσσας

Η επεξεργασία φυσικής γλώσσας, ή NLP για συντομία, περιγράφεται καλύτερα ως "AI για ομιλία και κείμενο". Η μαγεία πίσω από φωνητικές εντολές, μετάφραση ομιλίας και κειμένου, ανάλυση συναισθημάτων, σύνοψη κειμένων και πολλές άλλες γλωσσικές εφαρμογές και αναλύσεις, η επεξεργασία φυσικής γλώσσας έχει βελτιωθεί δραματικά μέσω της βαθιάς μάθησης.

Η γλώσσα Python παρέχει μια βολική διεπαφή σε όλες τις ποικιλίες της μηχανικής μάθησης, συμπεριλαμβανομένης της NLP. Στην πραγματικότητα, υπάρχει μια αμηχανία των πλούτων NLP για να διαλέξετε στο οικοσύστημα Python. Σε αυτό το άρθρο θα διερευνήσουμε καθεμία από τις βιβλιοθήκες NLP που διατίθενται για το Python - τις περιπτώσεις χρήσης τους, τα δυνατά τους σημεία, τις αδυναμίες τους και το γενικό επίπεδο δημοτικότητάς τους.

Σημειώστε ότι ορισμένες από αυτές τις βιβλιοθήκες παρέχουν εκδόσεις υψηλότερου επιπέδου της ίδιας λειτουργικότητας που εκτίθενται από άλλες, καθιστώντας τη λειτουργικότητα ευκολότερη στη χρήση με κόστος ακριβείας ή απόδοσης. Θα θελήσετε να επιλέξετε μια βιβλιοθήκη κατάλληλη τόσο για το επίπεδο εμπειρογνωμοσύνης σας όσο και για τη φύση του έργου.

CoreNLP

Η βιβλιοθήκη CoreNLP - ένα προϊόν του Πανεπιστημίου του Στάνφορντ - δημιουργήθηκε για να είναι μια έτοιμη για παραγωγή λύση επεξεργασίας φυσικής γλώσσας, ικανή να προσφέρει προβλέψεις και αναλύσεις NLP σε κλίμακα. Το CoreNLP είναι γραμμένο σε Java, αλλά είναι διαθέσιμα πολλά πακέτα και API Python, συμπεριλαμβανομένης μιας εγγενούς βιβλιοθήκης Python NLP που ονομάζεται StanfordNLP.

Το CoreNLP περιλαμβάνει μια ευρεία γκάμα γλωσσικών εργαλείων - επισήμανση γραμματικής, ονομασία αναγνώρισης οντοτήτων, ανάλυση, ανάλυση συναισθημάτων και πολλά άλλα. Έχει σχεδιαστεί για να είναι ανθρώπινη γλώσσα αγνωστικική και προς το παρόν υποστηρίζει αραβικά, κινέζικα, γαλλικά, γερμανικά και ισπανικά, εκτός από τα αγγλικά (με ρωσική, σουηδική και δανική υποστήριξη από τρίτους) Το CoreNLP περιλαμβάνει επίσης έναν διακομιστή API Ιστού, έναν βολικό τρόπο για την εξυπηρέτηση προβλέψεων χωρίς υπερβολική δουλειά.

Το πιο εύκολο μέρος για να ξεκινήσετε με τα περιτυλίγματα Python του CoreNLP είναι το StanfordNLP, η εφαρμογή αναφοράς που δημιουργήθηκε από το Stanford NLP Group. Εκτός από το ότι είναι καλά τεκμηριωμένο, το StanfordNLP διατηρείται επίσης τακτικά. πολλές από τις άλλες βιβλιοθήκες Python για CoreNLP δεν έχουν ενημερωθεί εδώ και αρκετό καιρό.

Το CoreNLP υποστηρίζει επίσης τη χρήση του NLTK, μιας μεγάλης βιβλιοθήκης Python NLP που συζητείται παρακάτω. Από την έκδοση 3.2.3, το NLTK περιλαμβάνει διεπαφές με το CoreNLP στον αναλυτή του. Απλά φροντίστε να χρησιμοποιήσετε το σωστό API.

Το προφανές μειονέκτημα του CoreNLP είναι ότι θα χρειαστείτε κάποια εξοικείωση με την Java για να το ξεκινήσετε, αλλά αυτό δεν μπορεί να επιτύχει μια προσεκτική ανάγνωση της τεκμηρίωσης. Ένα άλλο εμπόδιο θα μπορούσε να είναι η αδειοδότηση του CoreNLP. Όλη η εργαλειοθήκη έχει άδεια χρήσης βάσει του GPLv3, πράγμα που σημαίνει ότι οποιαδήποτε χρήση σε ιδιόκτητο λογισμικό που διανέμετε σε άλλους θα απαιτεί εμπορική άδεια.

Τζένσιμ

Ο Gensim κάνει μόνο δύο πράγματα, αλλά τα κάνει πολύ καλά. Το επίκεντρό της είναι η στατιστική σημασιολογία - η ανάλυση εγγράφων για τη δομή τους και η βαθμολόγηση άλλων εγγράφων με βάση την ομοιότητά τους.

Το Gensim μπορεί να συνεργαστεί με πολύ μεγάλα σώματα κειμένου με ροή εγγράφων στη μηχανή ανάλυσής του και εκτελώντας σταδιακά μη επιτηρούμενη μάθηση. Μπορεί να δημιουργήσει πολλούς τύπους μοντέλων, κάθε ένα κατάλληλο για διαφορετικά σενάρια: Word2Vec, Doc2Vec, FastText και Latent Dirichlet Allocation.

Η λεπτομερής τεκμηρίωση του Gensim περιλαμβάνει σεμινάρια και οδηγούς οδηγιών που εξηγούν βασικές έννοιες και τις επεξηγούν με πρακτικά παραδείγματα. Κοινές συνταγές είναι επίσης διαθέσιμες στο Gensim GitHub repo.

NLTK

Το Εργαλείο φυσικής γλώσσας, ή NLTK για συντομία, είναι από τις πιο γνωστές και ισχυρότερες από τις βιβλιοθήκες επεξεργασίας φυσικής γλώσσας Python. Πολλές εταιρείες (σύνολα δεδομένων) και εκπαιδευμένα μοντέλα είναι διαθέσιμα για χρήση με το NLTK από το κουτί, ώστε να μπορείτε να ξεκινήσετε να πειραματίζεστε με το NLTK αμέσως.

Όπως αναφέρει η τεκμηρίωση, το NLTK παρέχει μια ευρεία ποικιλία εργαλείων για την επεξεργασία κειμένου: «ταξινόμηση, διακριτικοποίηση, καταγραφή, επισήμανση, ανάλυση και σημασιολογική συλλογιστική». Μπορεί επίσης να λειτουργήσει με ορισμένα εργαλεία τρίτων για τη βελτίωση της λειτουργικότητάς του.

Λάβετε υπόψη ότι το NLTK δημιουργήθηκε από και για ακαδημαϊκό ερευνητικό κοινό. Δεν είχε σχεδιαστεί για να εξυπηρετεί μοντέλα NLP σε περιβάλλον παραγωγής. Η τεκμηρίωση είναι επίσης κάπως αραιή. ακόμη και οι τρόποι είναι λεπτοί. Επίσης, δεν υπάρχει δυαδικό δυαδικό ψηφίο. θα χρειαστεί να εγκαταστήσετε την έκδοση 32-bit του Python για να τη χρησιμοποιήσετε. Τέλος, το NLTK δεν είναι ούτε η ταχύτερη βιβλιοθήκη, αλλά μπορεί να επιταχυνθεί με παράλληλη επεξεργασία.

Εάν είστε αποφασισμένοι να αξιοποιήσετε αυτό που υπάρχει στο NLTK, μπορείτε να ξεκινήσετε αντ 'αυτού με το TextBlob (συζητείται παρακάτω).

Πρότυπο

Εάν το μόνο που χρειάζεται να κάνετε είναι να αποκόψετε έναν δημοφιλή ιστότοπο και να αναλύσετε αυτό που βρίσκετε, αναζητήστε το Pattern. Αυτή η βιβλιοθήκη επεξεργασίας φυσικής γλώσσας είναι πολύ μικρότερη και στενότερη από άλλες βιβλιοθήκες που καλύπτονται εδώ, αλλά αυτό σημαίνει επίσης ότι επικεντρώνεται στην εκτέλεση μιας κοινής εργασίας πολύ καλά.

Το Pattern συνοδεύεται από ενσωματωμένα στοιχεία για τη συλλογή ορισμένων δημοφιλών υπηρεσιών και πηγών ιστού (Google, Wikipedia, Twitter, Facebook, γενικό RSS κ.λπ.), τα οποία είναι όλα διαθέσιμα ως μονάδες Python (π.χ., από το pattern.web εισαγωγή Twitter). Δεν χρειάζεται να ανακαλύψετε εκ νέου τους τροχούς για τη λήψη δεδομένων από αυτούς τους ιστότοπους, με όλες τις ξεχωριστές ιδιότητές τους. Στη συνέχεια, μπορείτε να εκτελέσετε μια ποικιλία κοινών λειτουργιών NLP στα δεδομένα, όπως ανάλυση συναισθημάτων.

Το Pattern εκθέτει μερικές από τις λειτουργίες του χαμηλότερου επιπέδου, επιτρέποντάς σας να χρησιμοποιείτε συναρτήσεις NLP, αναζήτηση n-gram, διανύσματα και γραφήματα, αν θέλετε. Διαθέτει επίσης μια ενσωματωμένη βοηθητική βιβλιοθήκη για εργασία με κοινές βάσεις δεδομένων (MySQL, SQLite και MongoDB στο μέλλον), καθιστώντας εύκολη την εργασία με πίνακες δεδομένων που έχουν αποθηκευτεί από προηγούμενες συνεδρίες ή έχουν ληφθεί από τρίτα μέρη.

Πολύγλωσσος

Το Polyglot, όπως υποδηλώνει το όνομα, επιτρέπει εφαρμογές επεξεργασίας φυσικών γλωσσών που ασχολούνται με πολλές γλώσσες ταυτόχρονα.

Οι δυνατότητες NLP στο Polyglot αντικατοπτρίζουν αυτά που υπάρχουν σε άλλες βιβλιοθήκες NLP: tokenization, αναγνώριση οντοτήτων, ετικέτες μερικών ομιλιών, ανάλυση συναισθημάτων, ενσωματώσεις λέξεων κ.λπ. Για καθεμία από αυτές τις λειτουργίες, το Polyglot παρέχει μοντέλα που λειτουργούν με τις απαραίτητες γλώσσες.

Λάβετε υπόψη ότι η υποστήριξη γλώσσας του Polyglot διαφέρει σημαντικά από χαρακτηριστικό σε λειτουργία. Για παράδειγμα, το σύστημα διακριτικής υποστήριξης υποστηρίζει σχεδόν 200 γλώσσες (κυρίως επειδή χρησιμοποιεί τον αλγόριθμο Τμηματοποίησης Κειμένου Unicode) και η ανάλυση συναισθημάτων υποστηρίζει 136 γλώσσες, αλλά η επισήμανση μερικής ομιλίας υποστηρίζει μόνο 16.

PyNLPI

Το PyNLPI (προφέρεται "ανανάς") έχει μόνο έναν βασικό κατάλογο λειτουργιών επεξεργασίας φυσικής γλώσσας, αλλά έχει μερικές πραγματικά χρήσιμες δυνατότητες μετατροπής δεδομένων και επεξεργασίας δεδομένων για μορφές δεδομένων NLP.

Οι περισσότερες από τις συναρτήσεις NLP στο PyNLPI είναι για βασικές εργασίες, όπως διαγραφή ή εξαγωγή n-gram, μαζί με ορισμένες στατιστικές συναρτήσεις χρήσιμες στο NLP, όπως η απόσταση Levenshtein μεταξύ χορδών ή αλυσίδων Markov. Αυτές οι λειτουργίες εφαρμόζονται σε καθαρή Python για ευκολία, επομένως είναι απίθανο να έχουν απόδοση σε επίπεδο παραγωγής.

Ωστόσο, το PyNLPI λάμπει για τη συνεργασία με μερικούς από τους πιο εξωτικούς τύπους δεδομένων και μορφές που έχουν αναδυθεί στον χώρο NLP. Το PyNLPI μπορεί να διαβάσει και να επεξεργαστεί τις μορφές δεδομένων GIZA, Moses ++, SoNaR, Taggerdata και TiMBL και αφιερώνει μια ολόκληρη ενότητα στην εργασία με το FoLiA, τη μορφή εγγράφου XML που χρησιμοποιείται για τον σχολιασμό γλωσσικών πόρων όπως το corpora (σώματα κειμένου που χρησιμοποιούνται για μετάφραση ή άλλη ανάλυση) .

Θα θελήσετε να προσεγγίσετε το PyNLPI όποτε ασχολείστε με αυτούς τους τύπους δεδομένων.

SpaCy

Το SpaCy, το οποίο αγγίζει την Python για ευκολία και το Cython για ταχύτητα, τιμολογείται ως «επεξεργασία φυσικής γλώσσας βιομηχανικής ισχύος». Οι δημιουργοί του ισχυρίζονται ότι συγκρίνεται ευνοϊκά με τους NLTK, CoreNLP και άλλους ανταγωνιστές όσον αφορά την ταχύτητα, το μέγεθος του μοντέλου και την ακρίβεια. Το βασικό μειονέκτημα του SpaCy είναι ότι είναι σχετικά νέο, επομένως καλύπτει μόνο την αγγλική και μερικές άλλες (κυρίως ευρωπαϊκές) γλώσσες. Τούτου λεχθέντος, το SpaCy έχει ήδη φτάσει στην έκδοση 2.2 από αυτό το γράψιμο.

Το SpaCy περιλαμβάνει τα περισσότερα χαρακτηριστικά που βρίσκονται σε εκείνα τα ανταγωνιστικά πλαίσια: ετικέτες ομιλίας, ανάλυση εξάρτησης, αναγνώριση οντοτήτων, διακριτικοποίηση, τμηματοποίηση προτάσεων, λειτουργίες αντιστοίχισης βάσει κανόνων, διανύσματα λέξεων και πολλά άλλα. Το SpaCy περιλαμβάνει επίσης βελτιστοποιήσεις για λειτουργίες GPU - τόσο για την επιτάχυνση του υπολογισμού όσο και για την αποθήκευση δεδομένων στην GPU για την αποφυγή αντιγραφής.

Η τεκμηρίωση του Spacy είναι εξαιρετική. Ένας οδηγός εγκατάστασης δημιουργεί ενέργειες εγκατάστασης γραμμής εντολών για Windows, Linux και macOS και για διαφορετικά περιβάλλοντα Python (pip, conda κ.λπ.). Τα γλωσσικά μοντέλα εγκαθίστανται ως πακέτα Python, ώστε να μπορούν να παρακολουθούνται ως μέρος της λίστας εξάρτησης μιας εφαρμογής.

TextBlob

Το TextBlob είναι ένα φιλικό front-end στις βιβλιοθήκες Pattern και NLTK, τυλίγοντας και τις δύο αυτές βιβλιοθήκες σε υψηλού επιπέδου, εύχρηστες διεπαφές. Με το TextBlob, ξοδεύετε λιγότερο χρόνο παλεύοντας με τις περιπλοκές των Pattern και NLTK και περισσότερο χρόνο για να λάβετε αποτελέσματα.

Το TextBlob εξομαλύνει τον τρόπο αξιοποιώντας τα εγγενή αντικείμενα Python και τη σύνταξη. Τα παραδείγματα γρήγορης εκκίνησης δείχνουν πώς τα προς επεξεργασία κείμενα αντιμετωπίζονται απλώς ως συμβολοσειρές και κοινές μέθοδοι NLP όπως η επισήμανση μέρους του λόγου είναι διαθέσιμες ως μέθοδοι σε αυτά τα αντικείμενα συμβολοσειράς.

Ένα άλλο πλεονέκτημα του TextBlob είναι ότι μπορείτε να "σηκώσετε την κουκούλα" και να αλλάξετε τη λειτουργικότητά του καθώς γίνετε πιο σίγουροι. Πολλά προεπιλεγμένα στοιχεία, όπως το σύστημα ανάλυσης συναισθημάτων ή το tokenizer, μπορούν να αντικατασταθούν όπως απαιτείται. Μπορείτε επίσης να δημιουργήσετε αντικείμενα υψηλού επιπέδου που συνδυάζουν στοιχεία - αυτόν τον αναλυτή συναισθημάτων, αυτόν τον ταξινομητή κ.λπ. - και να τα χρησιμοποιήσετε ξανά με ελάχιστη προσπάθεια. Με αυτόν τον τρόπο, μπορείτε να δημιουργήσετε πρωτότυπα κάτι γρήγορα με το TextBlob και, στη συνέχεια, να το βελτιώσετε αργότερα.

$config[zx-auto] not found$config[zx-overlay] not found