تماسهای صوتی به نفع متن و تصاویر بصری در بخش ارتباطات حذف میشوند. بر اساس یک نظرسنجی فیس بوک، بیش از نیمی از خریداران ترجیح می دهند از شرکتی خرید کنند که بتوانند با آن صحبت کنند. چت به شیوه جدید ارتباط اجتماعی قابل قبول تبدیل شده است.
کسب و کارها را قادر می سازد تا در هر زمان و از هر مکان با مشتریان خود ارتباط برقرار کنند. چت بات ها به دلیل سهولت استفاده و کاهش زمان انتظار به طور فزاینده ای در بین شرکت ها و مشتریان محبوبیت پیدا می کنند.
چت بات ها یا برنامه های مکالمه خودکار، روش سفارشی تری را برای دسترسی به خدمات از طریق یک رابط مبتنی بر متن به مشتریان ارائه می دهند. جدیدترین رباتهای گفتگوی مبتنی بر هوش مصنوعی میتوانند پرس و جوی (سؤال، دستور، سفارش و غیره) را که توسط یک شخص (یا ربات دیگر، شروع کار) در یک محیط خاص ایجاد شده است، تشخیص دهند و به طور مناسب (پاسخ، اقدام و غیره) پاسخ دهند.
در این پست، چت بات ها چیست، فواید آن ها، موارد استفاده، و نحوه ساخت ربات های خود را بررسی خواهیم کرد. یادگیری عمیق چت بات در پایتون، از جمله موارد دیگر.
بیا شروع کنیم.
بنابراین، چت بات ها چیست؟
چت بات به عنوان یکی از پیشرفته ترین و امیدوارکننده ترین اشکال تعامل انسان و ماشین شناخته می شود. این دستیارهای دیجیتال با سادهسازی تعاملات بین افراد و خدمات، تجربه مشتری را بهبود میبخشند.
به طور همزمان، آنها گزینههای جدیدی را برای بهینهسازی فرآیند تماس با مشتری برای بهرهوری در اختیار مشاغل قرار میدهند که میتواند هزینههای پشتیبانی معمولی را کاهش دهد.
به طور خلاصه، این نرم افزار مبتنی بر هوش مصنوعی است که برای برقراری ارتباط با انسان ها به زبان طبیعی آنها ساخته شده است. این چتباتها اغلب از طریق تکنیکهای صوتی یا نوشتاری تعامل دارند و به راحتی میتوانند زبانهای انسانی را تقلید کنند تا به شیوهای شبیه انسان با انسانها ارتباط برقرار کنند.
چت بات ها از تعامل خود با کاربران یاد می گیرند و در طول زمان واقعی تر و کارآمدتر می شوند. آنها میتوانند طیف وسیعی از فعالیتهای تجاری، مانند مجوز دادن به هزینهها، تعامل آنلاین با مشتریان و ایجاد سرنخ را انجام دهند.
ایجاد چت ربات یادگیری عمیق خود با پایتون
انواع مختلفی از چت بات ها در این زمینه وجود دارد فراگیری ماشین و هوش مصنوعی برخی از رباتهای گفتگو دستیار مجازی هستند، در حالی که برخی دیگر فقط برای مکالمه هستند، در حالی که برخی دیگر نمایندگان خدمات مشتری هستند.
احتمالاً برخی از مشاغلی را دیده اید که برای پاسخ به سؤالات در مشاغل استخدام شده اند. ما در این آموزش یک ربات چت کوچک می سازیم تا به سوالات متداول پاسخ دهد.
1. نصب بسته ها
اولین قدم ما نصب بسته های زیر است.
2. داده های آموزشی
اکنون زمان آن است که بفهمیم به چه نوع اطلاعاتی برای دادن ربات چت خود نیاز داریم. ما نیازی به دانلود مجموعه داده های بزرگ نداریم زیرا این یک ربات چت ساده است.
ما فقط از اطلاعاتی که خودمان ایجاد کرده ایم استفاده خواهیم کرد. برای اینکه درس را به طور مؤثر دنبال کنید، باید یک فایل JSON. با همان فرمت شکل زیر ایجاد کنید. فایل من "intents.json" نام دارد.
فایل JSON برای ایجاد مجموعهای از پیامها استفاده میشود که کاربر احتمالاً آنها را وارد کرده و به مجموعهای از پاسخهای مرتبط نگاشت میکند. هر فرهنگ لغت در فایل دارای یک برچسب است که مشخص می کند هر پیام به کدام گروه تعلق دارد.
ما از این اطلاعات برای آموزش a استفاده خواهیم کرد شبکه های عصبی تا یک عبارت از کلمات را به عنوان یکی از برچسب های فایل خود دسته بندی کنیم.
سپس میتوانیم پاسخی را از آن گروهها بگیریم و در اختیار کاربر قرار دهیم. اگر ربات چت را با برچسب ها، پاسخ ها و الگوهای اضافی ارائه دهید بهتر و پیچیده تر خواهد شد.
3. بارگیری داده های JSON
ما با بارگیری دادههای json. و وارد کردن چند ماژول شروع میکنیم. فایل your.json را در همان دایرکتوری خود مونتاژ کنید اسکریپت پایتون. دادههای json. ما اکنون در متغیر داده ذخیره میشوند.
4. استخراج داده ها
اکنون زمان آن رسیده است که اطلاعات مورد نیاز خود را از فایل JSON خود استخراج کنیم. همه الگوها، و همچنین کلاس/برچسبی که به آن تعلق دارند، مورد نیاز هستند.
ما همچنین به لیستی از تمام اصطلاحات منحصر به فرد در الگوهای خود نیاز داریم (به دلایلی که بعداً توضیح خواهیم داد)، بنابراین بیایید چند لیست خالی برای پیگیری این مقادیر ایجاد کنیم.
اکنون داده های JSON خود را حلقه زده و اطلاعات مورد نیاز خود را بازیابی می کنیم. بهجای اینکه آنها را بهعنوان رشتهها در نظر بگیریم، از توکنایزر nltk.word برای تبدیل هر الگو به فهرستی از کلمات استفاده میکنیم.
سپس در لیست docs_x خود، هر الگو را به همراه تگ مربوط به آن به لیست docs_y اضافه می کنیم.
5. ریشه کلمه
پیدا کردن ریشه یک کلمه به عنوان ریشه شناخته می شود. به عنوان مثال، ریشه کلمه "thats" ممکن است "that" باشد، در حالی که ریشه کلمه "hapening" می تواند "hapen" باشد.
ما از این تکنیک ریشهیابی برای کاهش واژگان مدل خود استفاده میکنیم و سعی میکنیم بفهمیم که جملات به طور کلی به چه معنا هستند. این کد به سادگی یک لیست منحصر به فرد از کلمات ریشه ای ایجاد می کند که در مرحله بعدی آماده سازی داده های ما استفاده می شود.
6. کیسه کلمات
اکنون که دادههای خود را وارد کردهایم و واژگان پایهای را تولید کردهایم، وقت آن است که درباره مجموعهای از کلمات صحبت کنیم. شبکه های عصبی و الگوریتم های یادگیری ماشین، همانطور که همه ما می دانیم، نیاز به ورودی عددی دارند. بنابراین لیست رشته ما آن را قطع نمی کند. ما به مکانیزمی برای نمایش اعداد در جملات خود نیاز داریم، جایی که کیسه ای از کلمات وارد می شود.
هر عبارت با لیستی از طول تعداد اصطلاحات در واژگان مدل ما نشان داده می شود. هر کلمه در واژگان ما با یک مکان در لیست نشان داده می شود. اگر موقعیت در لیست 1 باشد، کلمه در عبارت ما ظاهر می شود. اگر 0 باشد، کلمه در جمله ما ظاهر نمی شود.
ما آن را کیسه ای از کلمات می نامیم، زیرا نمی دانیم توالی کلمات در عبارت ظاهر می شوند. تنها چیزی که می دانیم این است که آنها در واژگان مدل ما وجود دارند.
علاوه بر ساختاربندی ورودی خود، باید خروجی خود را نیز فرمت کنیم تا شبکه عصبی آن را درک کند. ما فهرستهای خروجی را میسازیم که طول تعداد برچسبها/برچسبها در مجموعه دادههایمان باشد، شبیه به یک کیسه کلمات. هر مکان در لیست نشان دهنده یک برچسب/برچسب منحصر به فرد است و یک عدد در هر یک از آن مکان ها نشان می دهد که کدام برچسب/برچسب نمایش داده می شود.
در نهایت، از آرایه های NumPy برای ذخیره داده های آموزشی و خروجی خود استفاده می کنیم.
7. توسعه مدل
اکنون که تمام داده های خود را از قبل پردازش کرده ایم، آماده شروع ساخت و آموزش یک مدل هستیم. ما از یک شبکه عصبی پیشخور بسیار ابتدایی با دو لایه پنهان برای اهداف خود استفاده خواهیم کرد.
هدف شبکه ما دیدن مجموعه ای از کلمات و اختصاص دادن آنها به یک کلاس (یکی از برچسب های ما از فایل JSON) خواهد بود. ما با ایجاد معماری مدل خود شروع خواهیم کرد. به خاطر داشته باشید که می توانید با تعدادی از اعداد بازی کنید تا مدل بهتری پیدا کنید! فراگیری ماشین بیشتر مبتنی بر آزمون و خطا است.
8. آموزش مدل و صرفه جویی
اکنون که آن را راهاندازی کردهایم، وقت آن است که مدل خود را بر روی دادههای خود آموزش دهیم! ما با تطبیق داده های خود با مدل به این امر دست خواهیم یافت. تعداد دورههایی که ارائه میدهیم تعداد دفعاتی است که مدل در طول آموزش در معرض همان دادهها قرار میگیرد.
پس از اتمام آموزش، می توانیم مدل را در مدل فایل ذخیره کنیم. tflearn یک اسکریپت است که می تواند در اسکریپت های دیگر استفاده شود.
9. استفاده از چت بات
اکنون می توانید با ربات خود چت کنید.
مزایای چت بات
- از آنجایی که انتظار میرود رباتها 365 روز در سال، 24 ساعت شبانهروز، بدون پرداخت هزینه کار کنند، در دسترس بودن و سرعت واکنش را افزایش میدهند.
- این رباتها ابزارهای عالی برای مقابله با سه کلید بزرگ دادهها هستند: حجم، سرعت و تنوع.
- چتباتها نرمافزاری هستند که میتوان از آنها برای یادگیری و درک مشتریان یک شرکت استفاده کرد.
- این دارای قدرت برتر است که پس از برخورداری از مزایای برتر، هزینه نگهداری ارزانی دارد.
- برنامههای Chatbot دادههایی را ایجاد میکنند که ممکن است برای تجزیه و تحلیل و پیشبینی حفظ و استفاده شوند.
مورد استفاده
- حل و فصل سوالات مشتریان
- پاسخ به سوالات متداول
- تخصیص مشتریان به تیم پشتیبانی
- جمع آوری نظرات مشتریان
- پیشنهادات جدید
- با تجارت محاوره ای خرید کنید
- مرکز خدمات IT
- رزرو اقامتگاه
- انتقال پول
نتیجه
چتباتها، مانند سایر فناوریهای هوش مصنوعی، برای تقویت مهارتهای انسان و آزادسازی انسانها برای خلاقیت و تخیلتر شدن استفاده میشوند و به آنها اجازه میدهند زمان بیشتری را صرف کارهای استراتژیک و نه تاکتیکی کنند.
کسبوکارها، کارمندان و مصرفکنندگان احتمالاً در آینده نزدیک از ویژگیهای ربات چت پیشرفتهتر مانند توصیهها و پیشبینیهای سریعتر، و همچنین دسترسی آسان به کنفرانسهای ویدیویی با کیفیت بالا از داخل یک مکالمه، بهره خواهند برد، زمانی که هوش مصنوعی با توسعه فناوری 5G.
این احتمالات و سایر احتمالات هنوز در حال بررسی هستند، اما با پیشرفت اتصال به اینترنت، هوش مصنوعی، NLP و یادگیری ماشینی، شیوع بیشتری خواهند داشت.
چوو
سلام،
ممنون از این برنامه
من یک سوال دارم.
"bag_of_words" تعریف نشده است. من نمی توانم این خطا را درک کنم.
میشه بگید چطوری میتونم این ارور رو حل کنم؟؟
ممنون از این برنامه!! روز خوبی داشته باشید
زاغ کبود
لطفاً قبل از استفاده از بخش چت بات یک تابع اضافه کنید:
///////////////////////////////////////////////////////////////////////// /////////////////////////////
def bag_of_words(ها، کلمات):
کیف = [0 برای _ در محدوده (لن(کلمات))]
s_words = nltk.word_tokenize(s)
s_words = [stemmer.stem(word.lower()) برای کلمه در s_words]
برای se در s_words:
برای i, w در enumerate (کلمات):
اگر w == se:
کیف[i] = 1
بازگشت numpy.array (کیف)
// قطعا مشکل شما حل خواهد شد. //
////////////////////////////////////////////////// ///////////////////////////
من کد کامل را با شما به اشتراک می گذارم، بنابراین تصویر واضحی از آن خواهید داشت.
///////////////////////////////////////////////////////////////////////// /////////
وارد کردن nltk
از nltk.stem.lancaster import LancasterStemmer
stemmer = LancasterStemmer()
وارد کردن numpy
واردات tflearn
واردات تنسورفلو
واردات تصادفی
واردات json
ترشی وارد کنید
با open("intents.json") به عنوان فایل:
داده = json.load (فایل)
تلاش كردن:
با open("data.pickle", "rb") به صورت f:
کلمات، برچسبها، آموزش، خروجی = pickle.load(f)
جز:
کلمات = []
برچسب ها = []
docs_x = []
docs_y = []
برای قصد در داده ها ["intents"]:
برای الگو در قصد ["الگوها"]:
wrds = nltk.word_tokenize(الگو)
words.extend(wrds)
docs_x.append(wrds)
docs_y.append(intent["برچسب"])
اگر قصد ["برچسب"] در برچسب ها نباشد:
labels.append(intent["برچسب"])
words = [stemmer.stem(w.lower()) برای w در کلمات اگر w != "؟"]
کلمات = مرتب شده (لیست (مجموعه (کلمات)))
برچسب ها = مرتب شده (برچسب ها)
آموزش = []
خروجی = []
out_empty = [0 برای _ در محدوده (len(labels))]
برای x، doc در enumerate(docs_x):
کیسه = []
wrds = [stemmer.stem(w.lower()) برای w در سند]
برای w در کلمات:
اگر w در wrds:
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)
خروجی = numpy.array (خروجی)
با open("data.pickle", "wb") به صورت f:
pickle.dump((کلمات، برچسب ها، آموزش، خروجی)، f)
tensorflow.reset_default_graph()
net = tflearn.input_data(shape=[هیچکدام، len(آموزش[0])])
net = tflearn.fully_connected(net, 8)
net = tflearn.fully_connected(net, 8)
net = tflearn.fully_connected(net، len(خروجی[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(ها، کلمات):
کیف = [0 برای _ در محدوده (لن(کلمات))]
s_words = nltk.word_tokenize(s)
s_words = [stemmer.stem(word.lower()) برای کلمه در s_words]
برای se در s_words:
برای i, w در enumerate (کلمات):
اگر w == se:
کیف[i] = 1
بازگشت numpy.array (کیف)
دف چت():
چاپ ("شروع به صحبت با ربات (برای توقف تایپ کنید)")
در حالی که درست است:
inp = ورودی ("شما:")
if inp.lower() == "خروج":
شکستن
results = model.predict([bag_of_words(inp, words)])
results_index = numpy.argmax (نتایج)
برچسب = برچسبها[شاخص_نتایج]
برای tg در داده ها ["مقصد"]:
if tg['tag'] == برچسب:
پاسخ ها = tg['responses']
چاپ (تصادفی.انتخاب (پاسخ))
چت ()
///////////////////////////////////////////////////////////////////////// ///////////////
متشکرم،
کد نویسی مبارک!
Lu
سلام،
آیا می توانید در مورد اینکه می خواهید یک ربات چت در پایتون ایجاد کنید، به من ایده ای از روند انجام دهید، اما اطلاعات از یک نظرسنجی در اکسل به دست آمده است. متشکرم!