Съдържание[Крия][Покажи]
Гласовите повиквания постепенно се премахват в полза на текста и визуализацията в комуникационния сектор. Според анкета във Facebook повече от половината от купувачите предпочитат да купуват от компания, с която могат да говорят. Чатът се превърна в новия социално приемлив начин на комуникация.
Тя позволява на бизнеса да комуникира с клиентите си по всяко време и от всяко място. Чатботите набират все по-голяма популярност сред компаниите и клиентите поради тяхната лекота на използване и намалено време за изчакване.
Чатботите или автоматизираните разговорни програми предоставят на клиентите по-персонализиран метод за достъп до услуги чрез текстов интерфейс. Най-новите чатботове, задвижвани от изкуствен интелект, могат да разпознаят заявка (въпрос, команда, заповед и т.н.), направена от човек (или друг бот, начало) в конкретна среда и да реагират по подходящ начин (отговор, действие и т.н.).
В тази публикация ще разгледаме какво представляват чатботовете, техните предимства, случаи на употреба и как да направите свои собствени дълбоко учене чатбот в Python, наред с други неща.
Да започваме.
И така, какво представляват чатботовете?
Чатботът често се нарича една от най-напредналите и обещаващи форми на взаимодействие човек-машина. Тези цифрови асистенти подобряват изживяването на клиентите, като рационализират взаимодействията между хората и услугите.
Едновременно с това те предоставят на бизнеса нови опции за оптимизиране на процеса на контакт с клиенти за ефективност, което може да намали конвенционалните разходи за поддръжка.
Накратко, това е базиран на изкуствен интелект софтуер, който е предназначен да комуникира с хората на техните естествени езици. Тези чатботове често взаимодействат чрез аудио или писмени техники и могат лесно да имитират човешки езици, за да се свържат с хората по човешки начин.
Чатботите се учат от взаимодействието си с потребителите, като с времето стават по-реалистични и ефективни. Те могат да се справят с широк спектър от бизнес дейности, като разрешаване на разходи, ангажиране с потребителите онлайн и генериране на потенциални клиенти.
Създаване на свой собствен чат бот за дълбоко обучение с python
Има много различни видове чат ботове в областта на машинно обучение и AI. Някои чатботове са виртуални асистенти, докато други са там, за да разговарят с тях, докато други са агенти за обслужване на клиенти.
Вероятно сте виждали някои от тези, наети от бизнеса, за да отговарят на запитвания. В този урок ще направим малък чатбот, за да отговорим на често търсени запитвания.
1. Инсталиране на пакети
Първата ни стъпка е да инсталираме следните пакети.
2. Данни за обучението
Сега е време да разберем какъв тип информация ще ни е необходима, за да дадем на нашия чатбот. Не е необходимо да изтегляме големи набори от данни, защото това е обикновен чатбот.
Ще използваме само информацията, която сме създали сами. За да следвате ефективно урока, ще трябва да генерирате .JSON файл със същия формат като този, който се вижда по-долу. Моят файл се казва „intents.json“.
JSON файлът се използва за създаване на набор от съобщения, които потребителят вероятно ще въведе и съпостави с набор от подходящи отговори. Всеки речник във файла има етикет, който идентифицира към коя група принадлежи всяко съобщение.
Ще използваме тази информация, за да обучим a невронна мрежа за да категоризирате фраза от думи като един от таговете в нашия файл.
След това можем просто да вземем отговор от тези групи и да го предоставим на потребителя. Чатботът ще бъде по-добър и по-сложен, ако го предложите с допълнителни тагове, отговори и модели.
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. Използване на чатбот
Сега можете да започнете да чатите с вашия бот.
Предимства на Chatbot
- Тъй като се очаква ботовете да работят 365 дни в годината, 24 часа в денонощието, без заплащане, увеличават достъпността и скоростта на реакция.
- Тези ботове са перфектни инструменти за справяне с трите ключови Vs на големите данни: обем, скорост и разнообразие.
- Чатботовете са софтуер, който може да се използва, за да научите и разберете потребителите на компанията.
- Той има превъзходна мощност, че има евтини разходи за поддръжка, след като има големи предимства.
- Приложенията за чат-бот създават данни, които могат да бъдат запазени и използвани за анализи и прогнози.
Случай на употреба
- Решаване на клиентски запитвания
- Отговаряне на често задавани въпроси
- Назначаване на клиенти в екипа за поддръжка
- Събиране на отзиви от клиенти
- Препоръчани нови оферти
- Пазарувайте с разговорна търговия
- ИТ Помощно бюро
- Резервация за настаняване
- Превод на пари
Заключение
Чатботите, подобно на други технологии за изкуствен интелект, ще бъдат използвани за увеличаване на човешките умения и освобождаване на хората да бъдат по-креативни и с въображение, като им позволяват да отделят повече време на стратегически, а не на тактически задачи.
Бизнесът, служителите и потребителите вероятно ще се възползват от подобрените функции на чатбот, като по-бързи препоръки и прогнози, както и лесен достъп до видеоконферентна връзка с висока разделителна способност в рамките на разговор, в близко бъдеще, когато AI се комбинира с развитието на 5G технология.
Тези и други възможности все още се проучват, но с напредването на интернет свързаността, AI, NLP и машинното обучение, те ще станат все по-разпространени.
Чуу
Здравейте,
Благодаря ви за тази програма.
Имам въпрос.
“bag_of_words” не е дефиниран. Не мога да разбера тази грешка.
Бихте ли ми казали как мога да разреша тази грешка??
Благодаря ви за тази програма!! Приятен ден
Сойка
Моля, добавете функция, преди да използвате секцията за чатбот:
//////////////////////////////////////////////////// ///////////////////////////////
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 в enumerate(words):
ако w == se:
чанта[i] = 1
върне numpy.array(чанта)
// Определено ще реши проблема ви. //
//////////////////////////////////////////////////// ////////////////////////////
Споделям пълния код с вас, така че ще получите ясна представа за него.
/////////////////////////////////////////////////// /////////
внос nltk
от nltk.stem.lancaster импортирайте LancasterStemmer
stemmer = LancasterStemmer()
импортиране на numpy
импортиране на tflearn
импортиране на tensorflow
случайно въвеждане
импортиране json
внос туршия
с open(“intents.json”) като файл:
данни = json.load(файл)
опитвам:
с open(“data.pickle”, “rb”) като f:
думи, етикети, обучение, изход = pickle.load(f)
с изключение:
думи = []
етикети = []
документи_x = []
документи_y = []
за намерение в данни ["намерения"]:
за шаблон в намерение ["модели"]:
wrds = nltk.word_tokenize(модел)
words.extend(wrds)
docs_x.append(wrds)
docs_y.append(намерение["етикет"])
ако intent[“tag”] не е в етикетите:
labels.append(намерение["етикет"])
думи = [stemmer.stem(w.lower()) за w в думи, ако w != “?”]
думи = сортирани (списък (набор (думи)))
етикети = сортирани (етикети)
обучение = []
изход = []
out_empty = [0 за _ в диапазон (len(етикети))]
за x, doc в enumerate(docs_x):
чанта = []
wrds = [stemmer.stem(w.lower()) за w в документ]
за w с думи:
ако w в думи:
bag.append(1)
друго:
bag.append(0)
изходен_ред = out_empty[:]
изходен_ред[labels.index(docs_y[x])] = 1
training.append(чанта)
output.append(изходен_ред)
обучение = numpy.array(обучение)
изход = 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(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 за _ в диапазон (len(думи))]
s_words = nltk.word_tokenize(s)
s_words = [stemmer.stem(word.lower()) за дума в s_words]
за себе си в s_words:
за i, w в enumerate(words):
ако w == se:
чанта[i] = 1
върне numpy.array(чанта)
def chat():
print(“Започнете да говорите с бота (напишете quit, за да спрете)!”)
докато е вярно:
inp = вход („Вие:“)
ако inp.lower() == „излизане“:
почивка
резултати = model.predict([bag_of_words(inp, words)])
results_index = numpy.argmax(резултати)
етикет = етикети[резултат_индекс]
за tg в данни ["намерения"]:
if tg['tag'] == етикет:
отговори = tg['отговори']
print(random.choice(responses))
чат()
////////////////////////////////////////////////// ///////////////
Благодаря ти,
Приятно кодиране!
Lu
Здравейте,
Бихте ли ми дали идея за процеса, който да извърша в случай, че искам да създам чатбот в python, но информацията се получава от анкета в excel. Благодаря ти!