Inhaltsverzeichnis:

Sprachaktivierter Assistent - MAX - Gunook
Sprachaktivierter Assistent - MAX - Gunook

Video: Sprachaktivierter Assistent - MAX - Gunook

Video: Sprachaktivierter Assistent - MAX - Gunook
Video: Hiking DDS238-2 мощное Zigbee реле с энергомониторингом для DIN рейки, интеграция в Home Assistant 2024, Juli
Anonim
Sprachaktivierter Assistent - MAX
Sprachaktivierter Assistent - MAX

Hey in diesem Instructable werde ich darüber sprechen, wie man einen Chat-Bot MAX macht (ich nannte mich !!!)

Mit etwas Implementierung können Sie diesen Chatbot sprachgesteuert machen oder mit der Verwendung verschiedener Software können Sie ihn als Sprachassistent verwenden. Ich werde hier nicht darüber sprechen, da jeder diese Implementierung wirklich leicht machen kann.

Also bitte alle unterstützen mich…….

Mein erstes Instructable !!!!!!!

Nervosität bei dem, was passieren wird …………….

Schritt 1: Wissen über den Wettbewerb

Wissen über den Wettbewerb
Wissen über den Wettbewerb
Wissen über den Wettbewerb
Wissen über den Wettbewerb

Hallo Ingenieure und Designer……..

Ich selbst, ein Informatik-Student, liebe es, Spiele zu spielen und mich immer von Computern inspirieren zu lassen. Wenn ich kurz rede, liebe ich es zu wissen, wie all diese Dinge funktionieren. !!!) zum Suchen und Erlernen der Dinge.

Also kam ich eines Tages vor den Bildschirm von Instructables. Es hat mich durch verschiedene Projekte mit einer Vielzahl von Ideen zu verschiedenen Aspekten wirklich amüsiert. Von diesem Tag an bleibe ich dabei Welt.

VOICE ACTIVATED CHALLENGE ist meine erste Plattform in Bezug auf das Schreiben eines Instructable.

Preise haben mich sehr amüsiert (Ja !!! Zu viel……..).

Außerdem möchte ich mein Wissen im Bereich Computer und seiner Technologie an andere weitergeben, wie verschiedene Dinge tatsächlich funktionieren.

In diesem Instructable zeige ich Ihnen, wie Sie Ihren eigenen sprachaktivierten Assistenten erstellen.

Da es mein erstes Instructable ist, kann es so viele Fehler geben (obwohl ich denke, dass alle diese behoben wurden), also verzeihen Sie das.

SO…

Lassen Sie uns die Reise beginnen………………

Schritt 2: Woher wusste ich von den Dingen?

Woher wusste ich von den Dingen?
Woher wusste ich von den Dingen?
Woher wusste ich von den Dingen?
Woher wusste ich von den Dingen?
Woher wusste ich von den Dingen?
Woher wusste ich von den Dingen?

Dies wird eine wichtige Frage sein, von der ich denke, dass die meisten Ihrer Gedanken durchgegangen sind………

Ich habe eine große Leidenschaft für Künstliche Intelligenz[KI] aus meiner Schulzeit, daher habe ich viel nach Ressourcen gesucht, um mich zu studieren und ein eigenes Modell zu entwickeln.

Anfangs war es sehr schwierig (wahrer Zustand), da ich verstanden habe, dass es sich um ein sehr umfangreiches Thema handelt, das überhaupt nicht einfach zu handhaben ist.

Zu den nachgeschlagenen Büchern gehören:

  1. Künstliche Intelligenz ein moderner Ansatz
  2. Künstliche. Intelligenz.in.der.21.. Jahrhundert.2nd. Edition
  3. Tiefes Lernen

Dies sind sehr gute Bücher (ja sicher), aber es ist überhaupt nicht leicht, die Dinge zu verstehen, die darüber geschrieben wurden es wirklich darstellen und Wege, um darauf zu kommen.

Dann habe ich mich dafür interessiert. Während der Ferien nach der Schule habe ich angefangen, mich tiefer damit zu beschäftigen.

Damals lernte ich auch diverse Programmiersprachen (C++, C, Python, Java….), was auch sehr interessant war.

Als ich mehr über das Thema las, verstand ich eine wichtige Sache………………..

Die Programmiersprachen IST DIE GRUNDLAGE FÜR JEDEN MASCHINEN LERNPROZESS

