Spis treści[Ukryć][Pokazać]
Połączenia głosowe są wycofywane na rzecz tekstu i grafiki w sektorze komunikacyjnym. Według ankiety przeprowadzonej na Facebooku ponad połowa kupujących woli kupować od firmy, z którą może porozmawiać. Czat stał się nowym społecznie akceptowanym sposobem komunikacji.
Umożliwia firmom komunikację z klientami w dowolnym czasie iz dowolnego miejsca. Chatboty zyskują coraz większą popularność wśród firm i klientów ze względu na łatwość obsługi i skrócony czas oczekiwania.
Chatboty lub zautomatyzowane programy konwersacyjne zapewniają klientom bardziej spersonalizowaną metodę dostępu do usług za pośrednictwem interfejsu tekstowego. Najnowsze chatboty oparte na sztucznej inteligencji potrafią rozpoznać zapytanie (pytanie, polecenie, polecenie itp.) zadane przez osobę (lub innego bota, incepcję) w określonym środowisku i odpowiednio na nie odpowiedzieć (odpowiedź, działanie itp.).
W tym poście omówimy, czym są chatboty, jakie są ich zalety, przypadki użycia i jak tworzyć własne głęboka nauka chatbota w Pythonie, m.in.
Zacznijmy.
Czym więc są chatboty?
Chatbot jest często określany jako jedna z najbardziej zaawansowanych i obiecujących form interakcji człowiek-maszyna. Cyfrowi asystenci poprawiają jakość obsługi klienta, usprawniając interakcje między ludźmi i usługami.
Jednocześnie zapewniają firmom nowe opcje optymalizacji procesu kontaktu z klientem pod kątem wydajności, co może obniżyć konwencjonalne wydatki na wsparcie.
Krótko mówiąc, jest to oprogramowanie oparte na sztucznej inteligencji, które ma komunikować się z ludźmi w ich naturalnych językach. Te chatboty często wchodzą w interakcje za pomocą technik audio lub pisemnych i mogą z łatwością naśladować ludzkie języki, aby łączyć się z ludźmi w sposób podobny do ludzkiego.
Chatboty uczą się na podstawie interakcji z użytkownikami, stając się z czasem bardziej realistyczne i wydajne. Mogą obsługiwać szeroki zakres działań biznesowych, takich jak zatwierdzanie wydatków, kontakt z konsumentami online i generowanie potencjalnych klientów.
Tworzenie własnego chatbota do głębokiego uczenia się za pomocą Pythona
Istnieje wiele różnych rodzajów chatbotów w dziedzinie uczenie maszynowe i sztuczna inteligencja. Niektóre chatboty są wirtualnymi asystentami, inne służą tylko do rozmowy, a jeszcze inne są agentami obsługi klienta.
Prawdopodobnie widziałeś niektórych z tych zatrudnionych przez firmy do odpowiadania na zapytania. W tym samouczku stworzymy małego chatbota, który będzie odpowiadał na często zadawane pytania.
1. Instalowanie pakietów
Naszym pierwszym krokiem jest zainstalowanie następujących pakietów.
2. Dane treningowe
Teraz nadszedł czas, aby dowiedzieć się, jakiego rodzaju informacje będziemy potrzebować do przekazania naszemu chatbotowi. Nie musimy pobierać żadnych dużych zestawów danych, ponieważ jest to prosty chatbot.
Będziemy wykorzystywać tylko informacje, które sami stworzyliśmy. Aby skutecznie śledzić lekcję, musisz wygenerować plik .JSON w takim samym formacie, jak ten pokazany poniżej. Mój plik nazywa się „intents.json”.
Plik JSON służy do tworzenia zestawu wiadomości, które użytkownik prawdopodobnie wprowadzi i zmapuje do zestawu odpowiednich odpowiedzi. Każdy słownik w pliku ma znacznik, który identyfikuje grupę, do której należy dana wiadomość.
Wykorzystamy te informacje do szkolenia a sieci neuronowe kategoryzować frazę słów jako jeden z tagów w naszym pliku.
Następnie możemy po prostu pobrać odpowiedź z tych grup i przekazać ją użytkownikowi. Chatbot będzie lepszy i bardziej skomplikowany, jeśli zaoferujesz go z dodatkowymi tagami, odpowiedziami i wzorami.
3. Ładowanie danych JSON
Zaczniemy od załadowania naszych danych .json i zaimportowania niektórych modułów. Złóż plik .json w tym samym katalogu co plik Skrypt Pythona. Nasze dane .json zostaną teraz zapisane w zmiennej data.
4. Ekstrakcja danych
Teraz nadszedł czas, aby wyodrębnić potrzebne informacje z naszego pliku JSON. Wszystkie wzorce, jak również klasa/znacznik, do którego należą, są wymagane.
Będziemy również potrzebować listy wszystkich unikalnych terminów w naszych wzorcach (z powodów, które wyjaśnimy później), więc utwórzmy puste listy, aby śledzić te wartości.
Teraz przejrzymy nasze dane JSON i pobierzemy potrzebne informacje. Zamiast mieć je jako ciągi, użyjemy tokenizera nltk.word, aby przekształcić każdy wzorzec w listę słów.
Następnie na naszej liście docs_x dodamy każdy wzorzec wraz z powiązanym tagiem do listy docs_y.
5. Tworzenie słów
Znalezienie rdzenia słowa jest znane jako stemming. Na przykład rdzeń słowa „to” może brzmieć „to”, podczas gdy rdzeń słowa „zdarza się” może brzmieć „zdarzać się”.
Użyjemy tej techniki stemmingu, aby ograniczyć słownictwo naszego modelu i spróbować dowiedzieć się, co ogólnie oznaczają zdania. Ten kod po prostu wygeneruje unikalną listę słów z rdzeniem, które zostaną użyte w następnej fazie przygotowywania danych.
6. Worek słów
Teraz, gdy zaimportowaliśmy nasze dane i wygenerowaliśmy słownictwo tematyczne, nadszedł czas, aby porozmawiać o zbiorze słów. Sieci neuronowe a algorytmy uczenia maszynowego, jak wszyscy wiemy, wymagają danych liczbowych. Więc nasza lista ciągów nie wystarczy. Potrzebujemy mechanizmu do reprezentowania liczb w naszych zdaniach, w którym pojawia się worek słów.
Każda fraza będzie reprezentowana przez listę długości liczby terminów w słowniku naszego modelu. Każde słowo w naszym słowniku będzie reprezentowane przez miejsce na liście. Jeśli pozycja na liście to 1, to słowo pojawia się w naszym zestawieniu; jeśli jest to 0, słowo nie pojawia się w naszym zdaniu.
Nazywamy to workiem słów, ponieważ nie znamy kolejności występowania słów w zdaniu; wiemy tylko, że istnieją one w słowniku naszego modelu.
Oprócz ustrukturyzowania danych wejściowych musimy również sformatować dane wyjściowe, aby sieć neuronowa je zrozumiała. Zbudujemy listy wyjściowe o długości odpowiadającej liczbie etykiet/tagów w naszym zbiorze danych, podobnie jak worek słów. Każde miejsce na liście reprezentuje unikalną etykietę/znacznik, a 1 w dowolnym z tych miejsc wskazuje, która etykieta/znacznik jest reprezentowana.
Na koniec użyjemy tablic NumPy do przechowywania naszych danych treningowych i danych wyjściowych.
7. Rozwój modelu
Teraz, po wstępnym przetworzeniu wszystkich naszych danych, jesteśmy gotowi do rozpoczęcia tworzenia i trenowania modelu. Do naszych celów wykorzystamy bardzo podstawową sieć neuronową typu feed-forward z dwiema ukrytymi warstwami.
Zadaniem naszej sieci będzie przyjrzenie się zbiorowi słów i przypisanie ich do klasy (jeden z naszych tagów z pliku JSON). Zaczniemy od ustalenia architektury naszego modelu. Pamiętaj, że możesz bawić się niektórymi liczbami, aby wymyślić lepszy model! Nauczanie maszynowe opiera się głównie na próbach i błędach.
8. Szkolenie i zapisywanie modeli
Nadszedł czas, aby wyszkolić nasz model na naszych danych teraz, gdy go skonfigurowaliśmy! Osiągniemy to, dopasowując nasze dane do modelu. Podana przez nas liczba epok to liczba przypadków, w których model będzie narażony na te same dane podczas uczenia.
Możemy zapisać model w pliku model, gdy skończymy go trenować. tflearn to skrypt, którego można używać w innych skryptach.
9. Korzystanie z chatbota
Teraz możesz rozpocząć czat ze swoim botem.
Korzyści z Chatbota
- Ponieważ boty mają działać 365 dni w roku, 24 godziny na dobę, bez wynagrodzenia, zwiększają dostępność i szybkość reakcji.
- Te boty są doskonałymi narzędziami do radzenia sobie z trzema kluczowymi Vs Big Data: wolumenem, szybkością i różnorodnością.
- Chatboty to oprogramowanie, które można wykorzystać do poznania i zrozumienia konsumentów firmy.
- Ma doskonałą moc, że ma tanie koszty utrzymania po najwyższych korzyściach.
- Aplikacje Chatbota tworzą dane, które można zachować i wykorzystać do analiz i prognoz.
Przypadek użycia
- Rozwiązywanie zapytań klientów
- Odpowiadanie na często zadawane pytania
- Przypisywanie klientów do zespołu wsparcia
- Zbieranie opinii klientów
- Rekomendowanie nowych ofert
- Sklep z handlem konwersacyjnym
- Helpdesk IT
- Rezerwacja noclegów
- Transfer pieniędzy
Wnioski
Chatboty, podobnie jak inne technologie sztucznej inteligencji, będą wykorzystywane do zwiększania ludzkich umiejętności i wyzwalania ludzi, aby byli bardziej kreatywni i pomysłowi, pozwalając im spędzać więcej czasu na zadaniach strategicznych, a nie taktycznych.
Firmy, pracownicy i konsumenci prawdopodobnie skorzystają z ulepszonych funkcji chatbota, takich jak szybsze rekomendacje i prognozy, a także łatwy dostęp do wideokonferencji w wysokiej rozdzielczości z poziomu rozmowy, w niedalekiej przyszłości, kiedy sztuczna inteligencja zostanie połączona z rozwojem Technologia 5G.
Te i inne możliwości są nadal badane, ale wraz z postępem łączności internetowej, sztucznej inteligencji, NLP i uczenia maszynowego staną się one bardziej powszechne.
Chwoo
Cześć,
Dziękuję za ten program.
Mam pytanie.
„bag_of_words” nie jest zdefiniowany. Nie rozumiem tego błędu.
Czy możesz mi powiedzieć, jak mogę rozwiązać ten błąd?
Dziękuję za ten program!! Miłego dnia
Sójka
Proszę dodać funkcję przed skorzystaniem z sekcji chatbot:
//////////////////////////////////////////////// /////////////////////////////
def bag_of_words(s, wyrazy):
bag = [0 dla _ in range(len(words))]
s_words = nltk.word_tokenize(s)
s_words = [stemmer.stem(word.lower()) dla słowa w s_words]
dla se w s_words:
dla i, w in enumerate(words):
jeśli w == se:
worek[i] = 1
return numpy.array(torba)
// To na pewno rozwiąże Twój problem. //
////////////////////////////////////////////////////////////////////////////// //////////////////////////
Udostępniam Ci cały kod, dzięki czemu uzyskasz jego jasny obraz.
///////////////////////////////////// //////////
importuj nltk
z nltk.stem.lancaster import LancasterStemmer
trzpień = LancasterŁon()
importuj numer
importuj tflearn
importuj przepływ tensorowy
importuj losowo
importuj json
import marynaty
z open(„intents.json”) jako plik:
dane = json.load(plik)
spróbuj:
z open("data.pickle", "rb") jako f:
słowa, etykiety, szkolenie, wyjście = pickle.load(f)
z wyjątkiem:
słowa = []
etykiety = []
dokumenty_x = []
dokumenty_y = []
do intencji w danych[„zamiar”]:
dla wzoru w intencji[„wzory”]:
wrds = nltk.word_tokenize(wzór)
word.extend(wrds)
docs_x.append(wrds)
docs_y.append(zamiar[„znacznik”])
if intent[„tag”] nie w etykietach:
etykiety.append(zamiar[„znacznik”)])
słowa = [rdzeń.rdzeń(w.dolny()) dla w w słowach jeśli w != „?”]
słowa = posortowane(lista(zestaw(słowa)))
etykiety = posortowane(etykiety)
szkolenie = []
wyjście = []
out_empty = [0 dla _ w zakresie (dł. (etykiety))]
dla x, doc w enumerate(docs_x):
torba = []
wrds = [stemmer.stem(w.lower()) for w w dokumencie]
dla w słownie:
jeśli w słownie:
torba.dołącz(1)
jeszcze:
torba.dołącz(0)
wiersz_wyj = puste_wyj[:]
wiersz_wyjściowy[etykiety.index(docs_y[x])] = 1
szkolenie.dołącz(torba)
wyjście.dołącz(wiersz_wyjścia)
szkolenie = numpy.array(szkolenie)
wyjście = numpy.array(wyjście)
z open("data.pickle", "wb") jako f:
pickle.dump((słowa, etykiety, trening, wyjście), f)
tensorflow.reset_default_graph()
net = tflearn.input_data(shape=[Brak, len(training[0])])
net = tflearn.full_connected(net, 8)
net = tflearn.full_connected(net, 8)
net = tflearn.fully_connected(net, len(output[0]), aktywacja=”softmax”)
net = tflearn.regresja(net)
model = tflearn.DNN(net)
spróbuj:
model.load("model.tflearn")
z wyjątkiem:
model.fit(trening, dane wyjściowe, n_epoka=1500, rozmiar_partia=8, show_metric=True)
model.save("model.tflearn")
def bag_of_words(s, wyrazy):
bag = [0 dla _ in range(len(words))]
s_words = nltk.word_tokenize(s)
s_words = [stemmer.stem(word.lower()) dla słowa w s_words]
dla se w s_words:
dla i, w in enumerate(words):
jeśli w == se:
worek[i] = 1
return numpy.array(torba)
def czat():
print("Zacznij rozmawiać z botem (wpisz quit, aby zatrzymać)!")
podczas gdy prawda:
inp = input(„Ty:”)
if inp.lower() == „zakończ”:
złamać
wyniki = model.predict([bag_of_words(inp, words)])
wyniki_indeks = numpy.argmax(wyniki)
tag = etykiety[indeks_wyników]
dla tg w danych[„zamiar”]:
if tg['tag'] == tag:
odpowiedzi = tg['odpowiedzi']
print(losowy.wybór(odpowiedzi))
czat()
////////////////////////////////////////////////// ///////////////
Dziękuję
Miłego kodowania!
Lu
Cześć,
Czy mógłbyś mi przybliżyć proces, który należy przeprowadzić w przypadku chęci stworzenia chatbota w pythonie, ale informacje pochodzą z ankiety w excelu. Dziękuję!