שיחות קוליות מתבטלות בהדרגה לטובת טקסט וויזואלי בגזרת התקשורת. לפי סקר בפייסבוק, יותר ממחצית מהקונים מעדיפים לקנות מחברה שהם יכולים לדבר איתה. צ'אט הפך לאמצעי התקשורת החדש המקובל בחברה.
זה מאפשר לעסקים לתקשר עם לקוחותיהם בכל זמן ומכל מקום. צ'טבוטים צוברים יותר ויותר פופולריות בקרב חברות ולקוחות בשל קלות השימוש וזמני ההמתנה המופחתים.
Chatbots, או תוכניות שיחה אוטומטיות, מספקות ללקוחות שיטה מותאמת אישית יותר לגשת לשירותים באמצעות ממשק מבוסס טקסט. הצ'אטבוטים החדשים ביותר המופעלים על ידי AI יכולים לזהות שאילתה (שאלה, פקודה, פקודה וכו') שנעשתה על ידי אדם (או בוט אחר, התחלה) בסביבה ספציפית ולהגיב כראוי (תשובה, פעולה וכו').
בפוסט זה, נעבור על מה הם צ'אטבוטים, היתרונות שלהם, מקרי שימוש וכיצד ליצור משלך למידה עמוקה צ'אטבוט ב-Python, בין היתר.
בואו נתחיל.
אז מה הם צ'אטבוטים?
צ'אטבוט מכונה לעתים קרובות אחת הצורות המתקדמות והמבטיחות ביותר של אינטראקציה בין אדם למכונה. עוזרים דיגיטליים אלה משפרים את חווית הלקוח על ידי ייעול האינטראקציות בין אנשים ושירותים.
במקביל, הם מספקים לעסקים אפשרויות חדשות לייעל את תהליך יצירת הקשר עם הלקוחות ליעילות, מה שיכול לקצץ בהוצאות התמיכה הקונבנציונליות.
בקיצור, תוכנה מבוססת AI שנועדה לתקשר עם בני אדם בשפות הטבעיות שלהם. צ'אטבוטים אלה מקיימים לעתים קרובות אינטראקציה באמצעות אודיו או טכניקות כתובות, והם יכולים בקלות לחקות שפות אנושיות כדי להתחבר לבני אדם באופן דמוי אנושי.
צ'טבוטים לומדים מהאינטראקציות שלהם עם משתמשים, והופכים למציאותיים ויעילים יותר עם הזמן. הם יכולים לטפל במגוון רחב של פעילויות עסקיות, כגון אישור הוצאות, יצירת קשר עם צרכנים באינטרנט ויצירת לידים.
יצירת צ'אטבוט משלך ללמידה עמוקה עם פיתון
ישנם סוגים רבים של צ'אט בוטים בתחום של למידת מכונה ו-AI. חלק מהצ'אטבוטים הם עוזרים וירטואליים, בעוד שאחרים פשוט שם כדי לשוחח איתם, בעוד שאחרים הם סוכני שירות לקוחות.
בטח ראית כמה מאלה המועסקים על ידי עסקים כדי לענות על פניות. אנו ניצור צ'אט בוט קטן במדריך זה כדי לענות על שאילתות מבוקשות לעתים קרובות.
1. התקנת חבילות
הצעד הראשון שלנו הוא להתקין את החבילות הבאות.
2. נתוני הדרכה
עכשיו הגיע הזמן להבין איזה סוג מידע נצטרך לתת לצ'אטבוט שלנו. אנחנו לא צריכים להוריד מערכי נתונים גדולים מכיוון שזהו צ'אט בוט פשוט.
נשתמש רק במידע שיצרנו בעצמנו. כדי לעקוב ביעילות עם השיעור, תצטרך ליצור קובץ .JSON באותו פורמט כמו זה המופיע למטה. הקובץ שלי נקרא "intents.json."
קובץ ה-JSON משמש ליצירת קבוצה של הודעות שהמשתמש עשוי להזין ולמפות לקבוצה של תשובות רלוונטיות. לכל מילון בקובץ יש תג המזהה לאיזו קבוצה שייכת כל הודעה.
אנו נשתמש במידע זה כדי להכשיר א רשת עצבית כדי לסווג ביטוי של מילים כאחת מהתגים בקובץ שלנו.
לאחר מכן נוכל לקבל תגובה מאותן קבוצות ולספק אותה למשתמש. הצ'אטבוט יהיה טוב יותר ומסובך יותר אם תציע אותו עם תגים נוספים, תשובות ותבניות נוספות.
3. טעינת נתוני JSON
נתחיל בטעינת נתוני ה-json שלנו וייבוא כמה מודולים. הרכיב את קובץ your.json באותה ספרייה כמו שלך תסריט פיתון. נתוני ה-json שלנו יישמרו כעת במשתנה הנתונים.
4. מיצוי נתונים
עכשיו הגיע הזמן לחלץ את המידע שאנחנו צריכים מקובץ ה-JSON שלנו. כל התבניות, כמו גם המחלקה/תג שאליו הם שייכים, נדרשים.
נצטרך גם רשימה של כל המונחים הייחודיים בתבניות שלנו (מסיבות שנסביר בהמשך), אז בואו ניצור כמה רשימות ריקות כדי לעקוב אחר הערכים הללו.
כעת נעבור בלולאה בנתוני ה-JSON שלנו ונשחזר את המידע שאנו צריכים. במקום להשתמש בהם כמחרוזות, נשתמש ב-nltk.word tokenizer כדי להפוך כל דפוס לרשימה של מילים.
לאחר מכן, ברשימת docs_x שלנו, נוסיף כל דפוס, יחד עם התג המשויך לו, לרשימת docs_y.
5. גזע מילים
מציאת השורש של מילה ידועה כמקור. לדוגמה, הגזע של המילה "זה" עשוי להיות "זה", בעוד שהגזע של המילה "התרחש" יכול להיות "התרחש".
אנו נשתמש בטכניקת גזירה זו כדי לקצץ את אוצר המילים של המודל שלנו וננסה להבין מה מרמזים משפטים באופן כללי. קוד זה פשוט יפיק רשימה ייחודית של מילים גבעוליות שישמשו בשלב הבא של הכנת הנתונים שלנו.
6. שקית מילים
הגיע הזמן לדבר על שק של מילים עכשיו, לאחר שייבאנו את הנתונים שלנו ויצרנו אוצר מילים מבוסס. רשתות עצביות ואלגוריתמי למידת מכונה, כפי שכולנו יודעים, דורשים קלט מספרי. אז רשימת המיתרים שלנו לא תגזור את זה. אנחנו צריכים מנגנון לייצג מספרים במשפטים שלנו, וזה המקום שבו נכנסת שקית של מילים.
כל ביטוי יוצג על ידי רשימה של אורך מספר המונחים באוצר המילים של המודל שלנו. כל מילה באוצר המילים שלנו תוצג על ידי מקום ברשימה. אם המיקום ברשימה הוא 1, המילה מופיעה בהצהרה שלנו; אם זה 0, המילה לא מופיעה במשפט שלנו.
אנחנו קוראים לזה שק של מילים כי אנחנו לא יודעים את הרצף שבו מופיעות המילים בביטוי; כל מה שאנחנו יודעים זה שהם קיימים באוצר המילים של המודל שלנו.
בנוסף למבנה הקלט שלנו, עלינו גם לעצב את הפלט שלנו כך שהרשת העצבית תבין אותו. אנו נבנה רשימות פלט באורך של מספר התוויות/תגים במערך הנתונים שלנו, בדומה לשקית של מילים. כל מקום ברשימה מייצג תווית/תג ייחודי, ו-1 בכל אחד מאותם מיקומים מציין איזה תווית/תג מיוצגים.
לבסוף, נשתמש במערכים של NumPy כדי לאחסן את נתוני האימון והפלט שלנו.
7. פיתוח מודלים
אנחנו מוכנים להתחיל לבנות ולהכשיר מודל עכשיו, לאחר שעבדנו מראש את כל הנתונים שלנו. אנו נשתמש ברשת עצבית בסיסית מאוד עם שתי שכבות נסתרות עבור המטרות שלנו.
מטרת הרשת שלנו תהיה להסתכל על אוסף מילים ולהקצות אותן לכיתה (אחת התגיות שלנו מקובץ JSON). נתחיל בביסוס הארכיטקטורה של המודל שלנו. זכור שאתה יכול לשחק עם כמה מהמספרים כדי להמציא דגם טוב יותר! למידת מכונה מבוסס בעיקר על ניסוי וטעייה.
8. הדרכה ושמירה על מודלים
הגיע הזמן להכשיר את המודל שלנו על הנתונים שלנו עכשיו לאחר שהגדרנו אותו! נשיג זאת על ידי התאמת הנתונים שלנו למודל. מספר העידנים שאנו מספקים הוא מספר הפעמים שהדגם ייחשף לאותם נתונים במהלך האימון.
נוכל לשמור את המודל במודל הקובץ לאחר שסיימנו להכשיר אותו. tflearn הוא סקריפט שניתן להשתמש בו בסקריפטים אחרים.
9. שימוש בצ'אט בוט
עכשיו אתה יכול להתחיל לשוחח עם הבוט שלך.
היתרונות של Chatbot
- מכיוון שהבוטים צפויים לפעול 365 ימים בשנה, 24 שעות ביממה, ללא תשלום, להגדיל את הזמינות ואת מהירות התגובה.
- הבוטים האלה הם כלים מושלמים להתמודדות עם שלושת הנגדים העיקריים של ביג דאטה: נפח, מהירות ומגוון.
- צ'אטבוטים הם תוכנות שניתן להשתמש בהן כדי ללמוד ולהבין את צרכני החברה.
- יש לו כוח מעולה שיש לו עלות תחזוקה זולה לאחר שיש לו יתרונות מובילים.
- יישומי צ'טבוט יוצרים נתונים שעשויים להישמר ולנצל עבור ניתוח ותחזיות.
Usecase
- פתרון שאילתות לקוחות
- מענה על שאלות נפוצות
- הקצאת לקוחות לצוות תמיכה
- איסוף משוב מלקוחות
- המלצה על הצעות חדשות
- חנות עם מסחר שיחת
- דלפק העזרה של ה- IT
- הזמנת מקומות לינה
- העברת כספים
סיכום
צ'אטבוטים, כמו טכנולוגיות בינה מלאכותיות אחרות, ישמשו כדי להגביר את הכישורים האנושיים ולשחרר את בני האדם להיות יצירתיים יותר ובעלי דמיון על ידי כך שיאפשרו להם להשקיע יותר זמן במשימות אסטרטגיות ולא טקטיות.
עסקים, עובדים וצרכנים צפויים ליהנות מתכונות צ'טבוט משופרות כגון המלצות וחיזוי מהירים יותר, כמו גם גישה קלה לשיחות ועידה בווידאו בחדות גבוהה מתוך שיחה, בעתיד הקרוב, כאשר AI ישולב עם פיתוח של טכנולוגיית 5G.
אפשרויות אלו ואחרות עדיין נחקרות, אך ככל שהקישוריות לאינטרנט, AI, NLP ולמידת מכונה מתקדמת, הן יהפכו לשכיחות יותר.
צ'וו
שלום,
תודה על התוכנית הזו.
יש לי שאלה.
"שק_של_מילים" אינו מוגדר. אני לא מצליח להבין את השגיאה הזו.
אתה יכול להגיד לי איך אני יכול לפתור את השגיאה הזו??
תודה על התוכנית הזו!! שיהיה לך יום טוב
עוֹרְבָנִי
אנא הוסף פונקציה לפני השימוש בקטע הצ'אטבוט:
//</em></ul></ul><ul> <li> //</em></ul><ul> <li>
def bag_of_words(s, words):
שקית = [0 עבור _ בטווח(len(words))]
s_words = nltk.word_tokenize(s)
s_words = [stemmer.stem(word.lower()) עבור מילה ב-s_words]
עבור se ב-s_words:
עבור i, w ב-enumerate(מילים):
אם w == se:
שקית[i] = 1
return numpy.array(bag)
// זה בהחלט יפתור את הבעיה שלך. //
//</em></ul></ul><ul> <li> //</em></ul><ul> <li>
אני חולק את הקוד המלא איתך, כדי שתקבל תמונה ברורה שלו.
////////////////////////////////////////////// /////////
יבוא nltk
מ-nltk.stem.lancaster ייבוא LancasterStemmer
stemmer = LancasterStemmer()
ייבוא numpy
ייבוא tflearn
ייבוא tensorflow
יבוא אקראי
יבוא ג'סון
מלפפון חמוץ
עם open(“intents.json”) כקובץ:
data = json.load(file)
נסה:
עם open("data.pickle", "rb") בתור f:
מילים, תוויות, הדרכה, פלט = pickle.load(f)
מלבד:
מילים = []
תוויות = []
docs_x = []
docs_y = []
עבור כוונה בנתונים["כוונות"]:
עבור דפוס בכוונה["דפוסים"]:
wrds = nltk.word_tokenize(pattern)
words.extend(wrds)
docs_x.append(wrds)
docs_y.append(intent["tag"])
if intent["tag"] לא בתוויות:
labels.append(intent["tag"])
words = [stemmer.stem(w.lower()) עבור w במילים אם w != "?"]
words = sorted(list(set(words)))
תוויות = מסודר (תוויות)
אימון = []
פלט = []
out_empty = [0 עבור _ בטווח(len(labels))]
עבור x, doc ב-enumerate(docs_x):
תיק = []
wrds = [stemmer.stem(w.lower()) עבור w ב-doc]
עבור w במילים:
אם w ב-wrds:
bag.append(1)
else
bag.append(0)
output_row = out_empty[:]
output_row[labels.index(docs_y[x])] = 1
training.append(bag)
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=[None, len(training[0])])
net = tflearn.fully_connected(net, 8)
net = tflearn.fully_connected(net, 8)
net = tflearn.fully_connected(net, len(output[0]), activation=”softmax”)
net = tflearn.regression(net)
model = 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(words))]
s_words = nltk.word_tokenize(s)
s_words = [stemmer.stem(word.lower()) עבור מילה ב-s_words]
עבור se ב-s_words:
עבור i, w ב-enumerate(מילים):
אם w == se:
שקית[i] = 1
return numpy.array(bag)
def chat():
print("התחל לדבר עם הבוט (הקלד quit כדי לעצור)!")
בעוד נכון:
inp = input(“אתה: “)
if inp.lower() == "quit":
לשבור
results = model.predict([bag_of_words(inp, words)])
results_index = numpy.argmax(results)
תג = תוויות[תוצאות_אינדקס]
עבור tg בנתונים["כוונות"]:
if tg['tag'] == תג:
תגובות = tg['תגובות']
print(random.choice(תגובות))
לְשׂוֹחֵחַ()
////////////////////////////////////////////////// ///////////////
תודה,
קידוד שמח!
Lu
שלום,
האם תוכל לתת לי מושג על התהליך שיש לבצע במקרה של רצון ליצור צ'אטבוט ב-python, אבל המידע מתקבל מסקר באקסל. תודה!