Spisu treści:

Asystent aktywowany głosem - MAX: 10 kroków
Asystent aktywowany głosem - MAX: 10 kroków

Wideo: Asystent aktywowany głosem - MAX: 10 kroków

Wideo: Asystent aktywowany głosem - MAX: 10 kroków
Wideo: Serce inteligentnego domu - Google Nest - Home Hub - Inteligentny dom - od czego zacząć smart home 2024, Lipiec
Anonim
Asystent aktywowany głosem – MAX
Asystent aktywowany głosem – MAX

Hej, w tym Instruktażu zamierzam porozmawiać o tym, jak zrobić chat-bota MAX (o nazwie siebie !!!)

Przy niektórych implementacjach możesz sprawić, że chatbot będzie sterowany głosowo lub za pomocą różnych programów, możesz zrobić go jako asystenta głosowego. Nie będę tutaj o tym mówić, ponieważ każdy może naprawdę łatwo przeprowadzić tę implementację.

Więc wszyscy proszę, wspierajcie mnie…….

Mój pierwszy Instruktaż !!!!!!!

Czuję się zdenerwowany tym, co się wydarzy …………….

Krok 1: Wiedza o konkursie

Wiedza o konkursie
Wiedza o konkursie
Wiedza o konkursie
Wiedza o konkursie

Cześć inżynierowie i projektanci……..

Ja sam, student informatyki, uwielbiam grać w gry i zawsze inspiruję się komputerami. Mówiąc krótko, uwielbiam wiedzieć, jak działają te wszystkie rzeczy, które są obecne. !!!) do wyszukiwania i uczenia się rzeczy.

Więc pewnego dnia pojawiłem się przed ekranem Instructables. Naprawdę bawiły mnie różne projekty z różnymi pomysłami w różnych aspektach. Od tego dnia śledzę to. świat.

VOICE ACTIVATED CHALLENGE to moja pierwsza platforma do pisania instrukcji.

Nagrody bardzo mnie bawiły (Tak !!! Za dużo……..).

Chciałbym również podzielić się swoją wiedzą z dziedziny komputerów i ich technologii z innymi o tym, jak różne rzeczy faktycznie działają.

W tej instrukcji pokazuję, jak zbudować własnego asystenta aktywowanego głosem.

Ponieważ jest to mój pierwszy Instruktaż, może być tak wiele błędów (chociaż myślę, że wszystkie zostały naprawione), więc wybacz to.

WIĘC…

Zacznijmy podróż………………

Krok 2: Skąd wiedziałem o rzeczach?

Skąd wiedziałem o rzeczach?
Skąd wiedziałem o rzeczach?
Skąd wiedziałem o rzeczach?
Skąd wiedziałem o rzeczach?
Skąd wiedziałem o rzeczach?
Skąd wiedziałem o rzeczach?

To będzie główne pytanie, przez które może przejść większość twoich umysłów………

Mam wielką pasję do sztucznej inteligencji [AI] z mojej szkoły, od tego czasu dużo szukałem, szukając zasobów do nauki i samodzielnego opracowania modelu.

Początkowo było to bardzo trudne (stan prawdziwy), ponieważ zrozumiałem, że był to bardzo obszerny temat, który wcale nie jest łatwy do opanowania.

Wyszukiwane książki obejmują:

  1. Sztuczna inteligencja Nowoczesne podejście
  2. Sztuczna. Inteligencja.w. XXI.wieku. II. Edycja
  3. Głęboka nauka

To są bardzo dobre książki (tak na pewno), ale wcale nie jest łatwo zrozumieć to, co napisano na ich temat. Potem trzymałem je z boku i szukałem zasobów, które nie dają krótkiego wyobrażenia o tym, co to naprawdę reprezentuje i sposoby dotarcia do tego.

Potem zainteresowałem się tym. Przez wakacje po szkole zacząłem się o tym głębiej uczyć.

W tym czasie uczyłem się też różnych języków programowania (C++, C, Python, Java….), co też jest bardzo interesujące.

Czytając więcej na ten temat zrozumiałem jedną Ważną Rzecz………………..

Języki programowania TO PODSTAWA KAŻDEGO PROCESU UCZENIA MASZYNOWEGO

Uczenie maszynowe to proces stosowania sztucznej inteligencji

