AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Codename ZARA: Sprachassistent
Thema durchsuchen
Ansicht
Themen-Optionen

Codename ZARA: Sprachassistent

Ein Thema von InitializationError · begonnen am 9. Mär 2012 · letzter Beitrag vom 4. Apr 2012
Antwort Antwort
Seite 1 von 2  1 2      
InitializationError

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

Codename ZARA: Sprachassistent

  Alt 9. Mär 2012, 18: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 18:25 Uhr)
  Mit Zitat antworten Zitat
InitializationError

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

AW: Codename ZARA: Sprachassistent

  Alt 9. Mär 2012, 18:48
Hier ist nochmal die Zara im Anhang!!

Und das sind die möglichen Anfragen (diese lassen sich sehr schnell erweitern):

1. Wer bist du?
2. Wer hat dich erschaffen?
3. Wie geht es dir Heute?
4. Liebst du mich? ⁄ Willst du mich heiraten?
5. Was kannst du so?
6. Hallo (Hi ect.)
7. Du bist dumm Zara
8. Was bedeutet Zara?
9. Ich bin dein Erfinder.
10. Weißt du wer ich bin?
11. Aus was bestehst du?
12. Du nervst.
13. Sage mir die lokale IP-Adresse.

WICHTIG: Bei der Eingabe keine Sonderzeichen wie (?!. ect) verwenden!

Wer bist du? <--- FALSCH
Wer bist du <--- RICHTIG


PS: Die Eingabe muss nicht genau so sein! Es ist so programmiert, dass man die Fragestellung bisschen variieren kann!
Angehängte Dateien
Dateityp: zip Zara.zip (2,56 MB, 9x aufgerufen)

Geändert von InitializationError ( 9. Mär 2012 um 18:50 Uhr)
  Mit Zitat antworten Zitat
Gustav.R
(Gast)

n/a Beiträge
 
#3

AW: Codename ZARA: Sprachassistent

  Alt 9. Mär 2012, 19:22
Kennst Du Eliza?

http://home.ph-freiburg.de/deisslerf...at_I-02-03.htm

Grüß' sie von mir

GG
  Mit Zitat antworten Zitat
InitializationError

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

AW: Codename ZARA: Sprachassistent

  Alt 9. Mär 2012, 19:35
Sry sagt mir nichts und die EXE(n) lassen sich bei mir nicht starten hab ein 64Bit System!

Was genau wolltest du mir damit sagen/zeigen?!
  Mit Zitat antworten Zitat
Gustav.R
(Gast)

n/a Beiträge
 
#5

AW: Codename ZARA: Sprachassistent

  Alt 9. Mär 2012, 20:05
Eliza ist vermutlich die Urgroßmutter von ZARA, auf der verlinkten Seite ist eine ZIP-Datei mit Pascal-Quelltext, nicht gesehen?

http://de.wikipedia.org/wiki/ELIZA

GG
  Mit Zitat antworten Zitat
InitializationError

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

AW: Codename ZARA: Sprachassistent

  Alt 9. Mär 2012, 20:45
Der Quelltext scheint ziemlich komplex zu sein, ich sehe da leider nicht durch
Aber ich bräuchte jetzt nicht einen fertigen Quelltext sondern einfach in Textform wie das Programm ablaufen sollte um den Erkennungsalgorithmus zu verbessern.

Selber programmieren macht mehr spaß. Habe leider keine andere Idee für einen Erkennungsalgorithmus.
Man könnte auch mit Zuständen arbeiten, aber das würde Extrem aufwendig werden. Und man könnte die Wissensbasis nicht mehr leicht erweitern :-/
  Mit Zitat antworten Zitat
newmusicslamer

Registriert seit: 27. Feb 2012
29 Beiträge
 
Delphi 7 Personal
 
#7

AW: Codename ZARA: Sprachassistent

  Alt 9. Mär 2012, 20:55
Ich arbeite gerade an einem gleichen Programm.
Du kriegst die reine Antwortprogrammierung über ein Editfeld gut hin (also der Benutzer schreibt frage rein antwort über label)

Der Code sieht so aus:
Code:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if ContainsText2('wie', Edit1.Text) and ContainsText2('geht', Edit1.Text) and
    ContainsText2('dir', Edit1.Text) then label1.Caption := 'Ganz Gut so weit und dir?' ;
end;
Das waäre ein Bsp. für die Frage wie es dem Programm gehe, dabei erkennt er die Wörter 'wie', 'geht', und 'dir' im editfeld (egal ob du was dazwischen schreibst) und änder die Caption des Labels!

Ich hoffe ich konnte dir helfen!
newmusicslamer
Delphi for the win!
  Mit Zitat antworten Zitat
Gustav.R
(Gast)

n/a Beiträge
 
#8

AW: Codename ZARA: Sprachassistent

  Alt 9. Mär 2012, 21:26
Um die Eingabe etwas besser aufzubereiten: StringReplace und Trim.

#32#32 durch #32 ersetzen (doppelte Leerzeichen weg)
Satzzeichen (.!?,#9) usw. durch '' (nix) ersetzen

Mit Trim führende/abschließende Leerzeichen weg.

Dann funktioniert auch die Frage " Wer bist, Du?"

Ein Parser, der dt. Sätze richtig zerpfückt und dann auch noch halbwegs versteht, dürfte sich auch als Doktorarbeit sehr gut machen.

Toi, toi, toi!

GG
  Mit Zitat antworten Zitat
InitializationError

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

AW: Codename ZARA: Sprachassistent

  Alt 9. Mär 2012, 21:50
@newmusicslamer:
Deine Variante ist verständlich, müsste man aber für jede neue Frage immer wieder aufschreiben. Sonst gut.

Ich möchte einen Algorithmus so entwickeln das man die Wissensbasis schnell erweitern kann.

@Gustav.R:
Daran habe ich auch schon gedacht also das man die Sonderzeichen filtert. Kam nur noch nicht dazu das Problem umzusetzen.

Mal eine andere Frage. Hat jemand eine Idee wie man Substantive usw. realisieren könnte.

Also wenn z.B. ich "Wie GEhT es DIr zaRA?" eingebe, dass mir das Programm das korregiert in "Wie geht es dir Zara?"
Also bisschen Schnickschnack
  Mit Zitat antworten Zitat
Gustav.R
(Gast)

n/a Beiträge
 
#10

AW: Codename ZARA: Sprachassistent

  Alt 9. Mär 2012, 23:31
Korregiert oder korrigiert

Und ein "Also bisschen Schnickschnack" ist das vermutlich nur Deiner Meinung nach?

Wie soll der Parser denn zuverlässig ein Substantiv erkennen? Geht wohl - ohne eine KI mit extrem hoher Wort-/Syntax-/Semantikliste - nur über korrekte Großschreibung des Anfangsbuchstabens?

Überlege Dir doch mal selbst, woran DU in den beiden Sätzen das Substantiv erkennst:

Grün ist die Heide
Die Heide ist grün

Sind doch nur vier Wörter...

Laß diese beiden Sätze doch mal auf die Rechtschreibprüfung/Grammatikprüfung von LibreOffice oder MSOffice los.
Und dahinter stecken xtausend Stunden Entwicklungszeit...

GG
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz