טיש פון קאָנטענץ[באַהאַלטן][ווייַזן]
קול קאַללס זענען פייזד אויס אין טויווע פון טעקסט און וויזשוואַלז אין די קאָמוניקאַציע סעקטאָר. לויט אַ פאַסעבאָאָק אַנקעטע, מער ווי האַלב פון בויערס בעסער צו קויפן פון אַ פירמע מיט וואָס זיי קענען רעדן. טשאַטינג איז געווארן די נייַע סאָושאַלי פּאַסיק מאָדע פון קאָמוניקאַציע.
עס ינייבאַלז געשעפטן צו יבערגעבן מיט זייער קלייאַנץ אין קיין צייט און פֿון קיין אָרט. טשאַטבאָץ זענען ינקריסינגלי גיינינג פּאָפּולאַריטעט צווישן קאָמפּאַניעס און קאַסטאַמערז רעכט צו זייער יז פון נוצן און רידוסט וואַרטן צייט.
טשאַטבאָץ, אָדער אָטאַמייטיד קאַנווערסיישאַנאַל מגילה, צושטעלן קלייאַנץ אַ מער קאַסטאַמייזד אופֿן צו אַקסעס באַדינונגס דורך אַ טעקסט-באזירט צובינד. די לעצטע AI-Powered טשאַטבאָץ קענען דערקענען אַ אָנפֿרעג (פראַגע, באַפֿעל, סדר, אאז"ו ו) געמאכט דורך אַ מענטש (אָדער אן אנדער באָט, ינסעפּשאַן) אין אַ ספּעציפיש סוויווע און ריספּאַנד אַפּראָופּרייטלי (ענטפער, קאַמף, אאז"ו ו).
אין דעם פּאָסטן, מיר וועלן גיין איבער וואָס טשאַטבאָץ זענען, זייער בענעפיץ, נוצן קאַסעס און ווי צו מאַכן דיין אייגענע טיף לערנען טשאַטבאָט אין פּיטהאָן, צווישן אנדערע זאכן.
לאמיר אנהייבען.
אַזוי, וואָס זענען טשאַטבאָץ?
א טשאַטבאָט איז אָפט ריפערד צו זיין איינער פון די מערסט אַוואַנסירטע און פּראַמאַסינג פארמען פון מענטש-מאַשין ינטעראַקשאַן. די דיגיטאַל אַסיסטאַנץ פֿאַרבעסערן קונה דערפאַרונג דורך סטרימליינינג ינטעראַקשאַנז צווישן מענטשן און באַדינונגס.
סיימאַלטייניאַסלי, זיי צושטעלן געשעפטן מיט נייַע אָפּציעס צו אַפּטאַמייז די קונה קאָנטאַקט פּראָצעס פֿאַר עפעקטיווקייַט, וואָס קענען שנייַדן קאַנווענשאַנאַל שטיצן הוצאות.
אין אַ נאַטשעל, עס איז אַי-באזירט ווייכווארג וואָס איז מענט צו יבערגעבן מיט יומאַנז אין זייער נאַטירלעך שפּראַכן. די טשאַטבאָץ אָפט ינטעראַקט דורך אַודיאָ אָדער געשריבן טעקניקס, און זיי קענען לייכט נאָכקרימען מענטשלעך שפּראַכן אין סדר צו פאַרבינדן מיט יומאַנז אין אַ מענטש-ווי שטייגער.
טשאַטבאָץ לערנען פון זייער ינטעראַקשאַנז מיט יוזערז, און ווערן מער רעאַליסטיש און עפעקטיוו מיט צייט. זיי קענען שעפּן אַ ברייט קייט פון געשעפט אַקטיוויטעטן, אַזאַ ווי אָטערייזינג ספּענדינג, ענגיידזשינג מיט קאָנסומערס אָנליין און דזשענערייטינג לידז.
שאַפֿן דיין אייגענע טיף לערנען טשאַטבאָט מיט פּיטהאָן
עס זענען פילע פאַרשידענע טייפּס פון טשאַטבאָץ אין די פעלד פון מאַשין וויסן און אַי. עטלעכע טשאַטבאָץ זענען ווירטואַל אַסיסטאַנץ, בשעת אנדערע זענען נאָר דאָרט צו שמועסן מיט, בשעת אנדערע זענען קונה דינסט אגענטן.
איר'ווע מיסטאָמע געזען עטלעכע פון די אָנגעשטעלט דורך געשעפטן צו ענטפֿערן ינקוועריז. מיר וועלן מאַכן אַ קליין טשאַטבאָט אין דעם טוטאָריאַל צו ענטפֿערן אָפט געבעטן פֿראגן.
1. ינסטאָלינג פּאַקאַדזשאַז
אונדזער ערשטער שריט איז צו ינסטאַלירן די פאלגענדע פּאַקאַדזשאַז.
2. טראַינינג דאַטאַ
איצט עס איז צייט צו רעכענען וואָס טיפּ פון אינפֿאָרמאַציע מיר דאַרפֿן צו געבן אונדזער טשאַטבאָט. מיר טאָן ניט דאַרפֿן צו אָפּלאָדירן קיין גרויס דאַטאַסעץ ווייַל דאָס איז אַ פּשוט טשאַטבאָט.
מיר וועלן בלויז נוצן די אינפֿאָרמאַציע וואָס מיר האָבן באשאפן זיך. צו יפעקטיוולי נאָכפאָלגן די לעקציע, איר וועט דאַרפֿן צו דזשענערייט אַ .דזשסאָן טעקע מיט די זעלבע פֿאָרמאַט ווי די אונטן. מיין טעקע איז געהייסן "intents.json."
די JSON טעקע איז גענוצט צו שאַפֿן אַ סכום פון אַרטיקלען וואָס דער באַניצער איז מסתּמא צו אַרייַנשרייַב און מאַפּע צו אַ סכום פון באַטייַטיק ענטפֿערס. יעדער ווערטערבוך אין דער טעקע האט אַ קוויטל וואָס יידענאַפייד צו וואָס גרופּע יעדער אָנזאָג געהערט.
מיר וועלן נוצן דעם אינפֿאָרמאַציע צו באַן אַ נעוראַל נעץ צו קאַטאַגערייז אַ פראַזע פון ווערטער ווי איינער פון די טאַגס אין אונדזער טעקע.
מיר קענען נאָר נעמען אַ ענטפער פון די גרופּעס און צושטעלן עס צו דער באַניצער. די טשאַטבאָט וועט זיין בעסער און מער קאָמפּליצירט אויב איר פאָרשלאָגן עס מיט נאָך טאַגס, ענטפֿערס און פּאַטערנז.
3. דזשסאָן דאַטן לאָודינג
מיר וועלן אָנהייבן מיט לאָודינג אין אונדזער .דזשסאָן דאַטן און ימפּאָרטינג עטלעכע מאַדזשולז. אַסעמבאַל דיין.דזשסאָן טעקע אין דער זעלביקער וועגווייַזער ווי דיין פּיטהאָן שריפט. אונדזער .דזשסאָן דאַטן וועט איצט זיין געראטעוועט אין די דאַטן בייַטעוודיק.
4. דאַטאַ עקסטראַקטיאָן
איצט עס איז צייט צו עקסטראַקט די אינפֿאָרמאַציע מיר דאַרפֿן פון אונדזער JSON טעקע. אַלע די פּאַטערנז, ווי געזונט ווי די קלאַס / קוויטל צו וואָס זיי געהערן, זענען פארלאנגט.
מיר וועלן אויך דאַרפֿן אַ רשימה פון אַלע די יינציק טערמינען אין אונדזער פּאַטערנז (פֿאַר סיבות מיר וועט דערקלערן שפּעטער), אַזוי לאָזן אונדז מאַכן עטלעכע ליידיק רשימות צו האַלטן שפּור פון די וואַלועס.
איצט מיר וועלן שלייף דורך אונדזער JSON דאַטן און צוריקקריגן די אינפֿאָרמאַציע מיר דאַרפֿן. אלא ווי זיי ווי סטרינגס, מיר וועלן נוצן nltk.word טאָקענייזער צו יבערמאַכן יעדער מוסטער אין אַ רשימה פון ווערטער.
דערנאָך, אין אונדזער docs_x רשימה, מיר לייגן יעדער מוסטער, צוזאַמען מיט זיין פארבונדן קוויטל, צו די docs_y רשימה.
5. וואָרט סטעמינג
געפֿינען די וואָרצל פון אַ וואָרט איז באקאנט ווי סטעמינג. פֿאַר בייַשפּיל, דער סטעם פון די וואָרט "דאָס" סטעם קען זיין "אַז," כוועראַז די סטעם פון די וואָרט "געשעעניש" קען זיין "געשעהן."
מיר וועלן נוצן דעם סטעמינג טעכניק צו פאַרמינערן די וואָקאַבולאַרי פון אונדזער מאָדעל און פּרובירן צו רעכענען אויס וואָס זאצן ימפּלייז אין אַלגעמיין. דער קאָד וועט פשוט דזשענערייט אַ יינציק רשימה פון סטימד ווערטער וואָס וועט זיין געוויינט אין דער ווייַטער פאַסע פון אונדזער דאַטן צוגרייטונג.
6. זעקל פון ווערטער
עס איז צייט צו רעדן וועגן אַ זעקל פון ווערטער איצט אַז מיר האָבן ימפּאָרטיד אונדזער דאַטן און דזשענערייטאַד אַ סטימד וואָקאַבולאַרי. נעוראַל נעטוואָרקס און מאַשין לערנען אַלגערידאַמז, ווי מיר אַלע וויסן, דאַרפן נומעריקאַל אַרייַנשרייַב. אַזוי אונדזער שטריקל רשימה איז נישט געגאנגען צו שנייַדן עס. מיר דאַרפֿן אַ מעקאַניזאַם צו פאָרשטעלן נומערן אין אונדזער זאצן, וואָס איז ווו אַ זעקל פון ווערטער קומט אין.
יעדער פראַזע וועט זיין רעפּריזענטיד דורך אַ רשימה פון די לענג פון די נומער פון טערמינען אין אונדזער מאָדעל ס וואָקאַבולאַרי. יעדער וואָרט אין אונדזער וואָקאַבולאַרי וועט זיין רעפּריזענטיד דורך אַ אָרט אין דער רשימה. אויב די שטעלע אין דער רשימה איז אַ 1, די וואָרט איז ארויס אין אונדזער דערקלערונג; אויב עס איז אַ 0, דאָס וואָרט איז נישט אין אונדזער זאַץ.
מיר רופן עס אַ זעקל מיט ווערטער ווייַל מיר וויסן נישט די סיקוואַנס אין וואָס די ווערטער דערשייַנען אין די פראַזע; אַלע מיר וויסן איז אַז זיי עקסיסטירן אין אונדזער מאָדעל ס וואָקאַבולאַרי.
אין אַדישאַן צו סטראַקטשערינג אונדזער אַרייַנשרייַב, מיר מוזן אויך פֿאָרמאַט אונדזער רעזולטאַט אַזוי אַז די נעוראַל נעץ פארשטייט עס. מיר וועלן בויען רעזולטאַט רשימות וואָס זענען די לענג פון די נומער פון לאַבעלס / טאַגס אין אונדזער דאַטאַסעט, ענלעך צו אַ זעקל פון ווערטער. יעדער אָרט אין דער רשימה רעפּראַזענץ אַ יינציק פירמע / קוויטל, און אַ 1 אין קיין פון די לאָוקיישאַנז ינדיקייץ וואָס פירמע / קוויטל איז רעפּריזענטיד.
צום סוף, מיר וועלן נוצן NumPy ערייז צו קראָם אונדזער טריינינג דאַטן און פּראָדוקציע.
7. מאָדעל אַנטוויקלונג
מיר זענען גרייט צו אָנהייבן בויען און טריינינג אַ מאָדעל איצט אַז מיר האָבן פּריפּראָסעססעד אַלע אונדזער דאַטן. מיר וועלן נוצן אַ זייער יקערדיק נעוראַל נעץ מיט צוויי פאַרבאָרגן לייַערס פֿאַר אונדזער אַבדזשעקטיווז.
דער ציל פון אונדזער נעץ איז צו קוקן אין אַ זאַמלונג פון ווערטער און באַשטימען זיי צו אַ קלאַס (איינער פון אונדזער טאַגס פון די JSON טעקע). מיר וועלן אָנהייבן מיט גרינדן די אַרקאַטעקטשער פון אונדזער מאָדעל. האַלטן אין מיינונג אַז איר קענען שפּילן מיט עטלעכע פון די נומערן צו געפֿינען אַ בעסער מאָדעל! מאַשין לערנען איז מערסטנס באזירט אויף פּראָצעס און טעות.
8. מאָדעל טראַינינג & שפּאָרן
עס איז צייט צו באַן אונדזער מאָדעל אויף אונדזער דאַטן איצט אַז מיר האָבן שטעלן עס! מיר וועלן דערגרייכן דעם דורך צופּאַסן אונדזער דאַטן צו די מאָדעל. די נומער פון עפּאָס מיר צושטעלן איז די נומער פון מאל די מאָדעל וועט זיין יקספּאָוזד צו די זעלבע דאַטן בעשאַס טריינינג.
מיר קענען ראַטעווען די מאָדעל צו די טעקע מאָדעל אַמאָל מיר האָבן פאַרטיק טריינינג עס. tflearn איז אַ שריפט וואָס קענען זיין געוויינט אין אנדערע סקריפּס.
9. ניצן אַ טשאַטבאָט
איצט איר קענען אָנהייבן שמועסן מיט דיין באָט.
Benefits פון Chatbot
- ווי באָץ זענען געריכט צו אַרבעטן 365 טעג אַ יאָר, 24 שעה אַ טאָג, אָן צאָלונג, פאַרגרעסערן אַוויילאַבילאַטי און אָפּרוף גיכקייַט.
- די באָץ זענען שליימעסדיק מכשירים פֿאַר טאַקלינג די דריי שליסל ווס פון גרויס דאַטן: באַנד, גיכקייַט און פאַרשיידנקייַט.
- טשאַטבאָץ זענען ווייכווארג וואָס קענען ווערן גענוצט צו לערנען און באַגרייַפן די קאָנסומערס פון אַ פירמע.
- עס האט העכער מאַכט אַז עס האט אַ ביליק וישאַלט קאָס נאָך די שפּיץ בענעפיץ.
- טשאַטבאָט אַפּפּליקאַטיאָנס שאַפֿן דאַטן וואָס קענען זיין אפגעהיט און יוטאַלייזד פֿאַר אַנאַליטיקס און פאָרקאַסץ.
Usecase
- ריזאַלווינג קונה קוויריז
- ענטפֿערן אָפט געשטעלטע פֿראגן
- אַסיינינג קאַסטאַמערז צו שטיצן מאַנשאַפֿט
- קאַלעקטינג קונה באַמערקונגען
- רעקאַמענדינג נייַ אָפפערס
- קראָם מיט קאַנווערסיישאַנאַל האַנדל
- עס העלפּדעסק
- בוקינג אַקאַמאַדיישאַנז
- געלט אַריבערפירן
סאָף
טשאַטבאָץ, ווי אנדערע אַי טעקנאַלאַדזשיז, וועט זיין גענוצט צו פאַרגרעסערן מענטש סקילז און באַפרייען מענטשן צו זיין מער שעפעריש און ימאַדזשאַנאַטיוו דורך אַלאַוינג זיי צו פאַרברענגען מער צייט אויף סטראַטידזשיק אלא ווי טאַקטיש טאַסקס.
געשעפטן, עמפּלוייז און קאָנסומערס זענען מסתּמא צו נוץ פון ענכאַנסט טשאַטבאָט פֿעיִקייטן אַזאַ ווי פאַסטער רעקאַמאַנדיישאַנז און פֿאָרויסזאָגן, ווי געזונט ווי גרינג אַקסעס צו הויך-דעפֿיניציע ווידעא קאַנפראַנסינג פון ין אַ שמועס, אין דעם לעבן צוקונפֿט, ווען אַי איז קאַמביינד מיט די אַנטוויקלונג פון 5G טעכנאָלאָגיע.
די און אנדערע פּאַסאַבילאַטיז זענען נאָך ינוועסטאַגייטאַד, אָבער ווי אינטערנעט קאַנעקטיוויטי, אַי, נלפּ און מאַשין לערנען פּראָגרעס, זיי וועלן ווערן מער פאַרשפּרייט.
Chwoo
העלא,
דאנק איר פֿאַר דעם פּראָגראַם.
איך האב א שאלה.
"bag_of_words" איז נישט דיפיינד. איך קען נישט פֿאַרשטיין דעם טעות.
קען איר זאָגן מיר ווי קענען איך סאָלווע דעם טעות??
דאנק איר פֿאַר דעם פּראָגראַם !! האב א גוטן טאג
דזשייַ
ביטע לייגן אַ פֿונקציע איידער ניצן די טשאַטבאָט אָפּטיילונג:
////////////////////////////////////////// ////////////////////////
דעף באַג_פון_וואָרדס (s, ווערטער):
זעקל = [0 פֿאַר _ אין קייט (לענ (ווערטער))]
s_words = nltk.word_tokenize(s)
s_words = [stemmer.stem(word.lower()) פֿאַר וואָרט אין s_words]
פֿאַר זיי אין s_words:
פֿאַר איך, w אין ינומערייט (ווערטער):
אויב w == זיי:
זעקל [איך] = 1
צוריקקומען numpy.array(bag)
// עס וועט באשטימט האַלטן דיין פּראָבלעם. //
////////////////////////////////////////// //////////////////////
איך טיילן די גאַנץ קאָד מיט איר, אַזוי איר וועט באַקומען אַ קלאָר בילד פון עס.
////////////////////////////////////////// ////////
אַרייַנפיר נלטק
פֿון nltk.stem.lancaster אַרייַנפיר לאַנקאַסטערסטעמער
שטימען = LancasterStemmer()
אַרייַנפיר נאַמפּי
אַרייַנפיר טפלאַרן
אַרייַנפיר טענסאָרפלאָוו
ראַנדאָם ימפּאָרט
אַרייַנפיר דזשסאָן
אַרייַנפיר זויערע וגערקע
מיט עפענען ("intents.json") ווי טעקע:
דאַטן = json.load(טעקע)
פּרובירן:
מיט עפענען ("דאַטאַ. פּיקקלע", "רב") ווי f:
ווערטער, לאַבעלס, טריינינג, רעזולטאַט = pickle.load(f)
חוץ:
ווערטער = []
לאַבעלס = []
דאָקס_קס = []
דאָקס_י = []
פֿאַר כוונה אין דאַטן ["ינטענץ"]:
פֿאַר מוסטער אין קאַוואָנע ["פּאַטערנס"]:
wrds = nltk.word_tokenize(מוסטער)
ווערטער.עקסטענד(וורדס)
docs_x.append(wrds)
docs_y.append (ינטענט ["קוויטל")
אויב כוונה ["קוויגל"] נישט אין לאַבעלס:
labels.append (ינטענט ["קוויטל")
ווערטער = [stemmer.stem(w.lower()) פֿאַר וו אין ווערטער אויב w != "?"]
ווערטער = סאָרטעד (רשימה (שטעלן (ווערטער)))
לאַבעלס = סאָרטעד (לאַבעלס)
טריינינג = []
רעזולטאַט = []
out_empty = [0 פֿאַר _ אין קייט (לענ (לאַבעלס))]
פֿאַר רענטגענ, דאָק אין ינומערייט (דאָקס_קס):
זעקל = []
wrds = [stemmer.stem(w.lower()) פֿאַר w in doc]
פֿאַר וו אין ווערטער:
אויב w in wrds:
bag.append (1)
אַנדערש:
bag.append (0)
output_row = out_empty[:]
output_row[labels.index (דאָקס_י [רענטגענ])] = 1
training.append(זאַק)
output.append(output_row)
טריינינג = numpy.array (טריינינג)
רעזולטאַט = numpy.array(output)
מיט עפענען ("דאַטאַ. פּיקקלע", "וב") ווי f:
pickle.dump((ווערטער, לאַבעלס, טריינינג, רעזולטאַט), f)
tensorflow.reset_default_graph()
נעט = tflearn.input_data (פאָרעם = [קיין, לן (טריינינג [0])])
נעץ = tflearn.fully_connected (נעץ, 8)
נעץ = tflearn.fully_connected (נעץ, 8)
נעט = tflearn.fully_connected (נעץ, לן (רעזולטאַט [0]), אַקטאַוויישאַן = "סאָפטמאַקס")
נעט = tflearn.regression(נעט)
מאָדעל = tflearn.DNN (נעט)
פּרובירן:
model.load ("model.tflearn")
חוץ:
model.fit (טריינינג, רעזולטאַט, n_epoch=1500, batch_size=8, show_metric=True)
model.save ("מאָדעל.טפלערן")
דעף באַג_פון_וואָרדס (s, ווערטער):
זעקל = [0 פֿאַר _ אין קייט (לענ (ווערטער))]
s_words = nltk.word_tokenize(s)
s_words = [stemmer.stem(word.lower()) פֿאַר וואָרט אין s_words]
פֿאַר זיי אין s_words:
פֿאַר איך, w אין ינומערייט (ווערטער):
אויב w == זיי:
זעקל [איך] = 1
צוריקקומען numpy.array(bag)
דעפ שמועס ():
print ("אָנהייב רעדן מיט די באָט (טיפּ פאַרלאָזן צו האַלטן)!")
בשעת אמת:
inp = אַרייַנשרייַב ("איר:")
אויב inp.lower () == "פאַרלאָזן":
ברעכן
רעזולטאַטן = model.predict([bag_of_words(ינפּ, ווערטער)])
רעזולטאטן_אינדעקס = numpy.argmax(רעזולטאטן)
טאַג = לאַבעלס [רעזולטאטן_ינדעקס]
פֿאַר טג אין דאַטן ["ינטענץ"]:
if tg['tag'] == קוויטל:
רעספּאָנסעס = טג['רעספּאָנסעס']
print(random.choice(רעספּאָנסעס))
שמועסן ()
////////////////////////////////////////// /////////////
דאנק איר,
גליקלעך קאָדירונג!
Lu
העלא,
קען איר געבן מיר אַ געדאַנק פון דעם פּראָצעס צו דורכפירן אין די פאַל פון ווילן צו שאַפֿן אַ טשאַטבאָט אין פּיטהאָן, אָבער די אינפֿאָרמאַציע איז באקומען פון אַ יבערבליק אין עקססעל. אדאנק!