Ταξινόμηση και πρόβλεψη κειμένου χρησιμοποιώντας την προσέγγιση Bag Of Words

Υπάρχουν διάφορες προσεγγίσεις για την ταξινόμηση κειμένου. Σε άλλα άρθρα έχω καλύψει Multinomial Naive Bayes και Neural Networks.

Μία από τις απλούστερες και πιο συνηθισμένες προσεγγίσεις ονομάζεται "Bag of Words". Έχει χρησιμοποιηθεί από εμπορικά προϊόντα ανάλυσης, συμπεριλαμβανομένων των Clarabridge, Radian6 και άλλων.

Η προσέγγιση είναι σχετικά απλή: δεδομένου ενός συνόλου θεμάτων και ενός συνόλου όρων που σχετίζονται με κάθε θέμα, καθορίστε ποια θέματα υπάρχουν σε ένα έγγραφο (για παράδειγμα, μια πρόταση).

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

Αυτό φαίνεται πολύ απλό για να είναι χρήσιμο; Δοκιμάστε το προτού προχωρήσετε σε συμπεράσματα. Στο NLP, συμβαίνει συχνά ότι μια απλή προσέγγιση μπορεί μερικές φορές να προχωρήσει πολύ.

Θα χρειαστούμε τρία πράγματα:

  • Ένα αρχείο ορισμού θεμάτων / λέξεων
  • Μια λειτουργία ταξινομητή
  • Ένα σημειωματάριο για τη δοκιμή του ταξινομητή μας

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

Θέματα και λέξεις

Το αρχείο ορισμού μας είναι σε μορφή JSON. Θα το χρησιμοποιήσουμε για να ταξινομήσουμε τα μηνύματα μεταξύ των ασθενών και μιας νοσοκόμας που έχει ανατεθεί στη φροντίδα τους.

topic.json

Υπάρχουν δύο στοιχεία σημειώσεων σε αυτόν τον ορισμό.

Πρώτον, ας δούμε μερικούς όρους και όρους. Για παράδειγμα, το "bruis" είναι ένα στέλεχος. Θα καλύψει supersets όπως "μώλωπες", "μώλωπες" και ούτω καθεξής. Δεύτερον, οι όροι που περιέχουν * είναι στην πραγματικότητα μοτίβα , για παράδειγμα * το dpm είναι ένα μοτίβο για ένα αριθμητικό d igit ακολουθούμενο από το "pm".

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

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

Ας δοκιμάσουμε κάποια ταξινόμηση.

Ο ταξινομητής επιστρέφει ένα σύνολο αποτελεσμάτων JSON που περιέχει τις προτάσεις που σχετίζονται με κάθε θέμα που βρίσκεται στο μήνυμα. Ένα μήνυμα μπορεί να περιέχει πολλές προτάσεις και μια πρόταση μπορεί να συσχετιστεί με κανένα, ένα ή πολλά θέματα.

Ας ρίξουμε μια ματιά στον ταξινομητή μας. Ο κωδικός είναι εδώ.

msgClassify.py

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

Προγνωστική μοντελοποίηση

Η συνολική ταξινόμηση για ένα σύνολο εγγράφων που σχετίζονται με ένα αποτέλεσμα μπορεί να χρησιμοποιηθεί για τη δημιουργία ενός προγνωστικού μοντέλου.

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

Θα μπορούσατε να χρησιμοποιήσετε μια παρόμοια τεχνική για άλλους τύπους μηνυμάτων που σχετίζονται με κάποιο δυαδικό αποτέλεσμα.

Αυτή η διαδικασία ακολουθεί ορισμένα βήματα:

  • Ένα σύνολο μηνυμάτων ταξινομούνται και κάθε θέμα λαμβάνει έναν αριθμό για αυτό το σύνολο. Το αποτέλεσμα είναι μια σταθερή λίστα θεμάτων με κατανομή% από τα μηνύματα.
  • Στη συνέχεια, η κατανομή θεμάτων εκχωρείται δυαδική τιμή , στην περίπτωσή μας 0 εάν δεν υπήρχε νοσηλεία και 1 εάν υπήρχε νοσηλεία
  • Ένας αλγόριθμος λογιστικής παλινδρόμησης χρησιμοποιείται για τη δημιουργία ενός προγνωστικού μοντέλου
  • Το μοντέλο χρησιμοποιείται για την πρόβλεψη του αποτελέσματος από νέα δεδομένα

Ας δούμε τα δεδομένα εισόδου μας. Τα δεδομένα σας πρέπει να έχουν παρόμοια δομή. Χρησιμοποιούμε ένα pandas DataFrame.

Το "περιστατικό" είναι το δυαδικό αποτέλεσμα και πρέπει να είναι η πρώτη στήλη στα δεδομένα εισαγωγής.

Κάθε επόμενη στήλη είναι ένα θέμα και το% της ταξινόμησης από το σύνολο των μηνυμάτων που ανήκουν στον ασθενή.

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

Τα δεδομένα εισαγωγής σας θα έχουν διαφορετικά θέματα, διαφορετικές ετικέτες στηλών και διαφορετική δυαδική συνθήκη, αλλά διαφορετικά θα έχουν παρόμοια δομή.

Ας χρησιμοποιήσουμε το scikit-learning για να δημιουργήσουμε μια Λογιστική Παλινδρόμηση και να δοκιμάσουμε το μοντέλο μας.

Εδώ είναι η παραγωγή μας:

precision recall f1-score support 0 0.66 0.69 0.67 191 1 0.69 0.67 0.68 202avg / total 0.68 0.68 0.68 393

Η ακρίβεια και η ανάκληση αυτού του μοντέλου σε σχέση με τα δεδομένα δοκιμής είναι στα υψηλά 60's - ελαφρώς καλύτερη από μια εικασία , και δυστυχώς δεν είναι αρκετά ακριβής ώστε να έχει μεγάλη αξία, δυστυχώς.

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

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

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

Η προσέγγιση "Bag of Words" είναι κατάλληλη για συγκεκριμένα είδη εργασιών ταξινόμησης κειμένων, ιδιαίτερα όταν η γλώσσα δεν έχει αποχρώσεις.

Απολαμβάνω.