Πίνακας περιεχομένων[Κρύβω][Προβολή]
Οι φωνητικές κλήσεις καταργούνται σταδιακά προς όφελος του κειμένου και των οπτικών στον τομέα της επικοινωνίας. Σύμφωνα με δημοσκόπηση του Facebook, περισσότεροι από τους μισούς αγοραστές προτιμούν να αγοράζουν από μια εταιρεία με την οποία μπορούν να μιλήσουν. Η συνομιλία έχει γίνει ο νέος κοινωνικά αποδεκτός τρόπος επικοινωνίας.
Επιτρέπει στις επιχειρήσεις να επικοινωνούν με τους πελάτες τους ανά πάσα στιγμή και από οποιαδήποτε τοποθεσία. Τα chatbots κερδίζουν ολοένα και μεγαλύτερη δημοτικότητα μεταξύ των εταιρειών και των πελατών λόγω της ευκολίας χρήσης τους και του μειωμένου χρόνου αναμονής.
Τα chatbot, ή τα αυτοματοποιημένα προγράμματα συνομιλίας, παρέχουν στους πελάτες μια πιο προσαρμοσμένη μέθοδο πρόσβασης σε υπηρεσίες μέσω μιας διεπαφής που βασίζεται σε κείμενο. Τα νεότερα chatbot με τεχνητή νοημοσύνη μπορούν να αναγνωρίσουν ένα ερώτημα (ερώτηση, εντολή, παραγγελία κ.λπ.) που έγινε από ένα άτομο (ή άλλο bot, έναρξη) σε ένα συγκεκριμένο περιβάλλον και να απαντήσουν κατάλληλα (απάντηση, ενέργεια κ.λπ.).
Σε αυτήν την ανάρτηση, θα δούμε τι είναι τα chatbot, τα οφέλη τους, περιπτώσεις χρήσης και πώς να φτιάξετε το δικό σας βαθιά μάθηση chatbot στην Python, μεταξύ άλλων.
Ας αρχίσουμε.
Λοιπόν, τι είναι τα chatbots;
Ένα chatbot αναφέρεται συχνά ως μια από τις πιο προηγμένες και πολλά υποσχόμενες μορφές αλληλεπίδρασης ανθρώπου-μηχανής. Αυτοί οι ψηφιακοί βοηθοί βελτιώνουν την εμπειρία των πελατών με τον εξορθολογισμό των αλληλεπιδράσεων μεταξύ ανθρώπων και υπηρεσιών.
Ταυτόχρονα, παρέχουν στις επιχειρήσεις νέες επιλογές για τη βελτιστοποίηση της διαδικασίας επικοινωνίας με τους πελάτες για αποτελεσματικότητα, γεγονός που μπορεί να μειώσει τα συμβατικά έξοδα υποστήριξης.
Με λίγα λόγια, είναι λογισμικό που βασίζεται σε AI που προορίζεται να επικοινωνεί με τους ανθρώπους στις φυσικές τους γλώσσες. Αυτά τα chatbot συχνά αλληλεπιδρούν μέσω ακουστικών ή γραπτών τεχνικών και μπορούν εύκολα να μιμηθούν ανθρώπινες γλώσσες προκειμένου να συνδεθούν με ανθρώπους με τρόπο που μοιάζει με άνθρωπο.
Τα chatbot μαθαίνουν από τις αλληλεπιδράσεις τους με τους χρήστες, γίνονται πιο ρεαλιστικά και αποτελεσματικά με την πάροδο του χρόνου. Μπορούν να χειριστούν ένα ευρύ φάσμα επιχειρηματικών δραστηριοτήτων, όπως η εξουσιοδότηση δαπανών, η επικοινωνία με καταναλωτές στο διαδίκτυο και η δημιουργία δυνητικών πελατών.
Δημιουργήστε το δικό σας chatbot βαθιάς εκμάθησης με python
Υπάρχουν πολλά διαφορετικά είδη chatbots στον τομέα του μάθηση μηχανής και AI. Ορισμένα chatbots είναι εικονικοί βοηθοί, ενώ άλλα είναι απλώς εκεί για να συνομιλούν, ενώ άλλα είναι πράκτορες εξυπηρέτησης πελατών.
Έχετε δει πιθανώς μερικούς από αυτούς που απασχολούνται από επιχειρήσεις για να απαντούν σε ερωτήσεις. Θα δημιουργήσουμε ένα μικρό chatbot σε αυτό το σεμινάριο για να απαντήσουμε σε ερωτήματα που ζητούνται συχνά.
1. Εγκατάσταση πακέτων
Το πρώτο μας βήμα είναι να εγκαταστήσουμε τα παρακάτω πακέτα.
2. Δεδομένα Εκπαίδευσης
Τώρα ήρθε η ώρα να καταλάβουμε τι είδους πληροφορίες θα χρειαστούμε για να δώσουμε το chatbot μας. Δεν χρειάζεται να κατεβάσουμε μεγάλα σύνολα δεδομένων επειδή πρόκειται για ένα απλό chatbot.
Θα χρησιμοποιήσουμε μόνο τις πληροφορίες που έχουμε δημιουργήσει μόνοι μας. Για να ακολουθήσετε αποτελεσματικά το μάθημα, θα χρειαστεί να δημιουργήσετε ένα αρχείο .JSON με την ίδια μορφή με αυτήν που βλέπετε παρακάτω. Το αρχείο μου ονομάζεται "intents.json".
Το αρχείο JSON χρησιμοποιείται για τη δημιουργία ενός συνόλου μηνυμάτων που ο χρήστης είναι πιθανό να εισαγάγει και να αντιστοιχίσει σε ένα σύνολο σχετικών απαντήσεων. Κάθε λεξικό στο αρχείο έχει μια ετικέτα που προσδιορίζει σε ποια ομάδα ανήκει κάθε μήνυμα.
Θα χρησιμοποιήσουμε αυτές τις πληροφορίες για να εκπαιδεύσουμε α νευρικό σύστημα για να κατηγοριοποιήσουμε μια φράση λέξεων ως μία από τις ετικέτες στο αρχείο μας.
Στη συνέχεια, μπορούμε απλώς να λάβουμε μια απάντηση από αυτές τις ομάδες και να την παρέχουμε στον χρήστη. Το chatbot θα είναι καλύτερο και πιο περίπλοκο αν το προσφέρετε με πρόσθετες ετικέτες, απαντήσεις και μοτίβα.
3. Φόρτωση δεδομένων JSON
Θα ξεκινήσουμε με τη φόρτωση των δεδομένων μας .json και την εισαγωγή ορισμένων λειτουργικών μονάδων. Συγκεντρώστε το αρχείο your.json στον ίδιο κατάλογο με το δικό σας Σενάριο Python. Τα δεδομένα μας .json θα αποθηκευτούν τώρα στη μεταβλητή δεδομένων.
4. Εξαγωγή δεδομένων
Τώρα ήρθε η ώρα να εξαγάγουμε τις πληροφορίες που χρειαζόμαστε από το αρχείο JSON. Απαιτούνται όλα τα μοτίβα, καθώς και η κλάση/ετικέτα στην οποία ανήκουν.
Θα χρειαστούμε επίσης μια λίστα με όλους τους μοναδικούς όρους στα μοτίβα μας (για λόγους που θα εξηγήσουμε αργότερα), οπότε ας δημιουργήσουμε μερικές κενές λίστες για να παρακολουθούμε αυτές τις τιμές.
Τώρα θα περιηγηθούμε στα δεδομένα JSON μας και θα ανακτήσουμε τις πληροφορίες που χρειαζόμαστε. Αντί να τις έχουμε ως συμβολοσειρές, θα χρησιμοποιήσουμε το nltk.word tokenizer για να μετατρέψουμε κάθε μοτίβο σε μια λίστα λέξεων.
Στη συνέχεια, στη λίστα docs_x, θα προσθέσουμε κάθε μοτίβο, μαζί με τη σχετική ετικέτα, στη λίστα docs_y.
5. Προέλευση λέξης
Η εύρεση της ρίζας μιας λέξης είναι γνωστή ως stemming. Για παράδειγμα, το στέλεχος της λέξης «αυτό» μπορεί να είναι «αυτό», ενώ το στέλεχος της λέξης «συμβαίνει» θα μπορούσε να είναι «συμβαίνει».
Θα χρησιμοποιήσουμε αυτήν την τεχνική stemming για να περιορίσουμε το λεξιλόγιο του μοντέλου μας και να προσπαθήσουμε να καταλάβουμε τι υπονοούν γενικά οι προτάσεις. Αυτός ο κώδικας θα δημιουργήσει απλώς μια μοναδική λίστα λέξεων με βάση που θα χρησιμοποιηθούν στην επόμενη φάση της προετοιμασίας των δεδομένων μας.
6. Τσάντα με λέξεις
Ήρθε η ώρα να μιλήσουμε για ένα σωρό λέξεις τώρα που έχουμε εισαγάγει τα δεδομένα μας και έχουμε δημιουργήσει ένα βασικό λεξιλόγιο. Νευρωνικά δίκτυα και οι αλγόριθμοι μηχανικής μάθησης, όπως όλοι γνωρίζουμε, απαιτούν αριθμητική εισαγωγή. Επομένως, η λίστα συμβολοσειρών μας δεν πρόκειται να την κόψει. Χρειαζόμαστε έναν μηχανισμό που να αναπαριστά τους αριθμούς στις προτάσεις μας, όπου μπαίνει ένας σάκος με λέξεις.
Κάθε φράση θα αντιπροσωπεύεται από μια λίστα με το μήκος του αριθμού των όρων στο λεξιλόγιο του μοντέλου μας. Κάθε λέξη στο λεξιλόγιό μας θα αντιπροσωπεύεται από μια θέση στη λίστα. Εάν η θέση στη λίστα είναι 1, η λέξη εμφανίζεται στη δήλωσή μας. αν είναι 0, η λέξη δεν εμφανίζεται στην πρόταση μας.
Το ονομάζουμε μια τσάντα με λέξεις επειδή δεν γνωρίζουμε τη σειρά με την οποία εμφανίζονται οι λέξεις στη φράση. το μόνο που γνωρίζουμε είναι ότι υπάρχουν στο λεξιλόγιο του μοντέλου μας.
Εκτός από τη δομή της εισόδου μας, πρέπει επίσης να διαμορφώσουμε την έξοδο μας έτσι ώστε το νευρωνικό δίκτυο να την κατανοεί. Θα δημιουργήσουμε λίστες εξόδου που θα είναι το μήκος του αριθμού των ετικετών/ετικέτες στο σύνολο δεδομένων μας, παρόμοιες με μια τσάντα λέξεων. Κάθε θέση στη λίστα αντιπροσωπεύει μια μοναδική ετικέτα/ετικέτα και το 1 σε οποιαδήποτε από αυτές τις θέσεις υποδεικνύει ποια ετικέτα/ετικέτα αντιπροσωπεύεται.
Τέλος, θα χρησιμοποιήσουμε πίνακες NumPy για να αποθηκεύσουμε τα δεδομένα εκπαίδευσης και την έξοδο μας.
7. Ανάπτυξη Μοντέλου
Είμαστε έτοιμοι να ξεκινήσουμε τη δημιουργία και την εκπαίδευση ενός μοντέλου τώρα που έχουμε προεπεξεργαστεί όλα τα δεδομένα μας. Θα χρησιμοποιήσουμε ένα πολύ βασικό νευρωνικό δίκτυο τροφοδοσίας με δύο κρυφά επίπεδα για τους στόχους μας.
Ο σκοπός του δικτύου μας θα είναι να εξετάσει μια συλλογή λέξεων και να τις αντιστοιχίσει σε μια τάξη (μία από τις ετικέτες μας από το αρχείο JSON). Θα ξεκινήσουμε καθιερώνοντας την αρχιτεκτονική του μοντέλου μας. Λάβετε υπόψη ότι μπορείτε να παίξετε με μερικούς από τους αριθμούς για να καταλήξετε σε ένα καλύτερο μοντέλο! Εκμάθηση μηχανών βασίζεται κυρίως σε δοκιμή και σφάλμα.
8. Εκπαίδευση & Αποταμίευση Μοντέλων
Ήρθε η ώρα να εκπαιδεύσουμε το μοντέλο μας στα δεδομένα μας τώρα που το ρυθμίσαμε! Αυτό θα το πετύχουμε προσαρμόζοντας τα δεδομένα μας στο μοντέλο. Ο αριθμός των εποχών που παρέχουμε είναι ο αριθμός των φορών που το μοντέλο θα εκτεθεί στα ίδια δεδομένα κατά τη διάρκεια της εκπαίδευσης.
Μπορούμε να αποθηκεύσουμε το μοντέλο στο μοντέλο αρχείου μόλις ολοκληρώσουμε την εκπαίδευσή του. Το tflearn είναι ένα σενάριο που μπορεί να χρησιμοποιηθεί σε άλλα σενάρια.
9. Χρήση chatbot
Τώρα μπορείτε να αρχίσετε να συνομιλείτε με το bot σας.
Πλεονεκτήματα του Chatbot
- Καθώς τα bot αναμένεται να λειτουργούν 365 ημέρες το χρόνο, 24 ώρες την ημέρα, χωρίς αμοιβή, αυξάνουν τη διαθεσιμότητα και την ταχύτητα αντίδρασης.
- Αυτά τα ρομπότ είναι τέλεια εργαλεία για την αντιμετώπιση των τριών βασικών Vs των μεγάλων δεδομένων: όγκος, ταχύτητα και ποικιλία.
- Τα Chatbots είναι λογισμικό που μπορεί να χρησιμοποιηθεί για να μάθει και να κατανοήσει τους καταναλωτές μιας εταιρείας.
- Έχει ανώτερη ισχύ που έχει φθηνό κόστος συντήρησης αφού έχει κορυφαία οφέλη.
- Οι εφαρμογές Chatbot δημιουργούν δεδομένα που μπορούν να διατηρηθούν και να χρησιμοποιηθούν για αναλύσεις και προβλέψεις.
Περίπτωση χρήσης
- Επίλυση ερωτημάτων πελατών
- Απαντώντας σε συχνές ερωτήσεις
- Ανάθεση πελατών στην ομάδα υποστήριξης
- Συλλογή σχολίων πελατών
- Προτείνετε νέες προσφορές
- Αγορά με συνομιλητικό εμπόριο
- IT Helpdesk
- Κράτηση καταλυμάτων
- Μεταφορά χρημάτων
Συμπέρασμα
Τα chatbots, όπως και άλλες τεχνολογίες τεχνητής νοημοσύνης, θα χρησιμοποιηθούν για να ενισχύσουν τις ανθρώπινες δεξιότητες και να απελευθερώσουν τους ανθρώπους ώστε να είναι πιο δημιουργικοί και ευφάνταστοι, επιτρέποντάς τους να αφιερώνουν περισσότερο χρόνο σε στρατηγικές και όχι τακτικές εργασίες.
Οι επιχειρήσεις, οι εργαζόμενοι και οι καταναλωτές είναι πιθανό να επωφεληθούν από βελτιωμένες λειτουργίες chatbot, όπως ταχύτερες προτάσεις και προβλέψεις, καθώς και εύκολη πρόσβαση σε τηλεδιάσκεψη υψηλής ευκρίνειας μέσα από μια συνομιλία, στο εγγύς μέλλον, όταν το AI συνδυάζεται με την ανάπτυξη Τεχνολογία 5G.
Αυτές και άλλες πιθανότητες εξακολουθούν να διερευνώνται, αλλά καθώς η συνδεσιμότητα στο Διαδίκτυο, η τεχνητή νοημοσύνη, το NLP και η μηχανική εκμάθηση προχωρούν, θα γίνονται πιο διαδεδομένες.
Chwoo
Χαίρετε Κ.
Σας ευχαριστούμε για αυτό το πρόγραμμα.
Εχω μία ερώτηση.
Το "bag_of_words" δεν έχει οριστεί. Δεν μπορώ να καταλάβω αυτό το σφάλμα.
Μπορείτε να μου πείτε πώς μπορώ να λύσω αυτό το σφάλμα;
Σας ευχαριστούμε για αυτό το πρόγραμμα!! Να έχεις μια όμορφη μέρα
Κίσσα
Προσθέστε μια συνάρτηση πριν χρησιμοποιήσετε την ενότητα chatbot:
/////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////
def bag_of_words(s, words):
τσάντα = [0 για _ στο εύρος (len(λέξεις))]
s_words = nltk.word_tokenize(s)
s_words = [stemmer.stem(word.lower()) για λέξη σε s_words]
για δείτε σε s_words:
για i, w innumerate(λέξεις):
αν w == se:
τσάντα[i] = 1
επιστροφή numpy.array(bag)
// Σίγουρα θα λύσει το πρόβλημά σας. //
//////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////
Μοιράζομαι τον πλήρη κώδικα μαζί σας, ώστε να έχετε μια σαφή εικόνα του.
/////////////////////////////////////////////////////////////////////////////////////// /////////
εισαγωγή nltk
από το nltk.stem.lancaster εισαγωγή LancasterStemmer
stemmer = LancasterStemmer()
εισαγωγή numpy
εισαγωγή tflearn
εισαγωγή tensorflow
τυχαία εισαγωγή
εισαγωγή json
εισαγωγή τουρσί
με το open(“intents.json”) ως αρχείο:
data = json.load(αρχείο)
δοκιμάστε:
με open("data.pickle", "rb") ως f:
λέξεις, ετικέτες, εκπαίδευση, έξοδος = pickle.load(f)
εκτός:
λέξεις = []
ετικέτες = []
docs_x = []
docs_y = []
για την πρόθεση στα δεδομένα ["προθέσεις"]:
για μοτίβο στην πρόθεση ["μοτίβα"]:
wrds = nltk.word_tokenize(μοτίβο)
words.extend (wrds)
docs_x.append (WRDS)
docs_y.append(intent["tag"])
εάν η πρόθεση ["ετικέτα"] δεν είναι σε ετικέτες:
labels.append(intent["tag"])
λέξεις = [stemmer.stem(w.lower()) για το w σε λέξεις αν w != "?"]
λέξεις = ταξινομημένο(λίστα(σύνολο(λέξεις)))
ετικέτες = ταξινομημένες(ετικέτες)
εκπαίδευση = []
έξοδος = []
out_empty = [0 για _ στο εύρος (len(ετικέτες))]
για x, doc in enumerate(docs_x):
τσάντα = []
wrds = [stemmer.stem(w.lower()) για w στο έγγραφο]
για w με λόγια:
αν w σε λέξεις:
Bag.Append (1)
αλλού:
Bag.Append (0)
output_row = out_empty[:]
output_row[labels.index(docs_y[x])] = 1
Training.Append (τσάντα)
output.append(output_row)
training = numpy.array(training)
output = numpy.array(output)
με open("data.pickle", "wb") ως f:
pickle.dump((λέξεις, ετικέτες, εκπαίδευση, έξοδος), f)
tensorflow.reset_default_graph ()
net = tflearn.input_data(shape=[Κανένα, len(training[0])])
net = tflearn.fully_connected(net, 8)
net = tflearn.fully_connected(net, 8)
net = tflearn.fully_connected (net, len (έξοδος [0]), ενεργοποίηση = "softmax")
net = tflearn.regression(net)
μοντέλο = tflearn.DNN(net)
δοκιμάστε:
model.load("model.tflearn")
εκτός:
model.fit(training, output, n_epoch=1500, batch_size=8, show_metric=True)
model.save ("model.tflearn")
def bag_of_words(s, words):
τσάντα = [0 για _ στο εύρος (len(λέξεις))]
s_words = nltk.word_tokenize(s)
s_words = [stemmer.stem(word.lower()) για λέξη σε s_words]
για δείτε σε s_words:
για i, w innumerate(λέξεις):
αν w == se:
τσάντα[i] = 1
επιστροφή numpy.array(bag)
def chat ():
print ("Ξεκινήστε να μιλάτε με το bot (πληκτρολογήστε quit για να σταματήσετε)!")
ενώ True:
inp = input ("Εσείς: ")
if inp.lower() == "coit":
σπάσει
results = model.predict([bag_of_words(inp, words)])
results_index = numpy.argmax(αποτελέσματα)
ετικέτα = ετικέτες[ευρετήριο_αποτελεσμάτων]
για tg σε δεδομένα["προθέσεις"]:
αν tg['tag'] == ετικέτα:
απαντήσεις = tg['απαντήσεις']
print(random.choice(responses))
κουβέντα()
////////////////////////////////////////////////// ///////////////
Ευχαριστώ,
Καλή κωδικοποίηση!
Lu
Χαίρετε Κ.
Θα μπορούσατε να μου δώσετε μια ιδέα για τη διαδικασία που πρέπει να πραγματοποιηθεί στην περίπτωση που θέλετε να δημιουργήσετε ένα chatbot σε python, αλλά οι πληροφορίες λαμβάνονται από μια έρευνα στο excel. Ευχαριστώ!