Z dużym zrozumieniem języków programowania i różnych rzeczy, które programista może zrobić w zależności od tego, aby komputer zrobił dla nas wszystko.

Postanowiłem więc stworzyć dobrą bazę na językach, dzięki którym zrozumiałem pojęcia zawarte w książce, o której już wspomniałem

Ty też możesz to zrobić……

W sieci jest tak wiele stron internetowych, które swobodnie uczą języków programowania

Możesz więc surfować po Internecie, aby dowiedzieć się więcej na ten temat, jeśli chcesz………

Krok 3: Zacznijmy

Ja, zanim zacząłem pisać Instructable, pomyślałem, aby napisać coś, co można zrozumieć przez:

  1. Osoby, które mają doświadczenie z kodowaniem
  2. Osoby bez znajomości kodowania

Więc myślę, że zrobiłem to bez żadnych błędów (mam nadzieję).

Postanowiłem więc zbudować bota czatu, który może rozmawiać z użytkownikiem i odpowiadać zgodnie z naszą rozmową.

Program (zestaw instrukcji) nie może myśleć samodzielnie. Posiada bazę danych (miejsce, w którym przechowywane są dane) faktów i zasad, które są przeszukiwane w czasie rozmowy, aby dać najlepszą możliwą odpowiedź w związku z użytkownikiem.

Działa poprzez proces dopasowywania w zależności od wprowadzonych rzeczy, tylko w rzadkich przypadkach całe zdanie jest dopasowywane do pełnego zdania.

Krok 4: Jak to właściwie działa?

Krok 1:

MAX dowiaduje się, czy użytkownik podał puste dane wejściowe. Jeśli użytkownik podał dane wejściowe w taki sposób, do odpowiedzi pobiera fakt ze statycznej bazy danych.

Przepraszam ……

Zapomniałem powiedzięć,

Statyczna baza danych: Miejsce, w którym przechowywane są wbudowane odpowiedzi. Odpowiedzi takie jak:

1. Kiedy MAX nie rozumie, o czym mówi użytkownik.

2. Kiedy użytkownik się powtarza.

3. Na powitanie wypowiedzi.

4. Gdy użytkownik nic nie wpisuje i po prostu naciska Enter.

Słowo kluczowe: słowa o specjalnym znaczeniu.

Krok 2:

Istnieje kilka wbudowanych odpowiedzi, które MAX może łatwo i łatwo rozpoznać. Odnajduje obecność takiego zdania po zidentyfikowaniu danych wejściowych użytkownika i zapamiętuje powiązane słowo kluczowe.

Krok 3:

Jeśli nie zostanie znalezione żadne wbudowane zdanie, nawet po fragmentacji danego zdania, MAX wyszukuje określone słowo kluczowe w celu zdefiniowania kontekstu. Jeśli nie zostanie znaleziony żaden kontekst, następnym celem jest sprawienie, aby użytkownik bardziej świadomie rozmawiał na dany temat w określony sposób.

Krok 4:

Ze Statycznej Bazy Danych, o której już mówiliśmy, pobierze odpowiedź zależną od tego, o czym mówił użytkownik.

Krok 5:

JA jest jakas potrzeba zmiany slow, ze zrobi to sam (takie jak nawrócenie MOJEGO na WASZE itp.)

Krok 5: Zakodujmy …………

Używam Turbo C IDE 3.0, ponieważ jest to IDE [zintegrowane środowisko programistyczne]

Przed kodowaniem zobaczmy strukturę przykładowego pliku danych.

MAX rozpoznaje określone słowa kluczowe.

Jeśli te słowa kluczowe zostaną znalezione w danych wejściowych dostarczonych przez użytkownika, odpowiednia odpowiedź jest wybierana z pliku danych, wybierana i wyświetlana na ekranie.

Słowo kluczowe jest oddzielone w pliku danych od odpowiedzi tokenem @KWD@.

Token to najmniejsza część każdego aspektu programistycznego.

Ten token oznacza, że następna linia jest słowem kluczowym, a nie odpowiedzią.

@KWD@ WITAJ

CZEŚĆ JAK SIĘ MASZ

WITAM DRODZY !

NIC MI NIE JEST

JAK BYŁA TWOJA PRACA?

ILE TY MASZ LAT?

BĘDĘ

ZROBISZ TO. TEŻ W TO WIERZE…

