Содржина[Крие][Прикажи]
Гласовните повици постепено се укинуваат во корист на текстот и визуелните слики во комуникацискиот сектор. Според анкетата на Фејсбук, повеќе од половина од купувачите претпочитаат да купуваат од компанија со која можат да разговараат. Разговорот стана нов општествено прифатлив начин на комуникација.
Тоа им овозможува на бизнисите да комуницираат со своите клиенти во секое време и од која било локација. Четботите се повеќе добиваат на популарност меѓу компаниите и клиентите поради нивната леснотија на користење и намаленото време на чекање.
Chatbots, или автоматизирани програми за разговор, им обезбедуваат на клиентите поприспособен метод за пристап до услугите преку интерфејс базиран на текст. Најновите чет-ботови напојувани со вештачка интелигенција можат да препознаат барање (прашање, команда, нарачка, итн.) направено од лице (или друг бот, почеток) во одредена средина и соодветно да одговорат (одговор, дејство, итн.).
Во овој пост, ќе разгледаме што се чет-ботови, нивните придобивки, случаи на употреба и како да направите свои длабоко учење chatbot во Python, меѓу другото.
Ајде да почнеме.
Значи, што се чат-ботови?
Чет-ботот често се нарекува една од најнапредните и најперспективните форми на интеракција човек-машина. Овие дигитални асистенти го подобруваат искуството на клиентите со рационализирање на интеракциите помеѓу луѓето и услугите.
Истовремено, тие им обезбедуваат на бизнисите нови опции за оптимизирање на процесот на контакт со клиентите за ефикасност, што може да ги намали конвенционалните трошоци за поддршка.
Накратко, софтверот базиран на вештачка интелигенција е наменет да комуницира со луѓето на нивните природни јазици. Овие чет-ботови често комуницираат преку аудио или писмени техники и тие лесно можат да имитираат човечки јазици за да се поврзат со луѓето на начин сличен на човекот.
Четботите учат од нивните интеракции со корисниците, станувајќи се пореални и поефикасни со текот на времето. Тие можат да се справат со широк опсег на деловни активности, како што се овластување трошење, ангажирање со потрошувачите на интернет и генерирање на потенцијални клиенти.
Создавање сопствен чет-бот за длабоко учење со python
Постојат многу различни видови на чет-ботови во областа на машинско учење и ВИ. Некои чет-ботови се виртуелни асистенти, додека други се само таму за да разговараат, додека други се агенти за услуги на клиентите.
Веројатно сте виделе некои од оние кои се вработени во бизнисите да одговараат на прашања. Ќе направиме мал четбот во ова упатство за да одговориме на често бараните прашања.
1. Инсталирање на пакети
Нашиот прв чекор е да ги инсталираме следните пакети.
2. Податоци за обука
Сега е време да откриеме каков тип на информации ќе ни требаат да го дадеме нашиот четбот. Не треба да преземаме големи збирки на податоци бидејќи ова е едноставен четбот.
Ќе ги користиме само информациите што самите сме ги создале. За ефективно да ја следите лекцијата, ќе треба да генерирате датотека .JSON со ист формат како оној што е прикажан подолу. Мојата датотека е именувана како „intents.json“.
Датотеката JSON се користи за креирање сет на пораки кои корисникот најверојатно ќе ги внесе и мапира на збир на релевантни одговори. Секој речник во датотеката има ознака која идентификува на која група припаѓа секоја порака.
Ќе ги користиме овие информации за да тренираме a невронска мрежа да категоризираме фраза со зборови како една од ознаките во нашата датотека.
Потоа можеме само да земеме одговор од тие групи и да му го обезбедиме на корисникот. Четботот ќе биде подобар и покомплициран ако го понудите со дополнителни ознаки, одговори и обрасци.
3. JSON податоци се вчитуваат
Ќе започнеме со вчитување на нашите податоци .json и увоз на некои модули. Соберете ја датотеката your.json во истиот директориум како вашиот Пајтон скрипта. Нашите податоци .json сега ќе бидат зачувани во променливата податоци.
4. Извлекување податоци
Сега е време да ги извлечеме потребните информации од нашата JSON-датотека. Потребни се сите шеми, како и класата/ознаката на која припаѓаат.
Ќе ни треба и список со сите уникатни термини во нашите шеми (од причини што ќе ги објасниме подоцна), па ајде да создадеме празни списоци за да ги следиме овие вредности.
Сега ќе ги прегледаме нашите податоци за JSON и ќе ги вратиме информациите што ни се потребни. Наместо да ги имаме како низи, ќе користиме токенизатор nltk.word за да ја трансформираме секоја шема во листа на зборови.
Потоа, во нашата листа docs_x, ќе ја додадеме секоја шема, заедно со нејзината поврзана ознака, во листата docs_y.
5. Стекнување на зборови
Наоѓањето на коренот на зборот е познато како stemming. На пример, стеблото на зборот „тоа“ може да биде „тоа“, додека стеблото на зборот „се случува“ може да биде „се случи“.
Ќе ја користиме оваа техника за стекнување за да го намалиме вокабуларот на нашиот модел и да се обидеме да откриеме што значат речениците воопшто. Овој код едноставно ќе генерира уникатна листа на зборови кои ќе се користат во следната фаза од подготовката на податоците.
6. Торба со зборови
Време е да зборуваме за вреќа со зборови сега кога ги увезовме нашите податоци и генериравме речник. Невронски мрежи а алгоритмите за машинско учење, како што сите знаеме, бараат нумерички внес. Значи, нашата листа на жици нема да ја намали. Потребен ни е механизам за претставување на бројките во нашите реченици, каде што доаѓа вреќа со зборови.
Секоја фраза ќе биде претставена со листа на должината на бројот на термини во речникот на нашиот модел. Секој збор во нашиот вокабулар ќе биде претставен со место во списокот. Ако позицијата во листата е 1, зборот се појавува во нашата изјава; ако е 0, зборот не се појавува во нашата реченица.
Ние го нарекуваме вреќа со зборови затоа што не ја знаеме низата по која зборовите се појавуваат во фразата; се што знаеме е дека тие постојат во речникот на нашиот модел.
Покрај структурирањето на нашиот влез, ние исто така мора да го форматираме нашиот излез така што невронската мрежа да го разбере. Ќе изградиме излезни списоци кои се должината на бројот на ознаки/ознаки во нашата база на податоци, слични на вреќа со зборови. Секое место во списокот претставува единствена етикета/ознака, а 1 на која било од тие локации означува која ознака/ознака се претставува.
Конечно, ќе користиме NumPy низи за складирање на нашите податоци за обука и излез.
7. Развој на модел
Подготвени сме да започнеме со изградба и обука на модел сега откако претходно ги обработивме сите наши податоци. Ќе користиме многу основна невронска мрежа со два скриени слоеви за нашите цели.
Целта на нашата мрежа ќе биде да погледне збирка зборови и да ги додели на класа (една од нашите ознаки од датотеката JSON). Ќе започнеме со воспоставување на архитектурата на нашиот модел. Имајте на ум дека можете да си играте со некои од бројките за да дојдете до подобар модел! Машинско учење најмногу се заснова на обиди и грешки.
8. Обука и заштеда на модели
Време е да го обучиме нашиот модел на нашите податоци сега кога го поставивме! Ова ќе го постигнеме со приспособување на нашите податоци на моделот. Бројот на епохи што го даваме е колку пати моделот ќе биде изложен на истите податоци за време на обуката.
Можеме да го зачуваме моделот во моделот на датотека откако ќе завршиме со обуката. tflearn е скрипта што може да се користи во други скрипти.
9. Користење на четбот
Сега можете да започнете да разговарате со вашиот бот.
Предности на Chatbot
- Бидејќи ботови се очекува да работат 365 дена во годината, 24 часа на ден, без плата, ја зголемуваат достапноста и брзината на реакција.
- Овие ботови се совршени алатки за справување со трите клучни Vs на големите податоци: волумен, брзина и разновидност.
- Chatbots се софтвер кој може да се користи за да се запознаат и да се разберат потрошувачите на компанијата.
- Има супериорна моќ што има евтини трошоци за одржување откако има врвни придобивки.
- Апликациите за четбот создаваат податоци што може да се зачуваат и да се користат за аналитика и прогнози.
Употребен случај
- Решавање на прашања на клиентите
- Одговарање на често поставувани прашања
- Доделување клиенти за тим за поддршка
- Собирање повратни информации од клиентите
- Препорачува нови понуди
- Купувајте со разговорна трговија
- IT Helpdesk
- Резервација на сместување
- Трансфер на пари
Заклучок
Четботите, како и другите технологии за вештачка интелигенција, ќе се користат за да ги зголемат човечките вештини и да ги ослободат луѓето да бидат покреативни и имагинативни, дозволувајќи им да поминуваат повеќе време на стратешки, а не на тактички задачи.
Бизнисите, вработените и потрошувачите веројатно ќе имаат корист од подобрените функции за чет-бот, како што се побрзи препораки и предвидувања, како и лесен пристап до видео конференции со висока дефиниција од разговор, во блиска иднина, кога вештачката интелигенција ќе се комбинира со развојот на 5G технологија.
Овие и други можности сè уште се истражуваат, но како што ќе напредуваат поврзувањето на интернет, вештачката интелигенција, НЛП и машинското учење, тие ќе станат позастапени.
Чву
Здраво,
Ви благодариме за оваа програма.
Имам прашање.
„bag_of_words“ не е дефинирано. Не можам да ја разберам оваа грешка.
Можете ли да ми кажете како да ја решам оваа грешка??
Ви благодариме за оваа програма!! Имај убав ден
Jay
Ве молиме додадете функција пред да го користите делот за четбот:
/////////////////////////////////////////////////////////////////// /////////////////////////////
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
увоз на учење
увезете тензорфло
увоз случајно
увоз json
увоз на кисела краставица
со open(“intents.json”) како датотека:
податоци = json.load(датотека)
пробај:
со отворено („податоци. pickle“, „rb“) како f:
зборови, етикети, обука, излез = pickle.load(f)
освен:
зборови = []
етикети = []
docs_x = []
docs_y = []
за намера во податоците[„намери“]:
за шаблон во намерата[„шеми“]:
wrds = nltk.word_tokenize(шема)
зборови.проширува(wrds)
docs_x.append(wrds)
docs_y.append(намера[„ознака“])
ако намерата [„ознака“] не е во етикети:
labels.append(intent[„ознака“])
зборови = [stemmer.stem(w.lower()) за w во зборови ако w != „?“]
зборови = подредени(список(множество(зборови)))
етикети = подредени (етикети)
обука = []
излез = []
out_empty = [0 за _ во опсег (len(етикети))]
за x, doc innumerate(docs_x):
торба = []
wrds = [stemmer.stem(w.lower()) за w во doc]
за w со зборови:
ако w во зборови:
торба.прилог(1)
друго:
торба.прилог(0)
излез_ред = надвор_празен[:]
излезна_реда[етикети.индекс(docs_y[x])] = 1
обука.додаток(торба)
output.append(output_row)
обука = numpy.array(тренинг)
излез = numpy.array(излез)
со отворено („податоци. pickle“, „wb“) како f:
pickle.dump((зборови, етикети, обука, излез), ѓ)
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]), активација=”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)
дефинитивен разговор ():
печатење („Започнете да зборувате со ботот (напишете quit за да престанете)!“)
додека е точно:
inp = влез („Вие:“)
ако inp.lower() == „напушти“:
се скрши
резултати = model.predict([торба_со_зборови(инп, зборови)])
results_index = numpy.argmax(резултати)
ознака = етикети[индекс_резултати]
за tg во податоци[„намери“]:
ако tg['таг'] == ознака:
одговори = tg['одговори']
печатење (случаен избор (одговори))
разговор ()
/////////////////////////////////////////////////////////////////// ///////////////
Ви благодарам,
Среќно кодирање!
Lu
Здраво,
Можете ли да ми дадете идеја за процесот што треба да се спроведе во случај да сакате да креирате четбот во python, но информациите се добиени од анкета во Excel. Ви благодарам!