Machine Learning ist der Prozess der Anwendung von KI

Mit einem großen Verständnis für Programmiersprachen und verschiedene Dinge, die vom Programmierer abhängig gemacht werden können, um einen Computer dazu zu bringen, alles für uns zu tun.

Also beschloss ich, eine gute Basis für die Sprachen zu schaffen, die mir die Konzepte des bereits erwähnten Buches verständlich machte

Das kannst auch du machen……

Es gibt so viele Websites im Web, um Programmiersprachen frei zu unterrichten

So können Sie im Internet surfen, um mehr darüber zu erfahren, wenn Sie möchten………

Schritt 3: Lassen Sie uns beginnen

Bevor ich anfing, das Instructable zu schreiben, dachte ich daran, etwas zu schreiben, das verstanden wird von:

  1. Leute, die Erfahrung mit Codieren haben
  2. Menschen ohne Programmierkenntnisse

Also ich denke, ich habe die Sache (hoffentlich) ohne Fehler gemacht.

Also habe ich beschlossen, einen Chatbot zu bauen, der mit dem Benutzer sprechen kann und entsprechend unserem Gespräch antworten kann.

Das Programm (Befehlssatz) kann nicht selbstständig denken. Es verfügt über eine Datenbank (ein Ort, an dem Daten gespeichert wurden) mit Fakten und Regeln, die zum Zeitpunkt des Gesprächs durchsucht werden, um die bestmögliche Antwort in Verbindung mit dem Benutzer zu geben.

Es funktioniert nach dem Matching-Verfahren je nach Eingabe, nur in seltenen Fällen wird ein ganzer Satz zu einem kompletten Satz gematcht.

Schritt 4: Wie funktioniert es eigentlich?

Schritt 1:

MAX findet heraus, ob der Benutzer eine Null-Eingabe gemacht hat. Wenn der Benutzer eine solche Eingabe macht, nimmt er die Tatsache aus der statischen Datenbank, um zu reagieren.

Oh, das tut mir leid ……

Ich habe vergessen zu sagen,

Statische Datenbank: Der Ort, an dem integrierte Antworten gespeichert werden. Antworten wie:

1. Wenn MAX nicht versteht, wovon der Benutzer spricht.

2. Wenn sich der Benutzer wiederholt.

3. Für Grußaussagen.

4. Wenn der Benutzer nichts eingibt und einfach weiterhin die Eingabetaste drückt.

Schlüsselwort: Wörter mit besonderer Bedeutung.

Schritt 2:

Es gibt einige integrierte Antworten, die MAX leicht und einfach erkennen kann. Es findet das Vorhandensein eines solchen Satzes nach der Identifizierung der Benutzereingabe und merkt sich das zugehörige Schlüsselwort.

Schritt 3:

Wenn auch nach der Fragmentierung des gegebenen Satzes kein eingebauter Satz gefunden wird, sucht MAX nach dem spezifischen Schlüsselwort, um den Kontext zu definieren. Wenn kein Kontext gefunden wird, ist es das nächste Ziel, den Benutzer dazu zu bringen, gezielter über das Thema zu sprechen.

Schritt 4:

Aus der statischen Datenbank, über die wir bereits gesprochen haben, wird die Antwort abgerufen, die davon abhängt, worüber der Benutzer gesprochen hat.

Schritt 5:

Wenn es notwendig ist, die Wörter zu ändern, wird es dies selbst tun (wie Umwandlung von MEINEM in DEINER usw.).

Schritt 5: Lassen Sie uns codieren …………

Ich verwende Turbo C IDE 3.0, da dies die IDE ist [Integrated Developmental Environment]

Lassen Sie uns vor der Codierung die Struktur einer Beispieldatendatei sehen.

MAX erkennt bestimmte Schlüsselwörter.

Wenn diese Schlüsselwörter in der Eingabe des Benutzers gefunden werden, wird eine entsprechende Antwort aus der Datei ausgewählt und ausgewählt und auf dem Bildschirm angezeigt.

Ein Schlüsselwort wird in der Datendatei von den Antworten durch das @KWD@-Token getrennt.

Token ist ein kleinster Teil aller Programmieraspekte.

Dieses Token gibt an, dass die nächste Zeile ein Schlüsselwort und keine Antwort ist.

