Einzelnen Beitrag anzeigen

InitializationError

Registriert seit: 25. Nov 2011
12 Beiträge
 
#1

Codename ZARA: Sprachassistent

  Alt 9. Mär 2012, 17:08
Guten Tag liebe Progger

Also ich habe für ein Schulprojekt einen Sprachassistenten geschrieben.
Der funktioniert auch soweit ganz okay, aber der Erkennungsalgorithmus ist nicht 100% sicher.

Ich wollte einfach mal fragen ob hier im Forum jemand lust hätte gemeinsam mit mir einen kleveren Algorithmus auszudenken.

Ich beschreibe mal was ich bisher gemacht habe.

Mein Programm besitzt zwei WISSENSBASEN. Die eine beinhaltet Strings der möglichen Fragestellung (z.B. wer bist du kannst du mir sagen wie heißt). <-- JA genau so, ich erkläre gleich warum.
Und die zweite Wissensbasis beinhaltet die möglichen Antworten die das Programm zurückliefert.

So nun wird ein String eingegeben und ausgewertet. Das Problem hier ist, die UNNÖTIGEN LEERZEICHEN. Diese werden am Anfang/Ende und zwischen den Wörtern gesucht und gelöscht, sodass maximal nur ein Leerzeichen übrig bleibt (zwischen den Wörtern). Als nächstes wird diese Stringkette in einzelne Strings zerteilt (einzelne Wörter) und in je ein Array zwischengespeichert.

Nun greift sich das Programm alle einzelne Wörter und geht die erste Wissensbasis durch. (Anmerkung: Beide Wissensbasen befinden sich in einer einzelnen Listbox.) Es wird dann eine TREFFERQUOTE berechnet. Damit wird die Zeile in der Listbox mit der höchsten Trefferquote ermittelt. Je nach dem in welcher Zeile die höchste Trefferquote war, greift sich das Programm aus der zweiten Wissensbasis den String in der gleichen Zeile und liefert eine Antwort.

Dieser Algorithmus ist wie gesagt nicht 100%ig sicher, da in den Zeilen der ersten Wissensbasis sich einige Wörter wiederholen und bei einer falschen oder unerwarteten Fragestellung liefert das Programm vielleicht eine falsche Antwort.

LANGE REDE, KURZER SINN. Ich würde mich über eure Meinung bzw. Ideen freuen

Das ganze ist eine Art SIRI nur für Windows

Hier das ganze noch einmal etwas anders:

Eingabe ("_" sollen Leerzeichen darstellen):

"___Wer_____bist_du" --Korrektur zu--> "Wer_bist_du"

Aufteilung in Arrays (alle Zeichen klein geschrieben):

1.wer
2.bist
3.du

Vergleich mit der ersten Wissensbasis (zwei Bsp. Zeilen):

1.wer bist du kannst mir sagen wie heißt
2.wer ist dein erfinder programmierer schöpfer

Ermittlung der Trefferquote:

Für Zeile 1. ---> 3
Für Zeile 2. ---> 1

Auslesen des Strings aus der 2. Wissensbasis, aus der gleichen Zeile wo in 1. Wissensbasis die höchste Trefferquote war:

1.Mein Name ist Zara.
2.Mein Erfinder ist Initialization Error!

Ausgabe:

Mein Name ist Zara.

Geändert von InitializationError ( 9. Mär 2012 um 17:25 Uhr)
  Mit Zitat antworten Zitat