Зміст[Сховати][Показати]
Голосові дзвінки поступово припиняються на користь текстових і візуальних засобів у комунікаційному секторі. Згідно з опитуванням Facebook, більше половини покупців вважають за краще купувати у компанії, з якою вони можуть спілкуватися. Спілкування стало новим соціально прийнятним способом спілкування.
Це дозволяє підприємствам спілкуватися зі своїми клієнтами в будь-який час і з будь-якого місця. Чат-боти набувають все більшої популярності серед компаній і клієнтів завдяки простоті використання та скороченому часу очікування.
Чат-боти або автоматизовані розмовні програми надають клієнтам більш налаштований метод доступу до послуг через текстовий інтерфейс. Новітні чат-боти на основі штучного інтелекту можуть розпізнавати запит (запитання, команду, наказ тощо), зроблений людиною (або іншим ботом, ініціатором) у певному середовищі, та відповідним чином реагувати (відповідь, дія тощо).
У цій публікації ми розглянемо, що таке чат-боти, їх переваги, варіанти використання та як створити власні глибоке навчання чат-бот на Python, серед іншого.
Давайте розпочнемо.
Отже, що таке чат-боти?
Чат-бот часто називають однією з найбільш передових і перспективних форм взаємодії людини і машини. Ці цифрові помічники покращують досвід роботи з клієнтами, впорядковуючи взаємодію між людьми та службами.
Одночасно вони надають підприємствам нові можливості для оптимізації процесу контакту з клієнтами для підвищення ефективності, що може скоротити звичайні витрати на підтримку.
Коротше кажучи, це програмне забезпечення на основі штучного інтелекту, яке призначене для спілкування з людьми їхніми природними мовами. Ці чат-боти часто взаємодіють за допомогою аудіо чи письмових прийомів, і вони можуть легко імітувати людські мови, щоб зв’язуватися з людьми по-людськи.
Чат-боти навчаються на основі взаємодії з користувачами, з часом стаючи все більш реалістичними та ефективними. Вони можуть виконувати широкий спектр ділових дій, наприклад, дозволяти витрати, взаємодіяти зі споживачами в Інтернеті та залучати потенційних клієнтів.
Створення власного чат-бота глибокого навчання за допомогою python
Існує багато різних видів чат-ботів у сфері навчання за допомогою машини і ШІ. Деякі чат-боти є віртуальними помічниками, інші — просто для спілкування, а інші — агенти з обслуговування клієнтів.
Ви, напевно, бачили деяких із тих, кого наймають підприємства, щоб відповідати на запити. У цьому підручнику ми створимо невеликого чат-бота, щоб відповідати на поширені запити.
1. Встановлення пакетів
Першим кроком є встановлення наступних пакетів.
2. Дані навчання
Тепер настав час з’ясувати, який тип інформації нам знадобиться для надання нашому чат-боту. Нам не потрібно завантажувати великі набори даних, тому що це простий чат-бот.
Ми будемо використовувати лише ту інформацію, яку створили самі. Щоб ефективно виконувати урок, вам потрібно створити файл .JSON з таким же форматом, як наведений нижче. Мій файл має назву «intents.json».
Файл JSON використовується для створення набору повідомлень, які користувач, ймовірно, буде вводити та зіставляти з набором відповідних відповідей. Кожен словник у файлі має тег, який визначає, до якої групи належить кожне повідомлення.
Ми використаємо цю інформацію для навчання а нейронної мережі щоб класифікувати фразу слів як один із тегів у нашому файлі.
Потім ми можемо просто отримати відповідь від цих груп і надати її користувачеві. Чат-бот буде кращим і складнішим, якщо ви запропонуєте його з додатковими тегами, відповідями та шаблонами.
3. Завантаження даних JSON
Ми почнемо із завантаження наших даних .json та імпортування деяких модулів. Зберіть файл .json у тому ж каталозі, що й ваш Скрипт Python. Наші дані .json тепер будуть збережені в змінній data.
4. Вилучення даних
Тепер настав час витягти потрібну інформацію з нашого файлу JSON. Усі шаблони, а також клас/тег, до якого вони належать, є обов’язковими.
Нам також знадобиться список усіх унікальних термінів у наших шаблонах (з причин, які ми пояснимо пізніше), тому давайте створимо кілька порожніх списків, щоб відстежувати ці значення.
Тепер ми переглянемо наші дані JSON і отримаємо потрібну інформацію. Замість того, щоб мати їх як рядки, ми будемо використовувати nltk.word tokenizer, щоб перетворити кожен шаблон у список слів.
Потім у нашому списку docs_x ми додамо кожен шаблон разом із пов’язаним із ним тегом до списку docs_y.
5. Основа слова
Знаходження кореня слова відоме як основне слово. Наприклад, основа слова «це» може бути «це», тоді як основа слова «відбувається» може бути «відбутися».
Ми скористаємося цією технікою виділення коренів, щоб скоротити словниковий запас нашої моделі та спробувати з’ясувати, що означають речення загалом. Цей код просто генерує унікальний список слів із основою, які будуть використані на наступному етапі підготовки даних.
6. Мішок слів
Настав час поговорити про мішок слів тепер, коли ми імпортували наші дані та згенерували словниковий запас. Нейронні мережі а алгоритми машинного навчання, як ми всі знаємо, потребують числового введення. Тому наш список рядків не скоротить його. Нам потрібен механізм для представлення чисел у наших реченнях, і саме тут з’являється мішок слів.
Кожна фраза буде представлена списком довжини кількості термінів у словнику нашої моделі. Кожне слово в нашому словнику буде представлено місцем у списку. Якщо позиція в списку дорівнює 1, це слово з'являється в нашій заяві; якщо це 0, слово не з’являється в нашому реченні.
Ми називаємо це мішком слів, тому що не знаємо послідовності, в якій слова з’являються у фразі; все, що ми знаємо, це те, що вони існують у словнику нашої моделі.
На додаток до структуризації нашого введення, ми також повинні відформатувати наш вихід, щоб нейронна мережа розуміла його. Ми створимо вихідні списки, які відповідають довжині кількості міток/тегів у нашому наборі даних, подібно до пакета слів. Кожне місце в списку представляє унікальну мітку/тег, а 1 в будь-якому з цих місць вказує, яку мітку/тег представлено.
Нарешті, ми будемо використовувати масиви NumPy для зберігання наших навчальних даних і результатів.
7. Розробка моделі
Ми готові розпочати створення та навчання моделі зараз, коли ми попередньо обробили всі наші дані. Для наших цілей ми будемо використовувати дуже базову нейронну мережу з прямим зв’язком із двома прихованими шарами.
Метою нашої мережі буде перегляд набору слів і призначення їх класу (один із наших тегів із файлу JSON). Ми почнемо зі встановлення архітектури нашої моделі. Майте на увазі, що ви можете пограти з деякими числами, щоб створити кращу модель! навчання за допомогою машини здебільшого базується на методі проб і помилок.
8. Навчання моделі та збереження
Настав час тренувати нашу модель на наших даних, коли ми її налаштували! Ми досягнемо цього, підігнавши наші дані до моделі. Кількість епох, які ми надаємо, — це кількість разів, коли модель буде піддана впливу тих самих даних під час навчання.
Ми можемо зберегти модель у файловій моделі, як тільки ми закінчимо її навчання. tflearn — це скрипт, який можна використовувати в інших сценаріях.
9. Використання чат-бота
Тепер ви можете почати спілкуватися зі своїм ботом.
Переваги чат-бота
- Оскільки очікується, що боти працюватимуть 365 днів на рік, 24 години на добу, без оплати, це збільшує доступність та швидкість реакції.
- Ці боти є ідеальними інструментами для вирішення трьох ключових протиріч великих даних: обсягу, швидкості та різноманітності.
- Чат-боти — це програмне забезпечення, яке можна використовувати, щоб дізнатися про споживачів компанії та зрозуміти їх.
- Він має чудову потужність, оскільки має низькі витрати на технічне обслуговування після вищих переваг.
- Програми чат-ботів створюють дані, які можна зберігати та використовувати для аналітики та прогнозів.
Використання
- Вирішення запитів клієнтів
- Відповіді на часті запитання
- Призначення клієнтів до команди підтримки
- Збір відгуків клієнтів
- Рекомендуємо нові пропозиції
- Купуйте з розмовною комерцією
- IT-відділу підтримки клієнтів
- Бронювання житла
- Грошовий переказ
Висновок
Чат-боти, як і інші технології штучного інтелекту, будуть використовуватися для покращення людських навичок і звільнення людей від креативності й уяви, дозволяючи їм витрачати більше часу на стратегічні, а не тактичні завдання.
Підприємства, співробітники та споживачі, ймовірно, отримають переваги від розширених функцій чат-ботів, таких як швидші рекомендації та передбачення, а також легкий доступ до відеоконференцій високої чіткості з розмови, найближчим часом, коли ШІ поєднається з розробкою Технологія 5G.
Ці та інші можливості все ще досліджуються, але в міру розвитку підключення до Інтернету, ШІ, НЛП та машинного навчання вони стануть все більш поширеними.
Чху
Здравствуйте,
Дякую за цю програму.
У мене є питання.
“bag_of_words” не визначено. Я не можу зрозуміти цю помилку.
Не могли б ви сказати мені, як я можу вирішити цю помилку??
Дякую за цю програму!! Гарного дня
Сойка
Будь ласка, додайте функцію перед використанням розділу чат-бота:
////////////////////////////////////////////////// /////////////////////////////
def bag_of_words(s, words):
сумка = [0 для _ в діапазоні (довжина (слова))]
s_words = nltk.word_tokenize(s)
s_words = [stemmer.stem(word.lower()) для слова в s_words]
для себе в s_words:
для i, w у enumerate(словах):
якщо w == se:
сумка[i] = 1
повернути numpy.array(bag)
// Це точно вирішить вашу проблему. //
////////////////////////////////////////////////// // //////////////////////////
Я ділюся з вами повним кодом, щоб ви могли його чітко уявити.
//////////////////////////////////////////////////////// /////////
імпортувати nltk
з nltk.stem.lancaster імпорт LancasterStemmer
stemmer = LancasterStemmer()
імпортувати numpy
імпорт tflearn
імпорт tensorflow
import random
імпорт JSON
імпортний соління
з open(“intents.json”) як файл:
дані = 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[“тег”] не в мітках:
labels.append(намір[“тег”])
words = [stemmer.stem(w.lower()) для w у словах if w != “?”]
words = sorted(list(set(words)))
мітки = відсортовані (мітки)
навчання = []
вихід = []
out_empty = [0 для _ в діапазоні (len(labels))]
для x, doc в enumerate(docs_x):
сумка = []
wrds = [stemmer.stem(w.lower()) для w у документі]
для w словами:
якщо w у словах:
bag.append(1)
ще:
bag.append(0)
вихідний_ряд = поза_порожнім[:]
output_row[labels.index(docs_y[x])] = 1
training.append(сумка)
output.append(output_row)
навчання = numpy.array(навчання)
вихід = numpy.array(вихід)
з 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)
модель = tflearn.DNN(net)
спробуйте:
model.load(“model.tflearn”)
крім:
model.fit(навчання, вихід, n_epoch=1500, batch_size=8, show_metric=True)
model.save(“model.tflearn”)
def bag_of_words(s, words):
сумка = [0 для _ в діапазоні (довжина (слова))]
s_words = nltk.word_tokenize(s)
s_words = [stemmer.stem(word.lower()) для слова в s_words]
для себе в s_words:
для i, w у enumerate(словах):
якщо w == se:
сумка[i] = 1
повернути numpy.array(bag)
def chat():
print(«Почніть розмову з ботом (введіть quit, щоб зупинити)!»)
Правда:
inp = input(“Ви: “)
if inp.lower() == “вийти”:
перерву
результати = model.predict([bag_of_words(inp, words)])
результати_індексу = numpy.argmax(результати)
tag = labels[індекс_результатів]
для tg у data[“intents”]:
if tg['tag'] == тег:
відповіді = tg['відповіді']
print(random.choice(responses))
чат()
////////////////////////////////////////////////// ///////////////
Спасибі,
Щасливого кодування!
Lu
Здравствуйте,
Чи можете ви дати мені уявлення про процес, який потрібно виконати, якщо ви хочете створити чат-бота на Python, але інформацію отримано з опитування в Excel. Дякую тобі!