@KWD@ HALLO

HALLO, WIE GEHT ES DIR

HALLO, SCHATZ !

MIR GEHT'S GUT

WIE WAR ES AUF DER ARBEIT?

WIE ALT BIST DU?

ICH WERDE

SIE WERDEN DAS TUN. ICH GLAUBE ES AUCH…

WERDEN SIE DAS KÖNNEN?

WIRST DU MIR VERTRAUEN?

JAWOHL

BIST DU SICHER ?

WIE KANNST DU DIR SO SICHER SEIN ?

NEIN

DU scheinst sehr pessimistisch zu sein.

SAG NIEMALS NEIN…

SAG NIEMALS NIE

SEI NIEMALS unhöflich

SEI NIEMALS ARROGANT !!!!

SAGEN SIE NIEMALS, ICH KANN DAS NICHT MACHEN

SEI NIEMALS OPTIMISTISCH

RECHNER

ICH WEISS, WIE MAN AM COMPUTER ARBEITET.

SIE VERWENDEN DERZEIT EINEN COMPUTER. RECHTS ?

Zum Beispiel 'Hallo' aus dem obigen Wörterbuch gibt MAX eine der folgenden Antworten:

HI, WIE GEHT'S HALLO LIEBE!

MIR GEHT'S GUT

WIE WAR ES AUF DER ARBEIT?

WIE ALT BIST DU?

Schritt 6: Klassen

Sobald dies klar ist, lassen Sie uns nun die Datenstrukturen definieren, die wir verwenden werden.

Wir erstellen zwei Klassen:

progstr - Dies wird verwendet, um die eingabebezogenen Informationen des Benutzers zu speichern.

resp - Hier werden die Informationen zu den verschiedenen Antworten gespeichert

Klasse progstr{

öffentlich:

char userip[MAX_USER_INPUT];

Schlüsselwort char[30];

int-Schlüssel gefunden;

int keyno;

int nullip;

// Konstrukteur

progstr() { keyno=-1; nullip=0; Schlüsselfund=0;

}

}ip;

Klasse bzw

{

int tot_resp;

int last_resp;

Zeichenantworten[MAX_RESP_NO][MAX_RESP_LEN];

Zeichenwort[MAX_KWD_LEN];

öffentlich:

// Konstrukteur

bzw()

{

tot_resp=0;

last_resp=-1;

}

int getcount()

{

letzte_resp zurückgeben;

}

void addword(char str[MAX_KWD_LEN])

{

strcpy(Wort, str);

}

char * getword()

{

Rückgabewort;

}

void address(char str[MAX_RESP_LEN])

{

strcpy(Antworten[++letzte_Antwort], str);

}

// später definiert

void display_resp(int num);

void quit_display_resp(int num);

};

Blick auf die erste Klasse, Das Zeichenarray userip wird verwendet, um den vom Benutzer bereitgestellten Satz zu speichern.

Ein weiteres Array-Schlüsselwort wird verwendet, um das Schlüsselwort, falls vorhanden, in dieser Eingabe zu speichern. Wenn ein Schlüsselwort gefunden wird, machen wir int keyfound auf 1, sonst bleibt es 0, da es im Konstruktor auf 0 initialisiert wird.

keyno speichert die entsprechende Schlüsselnummer des entsprechenden Schlüsselworts.

nullip zeigt an, ob der Benutzer eine Null-Eingabe gemacht hat, dh er drückt nur die Eingabetaste, ohne etwas anderes zu tun.

Kommen wir nun zur zweiten Klasse bzw.

Das erste Datenelement tot_resp gibt die Gesamtzahl der Antworten für ein bestimmtes Schlüsselwort an.

Die Antworten werden tatsächlich in Replys[MAX_RESP_NO][MAX_RESP_LEN] gespeichert und das entsprechende Schlüsselwort wird im Array-Wort gespeichert.

Konstruktor: Dies wird verwendet, um die Gesamtzahl der Antworten auf 0 zu initialisieren. Warum last_resp auf -1 initialisiert wird, wird klar, wenn Sie sich die Funktion add_resp ansehen.

int getcount():

Diese Funktion wird verwendet, um zu zählen, wie viele Antworten für ein bestimmtes Schlüsselwort vorhanden sind.

void addword(char str[MAX_KWD_LEN]):