CZY BĘDZIESZ MÓGŁ TO ZROBIĆ?

ZAUFAJ MI ?

TAK

JESTEŚ PEWNY ?

JAK MOŻESZ BYĆ TAK PEWNY?

NIE

WYDAJESZ SIĘ BARDZO pesymistyczny.

NIGDY NIE MÓW NIE…

NIGDY NIE MÓW NIGDY

NIGDY NIE BĄDŹ NIEuprzejmy

NIGDY NIE BĄDŹ AROGACYJNY !!!!

NIGDY NIE MÓW, ŻE NIE MOGĘ TEGO ZROBIĆ

NIGDY NIE BĄDŹ OPTYMISTYCZNY

KOMPUTER

WIEM JAK PRACOWAĆ NA KOMPUTERZE.

UŻYWASZ OBECNIE KOMPUTERA. PRAWIDŁOWY ?

Na przykład 'Hello' z powyższego słownika MAX da jedną z następujących odpowiedzi:

CZEŚĆ, JAK SIĘ CZEKASZ DROGI !

NIC MI NIE JEST

JAK BYŁA TWOJA PRACA?

ILE TY MASZ LAT?

Krok 6: Zajęcia

Gdy wszystko będzie jasne, zdefiniujmy teraz struktury danych, których będziemy używać.

Tworzymy dwie klasy:

progstr - służy do przechowywania informacji wejściowych użytkownika.

resp - Służy do przechowywania informacji o różnych odpowiedziach

program klasy {

publiczny:

znak użytkownika[MAX_USER_INPUT];

znak słowo kluczowe[30];

int klucz znaleziony;

int klucz nr;

int null;

// konstruktor

progstr() { keyno=-1; zerowa=0; znaleziony klucz=0;

}

}ip;

klasa lub

{

int tot_odp;

int ostatni_odp;

odpowiedzi w postaci znaków[MAX_RESP_NO][MAX_RESP_LEN];

słowo znakowe[MAX_KWD_LEN];

publiczny:

// konstruktor

odp.()

{

suma_odp=0;

ostatni_odp=-1;

}

int getcount()

{

zwróć ostatni_odp;

}

void addword(char str[MAX_KWD_LEN])

{

strcpy(słowo, str);

}

char * getword()

{

słowo zwrotne;

}

void adres(char str[MAX_RESP_LEN])

{

strcpy(odpowiedzi[++ostatni_odp], str);

}

// zdefiniowane później

void display_resp(int num);

void quit_display_resp(int num);

};

Patrząc na pierwszą klasę, Tablica znaków userrip służy do przechowywania zdania dostarczonego przez użytkownika.

Inne słowo kluczowe tablicy służy do przechowywania słowa kluczowego, jeśli istnieje, znalezionego w tym wejściu. Jeśli słowo kluczowe zostanie znalezione, ustawiamy int keyfound na 1, pozostaje ono 0, ponieważ jest inicjowane na 0 w Konstruktorze.

keyno przechowuje odpowiedni numer klucza odpowiedniego słowa kluczowego.

nullip wskazuje, czy użytkownik podał jakiekolwiek dane wejściowe Null, tj. po prostu naciska klawisz Enter, nie robiąc nic więcej.

Przejdźmy teraz do drugiej klasy, odpowiednio.

Pierwszy element danych, tot_resp, wskazuje liczbę wszystkich odpowiedzi dla danego słowa kluczowego.

Odpowiedzi są w rzeczywistości przechowywane w odpowiedziach[MAX_RESP_NO][MAX_RESP_LEN], a odpowiednie słowo kluczowe jest przechowywane w słowie tablicy.

Konstruktor: służy do inicjalizacji całkowitej liczby odpowiedzi na 0. Dlaczego last_resp jest inicjowane na -1, będzie jasne, gdy spojrzysz na funkcję add_resp.

int getcount():

Ta funkcja służy do zliczenia liczby odpowiedzi na dane słowo kluczowe.

void addword(char str[MAX_KWD_LEN]):

Służy do dodawania słowa kluczowego.

char * getword():

Używane do zwrócenia słowa kluczowego dla konkretnego obiektu klasy odp.

nieważny adres(…):

Służy do dodania odpowiedzi odpowiadającej danemu słowu kluczowemu.

void display_resp(int):

Służy do wyświetlania odpowiedzi dla użytkownika odpowiadającej danemu numerowi indeksu odpowiedzi. (w rzeczywistości robi więcej!).

void quit_display_resp(int):

Różnica między tą funkcją a powyższą funkcją polega na tym, że jest ona używana na końcu, gdy użytkownik rezygnuje. Tak więc nie zwraca monitu do użytkownika.

Krok 7: Funkcje

void initialize_global()

{

strcpy(wordin[0], "SĄ");

strcpy(wordout[0], "AM");

strcpy(wordin[1], "AM");

strcpy(wordout[1], "ARE");

strcpy(wordin[2], "BYŁO");

strcpy(wordout[2], "BYŁ");

strcpy(wordin[3], "BYŁ");

strcpy(wordout[3], "BYŁE");

strcpy(wordin[4], "TY");

strcpy(wordout[4], "JA");

strcpy(wordin[5], " I ");

strcpy(wordout[5], "TY");

strcpy(wordin[6], "TWÓJ");

strcpy(wordout[6], "MÓJ");

strcpy(wordin[7], "MÓJ");

strcpy(wordout[7], "TWÓJ");

strcpy(wordin[8], "I'VE");

strcpy(wordout[8], "TY");

strcpy(wordin[9], "TY");

strcpy(wordout[9], "MAM");

strcpy(wordin[10], "Ja jestem");

strcpy(wordout[10], "TY");

strcpy(wordin[11], "TY");

strcpy(wordout[11], "Ja jestem");

strcpy(wordin[12], "JA");

strcpy(wordout[12], "TY");

strcpy(wordin[13], "TY");

strcpy(wordout[13], "JA");

}

Napiszmy teraz funkcję wyświetlającą odpowiedzi użytkownikowi. Pierwsza instrukcja if w pętli for służy do celowego popełnienia błędu w pisowni, aby wyglądała bardziej ludzko, jak;-). Jeden znak jest losowo wybierany z powodu błędu pisania. Przypadki specjalne, takie jak New Line i Backspace, są rozpatrywane osobno. (Pomyśl dlaczego?). Teraz przedstawiam coś nowego. Znak specjalny - *. Znak * reprezentuje cały tekst znaleziony ZA zidentyfikowanym słowem kluczowym i przed jednym z następujących znaków interpunkcyjnych.

Weźmy na przykład pod uwagę dane wprowadzone przez użytkownika

AMIT > CZY MOGĘ JUTRO WYJŚĆ DO INDORE ?

MAX > CO JEŚLI NIE WYJDZIESZ DO INDORE JUTRO?

Podkreślona część nie jest przechowywana w słowniku, a jest pobierana z danych wejściowych użytkownika. W pliku MAX. Dat przechowujemy te informacje jako

CZY MOGĘ

CO JEŚLI NIE *

Gwiazdka (*) prosi program, aby po prostu skopiował to, co jest wpisane po słowie kluczowym (tutaj CAN I) w danych wejściowych użytkownika, tak jak jest. Mam nadzieję, że teraz funkcja * jako specjalne słowo kluczowe jest jasna. Rozważmy więc bardziej skomplikowany przypadek.

AMIT > CZY MOGĘ PRZEJŚĆ NA ZAKUPY ?

MAX > CO JEŚLI NIE IDZIESZ NA ZAKUPY?

Musimy też dokonać jakiejś transformacji. Kiedy myślimy o transformacji, zdanie dzieli się na 3 sekcje:

  • Tekst przed słowem transpozycji. (tutaj PRZEJDŹ DO ZAKUPY Z)
  • Słowo kluczowe transponowane. (tutaj, TWÓJ, zamiast MOJEGO)
  • Tekst po słowie kluczowym transpozycji. (tutaj ja?)

Krok 8: Sprawy mogą być rozwiązywane przez………

Krok 9: Wyszukiwanie słowa kluczowego we wpisie użytkownika

MAX_KEY wskazuje liczbę słów kluczowych w pliku DAT.

Tutaj po prostu szukamy, czy słowo kluczowe jest obecne w danych wejściowych użytkownika.

Krok 10: Wniosek

To wszystko ………

Zrobiłeś to !!!!!!!

Myślę, że wszyscy zrozumieli wszystko jasno……

Zalecana: