Autor Beitrag
FinnO
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1325
Erhaltene Danke: 117

Mac OSX
TypeScript (Webstorm), Kotlin, Clojure (IDEA)
BeitragVerfasst: Mi 04.02.09 22:11 
Virtual Secretary

Projektbeschreibung:

Virtual Secretary soll ein Programm werden, mit dem der User verbal interagiert. Das heißt, der User schreibt der virtuellen Sekretärin etwas in ein Edit-Fenster, und die Sekretärin führt seinen Befehl aus/ antwortet auf seine Fragen und "unterhält" sich mit ihm. Dazu gibt es mehrere Beispiele auf verschiedenen Websites. Besonders an Virtual Secretary werden interessante Funktionen wie Suche im Internet (per google) oder in der Windows-Hilfe sein. Virtual Secretary soll den Komfort der PC-Bedienung für den User erhöhen.

Sprachen:

Verwendet werden Delphi für Win32. Ich selbst benutze Turbo Delphi, solange es kompatibel ist, sollte es reichen.

Lizenz

sehr Wahrscheinlich Freeware

Vorraussichtliche Projektdauer:

ich gebe uns schon etwas Zeit, möchte aber gerne in unregelmäßigen, aber relativ kurzen Intervallen (1 Monat) alphas und betas herausgeben, damit man als User sehen kann, ob das Projekt noch lebt.

ToDo liste (Features

Features:
- Erkennung von Fragen und Aussagesätzen, reaktion
- Assoziation von Begriffen (Volkswagen -> Auto)
- Erkennung von Verben/Nomen/Adjektiven (warum ist "rast" ein Verb und "Rast" nicht?
- Erkennung von "logischen" Zusammenhängen (gut/schlecht, ja/nein)
- Selbstständige Erweiterung des Wortschatzes durch nachfragen/ erklären lassen (was ist ein(e) "Vase"?)
- Google Suche (eher leicht)
- Windows Hilfe
- Höflichkeit^^
- Datenbanken o.ä. anlegen (Wortassoziationen, Fragewörter, Verben)
- Deklinieren von Verben, Konjugieren von Nomen
- Unterhaltung nach Regeln der Deutschen Grammatik und Rechtschreibung
- Diverse Schwierigkeiten/ Ausnahmen der deutschen Sprache
- Kontext halte ich für sehr schwer.
- Satzzeichenfilterung
etc.

zeitlicher Ablauf

Wie oben schon zu sehen, gibt es eine Menge kniffliger Aufgaben zu bewältigen. Einige gehen recht schnell, heute habe ich schon ein bisschen an der Fragenerkennung gearbeitet, dass Programm kann nun Fragen anhand von Fragewörtern erkennen (Warum..., Was...). Aber Fragen können ja auch mit einem Verb beginnen (Hast du heute..., Gehst du nachher). Ich denke einige Aufgaben sind leicht zu bewältigen und an einigen kann man sich ganz schön die Zähne ausbeissen. Ich schlage daher ein langsames, gründliches Hochhangeln in der Sprache für Sinnvoll. Die Sekretärin ist selbsteverständlich objektorientiert aufgebaut und ich werde heute die bisherige "Answer"-Funktion noch Modulisiseren. Das heißt, man kann verschiedenen Sprachmodule durcheinander Programmieren. Ich schlage aber vor, mit der Fragenerkennung weiter zu machen und diese erstmal zum 1.0-reifen Zustand zu bringen, sodass das Programm wirklich JEDE Frage als solche erkennt. Danach kann man ja immernoch weitersehen.
Wie oben genannt möchte ich trotzdem regelmäßig alphas und betas veröffentlichen, einfach um einen Ansporn zu haben, sich ein Ziel zu setzen und diese Deadline auch einzuhalten.

Fähigkeiten der Teammitglieder:

Bei diesem Punkt möchte ich aufgrund der negativen Erfahrungen mit dem Physikprogramm gleich folgendes vorwegnehmen: Das Team wird maximal aus 3 Personen bestehen. Ich erwarte von den Mitgliedern einen gewissen Ehrgeiz, dass Programm durchzupushen. Es ist sicherlich kein Problem, wenn man mal eine Woche für ne Klausur lernen muss, aber im Großen und Ganzen möchte ich den Willen zum Programmieren sehen.
Da ich leider absoluter Datenbank-Noob bin, empfiehlt es sich, dass jemand dabei ist, der von Datenbanken Ahnung hat. Momentan werden die Wörter in einer .txt gespeichert, aber das halte ich für eher suboptimal.
Schön wären gute Deutschkentnisse, Rechtschreibung ist eher nicht so wild, entscheidend ist die Grammatik, da die Deutsche Sprache gewissermaßen analysiert werden muss, und für den Computer verständliche Regeln programmiert werden müssen.
Kommen wir zum nächsten Punkt: Delphi-Kenntnisse. Ich habe keine Lust, mit Leuten zu programmieren, denen man Basics erklären muss. Also etwas fortgeschrittene Kenntnisse währen super. Ich erwarte nicht, dass ihr alle Algorithmen der Welt selbst erfinden könnt, aber ich würde mir wünschen, dass sich nur Leute bewerben, die ein Programmierverständnis haben, die sich vorstellen können, wie sie das Ziel erreichen, wie der Lösungsweg aussehen muss. Außerdem sollte man in der Lage sein, sich Befehle, die man nicht kennt irgendwie selbst beizubringen.

Teamgröße:

wie gesagt max. 3 Personen

Prozess der Entscheidungsfindung:

Ich habe eine sehr konkrete Vorstellung von diesem Programm. Selbstverständlich bin ich für Vorschläge jederzeit offen, ich denke aber, in einem so kleinen Team kommt man recht schnell auf einen gemeinsamen Nenner. Ich behalte mir aber ein veto vor. Ich glaube mit vernünftigen Teammitgliedern sollte es keinen Streit geben.


Im Anhang
Im Anhang findet ihr eine von mir heute programmierte Version der Sekretärin. Sie kann bisher Fragen anhand eines eher kleinen Wortschatz von Fragewörtern erkennen, der in der beigelegten .txt abgespeichert ist. Selbstverständlich kann man der Datei noch Wörter anhängen.

Der Algorithmus ist sehr simpel.
Zuerst werden die Wörter isoliert und getrennt in einer Liste aufbewahrt.
Danach wird das erste Wort des Textes mit der "Datenbank" verglichen.

Beispielsatz:
Wie geht es dir?
-> isolation des ersten Wortes:
Wie

vergleich mit "Datenbank" -> Wie ist Fragewort.

Die Mehrdeutigkeit wird nicht berücksichtigt, da Wie am Anfang eines Satzes IMMER ein Fragewort ist.

Lösung: Der Satz ist eine Frage.
Einloggen, um Attachments anzusehen!


Zuletzt bearbeitet von FinnO am Do 05.02.09 21:25, insgesamt 2-mal bearbeitet
Regan
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Do 05.02.09 17:10 
user profile iconFinnO hat folgendes geschrieben Zum zitierten Posting springen:
Die Mehrdeutigkeit wird nicht berücksichtigt, da Wie am Anfang eines Satzes IMMER ein Fragewort ist.

Wie immer liegst du da falsch :wink: .
FinnO Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1325
Erhaltene Danke: 117

Mac OSX
TypeScript (Webstorm), Kotlin, Clojure (IDEA)
BeitragVerfasst: Do 05.02.09 19:55 
ookayy :oops:

Weil mir dieses Manko einfach zu peinlich war, habe ich jetzt eine Weitere Erkennung eingebaut ;). Das Programm guckt jetzt, ob das Wort nach dem Fragewort ein Verb ist. (Momentan nur "Wie geht es ihnen/dir", also Anrede in der 2. Person sg, nicht "Wie geht's?")

Beispiel

Wie geht es dir?

Isolation des ersten Wortes: wie

Wenn erstes Wort = Fragewort dann

Isolation des zweiten Wortes: geht

wenn es sich um ein regelmäßiges Verb handelt und der letzte Buchstabe ein t ist dann

Schneide das "t" ab. -> geh (Wortstamm)

Hänge an geh "en" an. -> gehen

Wenn gehen ein Verb ist, dann ist der Satz eine Frage.


(ich liege bestimmt in irgendwelchen Sonderfällen falsch, und die Erkennung von unregelmäßigen Wörtern ist noch nicht implementiert, aber ich arbeite ja auch dran.)
Einloggen, um Attachments anzusehen!


Zuletzt bearbeitet von FinnO am Do 05.02.09 21:06, insgesamt 1-mal bearbeitet
FinnO Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1325
Erhaltene Danke: 117

Mac OSX
TypeScript (Webstorm), Kotlin, Clojure (IDEA)
BeitragVerfasst: Do 05.02.09 20:59 
Ich lade die Neueste Version mal oben hoch. Das Programm kann jetzt auch Sätze vom folgenden Typ erkennen:

"geht es dir gut?
"rennst du gerade?"
"liebst du mich?"

und

"Gehen wir gemeinsam?"
"lieben sich eigentlich Bernd und Karla?"
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 05.02.09 21:35 
Moin!

Du kennst mich ja bereits vom Physik-Programm.Ich hätte sehr viel Interresse an dem Projekt und
würde gerne mitwirken.Ich habe mich selber schonmal in dem Bereich "Spracherkennung" versucht.Meine Theorie dabei war es den Text in einen "Sprach-Code" zu erzeugen der für den Computer verständlich sein sollte.

Das ganze funktioniert mit einem Parser ,der bestimmte Wörter in einer bestimmten Reihenfolge in Code verwandelt. Wörter wie "der", "die" oder "das" wurden ignoriert.
Beispiel:
Der Ball ist grün.
->
Ball := gruen;

oder

Wenn der IE schließt starte FF.
->
if close('IE.exe') then starte('FireFox.exe');

Das gesprochene wird dann gespeichert und kann zu einem späteren Zeitpunkt noch mal aufgerufen werden.

Also das war schonmal ein Teil meiner Ideen.

Kenntnisse:
fortgeschrittene Delphikenntnisse
gute Pythonkenntnisse
gute Ckenntnisse

Ich habe allgeimein sehr viel Zeit und kann täglich mich auf die Arbeit konzentrieren.
Meine Deutschkenntnisse sind sehr gut oder einfach "1".

Ich freue mich auf dein Antwort-

MfG , j.klugmann
FinnO Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1325
Erhaltene Danke: 117

Mac OSX
TypeScript (Webstorm), Kotlin, Clojure (IDEA)
BeitragVerfasst: Do 05.02.09 21:39 
Hi Jesse,

Ich nehme dein Angebot erstmal an, vorrausgesetzt, ich finde noch jemanden mit Datenbankkenntnissen (es sei denn du hast welche ;)). Vorher fehlt aber ein Themengebiet meiner Vorraussetzungen.
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 05.02.09 21:46 
Bin kein Datenbankkenner ,aber ich kann damit werkeln. ;)
Regan
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Fr 06.02.09 16:45 
user profile iconFinnO hat folgendes geschrieben Zum zitierten Posting springen:
ookayy :oops:

Weil mir dieses Manko einfach zu peinlich war, habe ich jetzt eine Weitere Erkennung eingebaut ;). Das Programm guckt jetzt, ob das Wort nach dem Fragewort ein Verb ist. (Momentan nur "Wie geht es ihnen/dir", also Anrede in der 2. Person sg, nicht "Wie geht's?")

Wie viele Beispiele werde ich dir noch geben? :wink: :lol: .
Wenn das Programm mal fertig ist, sag bescheid: Ich will das auf jeden Fall mal testen. Die deutsche Sprache ist so komplex, dass selbst Word keine richtige Implementierung hinbekommt. Mal sehen, wie ihr euch anstellt :wink: .
FinnO Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1325
Erhaltene Danke: 117

Mac OSX
TypeScript (Webstorm), Kotlin, Clojure (IDEA)
BeitragVerfasst: Fr 06.02.09 17:02 
ist doch schön wie viele Beispiele es gibt :D dann hab ich immer fleißig was zu tun :D

Wobei das Ziel der Anwendung ja nicht die Grammatikalische Auseinanderpflückung der deutschen Sprache, sondern ein funktionierende KI, die einem Die Arbeit am PC erleichtern soll ist.