Dies wird verwendet, um ein Schlüsselwort hinzuzufügen.

char * getword():

Wird verwendet, um das Schlüsselwort für ein bestimmtes Objekt der Klasse bzw.

ungültige Adresse (…):

Dies wird verwendet, um eine Antwort hinzuzufügen, die einem bestimmten Schlüsselwort entspricht.

void display_resp(int):

Dies wird verwendet, um dem Benutzer die Antwort anzuzeigen, die einer bestimmten Indexnummer für die Antworten entspricht. (eigentlich tut es mehr als das!).

void quit_display_resp(int):

Der Unterschied zwischen dieser Funktion und der obigen Funktion besteht darin, dass sie am Ende verwendet wird, wenn der Benutzer das Programm verlässt. Daher wird die Eingabeaufforderung nicht an den Benutzer zurückgegeben.

Schritt 7: Funktionen

void initialize_global()

{

strcpy(wordin[0], "SIND");

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

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

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

strcpy(wordin[2], "WER");

strcpy(wordout[2], "WAS");

strcpy(wordin[3], "WAS");

strcpy(wordout[3], "WER");

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

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

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

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

strcpy(wordin[6], "IHR");

strcpy(wordout[6], "MEIN");

strcpy(wordin[7], "MEIN");

strcpy(wordout[7], "IHR");

strcpy(wordin[8], "Ich habe");

strcpy(wordout[8], "DU HAST");

strcpy(wordin[9], "DU HAST");

strcpy(wordout[9], "Ich habe");

strcpy(wordin[10], "Ich bin");

strcpy(wordout[10], "DU BIST");

strcpy(wordin[11], "DU BIST");

strcpy(wordout[11], "Ich bin");

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

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

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

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

}

Lassen Sie uns nun eine Funktion zum Anzeigen von Antworten für den Benutzer schreiben. Die erste if-Anweisung in der for-Schleife wird verwendet, um einen absichtlichen Tippfehler zu machen, um sie menschlicher erscheinen zu lassen;-). Ein Zeichen wird zufällig für Tippfehler ausgewählt. Sonderfälle wie New Line und Backspace werden gesondert betrachtet. (Denken Sie warum?). Jetzt stelle ich etwas Neues vor. Ein Sonderzeichen - *. Char * steht für den gesamten Text, der NACH dem identifizierten Schlüsselwort und vor einem der folgenden Satzzeichen gefunden wurde.

Betrachten Sie zum Beispiel die Benutzereingaben

AMIT > KANN ICH MORGEN NACH INDORE GEHEN ?

MAX > WAS IST, WENN SIE MORGEN NICHT NACH INDORE GEHEN?

Der unterstrichene Teil wird nicht im Wörterbuch gespeichert, sondern wird der Benutzereingabe entnommen. In der Datei MAX. Dat speichern wir diese Informationen als

KANN ICH

WAS, WENN SIE NICHT *

Stern (*) fordert das Programm auf, das, was nach dem Schlüsselwort (hier CAN I) in die Benutzereingabe geschrieben wird, einfach so zu kopieren, wie es ist. Ich hoffe, dass jetzt die Funktion von * als spezielles Schlüsselwort klar ist. Betrachten wir also einen komplizierteren Fall.

AMIT > KANN ICH ZUM EINKAUFEN GEHEN ?

MAX > WAS IST, WENN SIE NICHT ZUM EINKAUFEN GEHEN?

Wir müssen auch eine Transformation durchführen. Wenn wir an Transformation denken, wird der Satz in die folgenden 3 Abschnitte unterteilt:

  • Text vor dem Transpositionswort. (hier GEHEN SIE ZUM EINKAUFEN MIT)
  • Das Schlüsselwort Transposed. (hier, IHR, anstelle von MEIN)
  • Text nach Transpositionsschlüsselwort. (hier, ich?)

Schritt 8: Die Fälle können angegangen werden von………

Schritt 9: Suche nach einem Schlüsselwort in der Benutzereingabe

MAX_KEY gibt die Anzahl der Schlüsselwörter in der DAT-Datei an.

Wir suchen hier einfach, ob das Schlüsselwort in der Benutzereingabe vorhanden ist.

Schritt 10: Fazit

Das ist alles ………

Du hast es getan !!!!!!!

Ich denke, jeder hat die Dinge klar verstanden……

Empfohlen: