Seite 4 von 8

Verfasst: 06.04.2006 01:20
von stbi
nur ist die Ikea-Anna ein wenig betriebsblind, die kennt nicht mal "42", was sie laut GermanAIML-File kennen könnte:

Code: Alles auswählen

<category>
<pattern>42</pattern>
<template>Die Frage war: Was ist der Sinn des Lebens?</template>
</category>
und ansonsten ist sie auch arg phantasielos, typisch deutsch. Hm, bringt mich auf die Idee eines Merkel-Bots ... :mrgreen:

Verfasst: 07.04.2006 08:52
von Karl
Die Elisas, Annas und Alices sind ja keine Übersetzungsprogramme, sondern Agenten. Wir haben uns als Unternehmen auch schon gefragt, ob es sinnvoll ist, solche Personal Agents auf der Webseite zu platzieren. Nach meinem Verständnis suchen die aber wohl nur nach bestimmten Schlüsselwörtern innerhalb einer Textsequenz. Darüber hinaus sind die mit AI-Technologie ausgestattet.

Einen Wörterbuchparser zu schreiben, der Texte halbwegs sinnvoll übersetzt - dat ist schon nicht wenig. Vorher würde ich mich erstmal dringend mit den sogenannten Chomsky-Grammatiken beschäftigen, um mal einen Eindruck zu gewinnen, was das für eine Aufgabe ist.

Gruß Karl

Verfasst: 07.04.2006 09:54
von Xaby
:o Naja, ich will gar keinen Übersetzer machen. Da gabs vor fünf Jahren oder sogar vor zehn Jahren schon gute. Also ich hatte mal einen auf meinem 80486, der war auf CD und war weder von Ponds noch von Langenscheid. Aber der konnte sogar:

Das Blatt vom Baum ... und das Blatt aus dem Block ... unterscheiden

Hier und da hatte er zwar eine Ausdrucksweise wie einige Mitmenschen, was die Artikel an ging, aber der war schon gut. Und da seit dem einige Zeit vergangen ist ...

Naja, ich glaube einen guten Übersetzer hat zu mindest das Millitär.

Aber den Source von Alice werd ich mir noch nicht ansehen, will da an die Sache unbeeinflusst ran gehen. Hab mir auch schon ne Fibel von meiner Schwester besorgt.

/:->

Verfasst: 12.04.2006 21:12
von Xaby
:mrgreen: :allright:

Mensch, schon drei Stunden vergangen und noch keiner hat geschrieben:

Hier, ische hab's schon lange auf meinem PC fertig, aber ich habs keinem gezeigt, weil ich dachte, das interessiert eh keinen /:->

:? Also mit der Videoanalyse hab ich schon angefangen
:lol: Sprachausgabe gibts ja schon
:D Und besser als die http://www.yellostrom.de EVE wird es bestimmt :roll:

8) Gebt doch mal ein paar nette Hinweise, Vorschläge ...
Oder sollte der Thread lieber in den LaberBereich verlagert werden?

Verfasst: 12.04.2006 23:52
von Laurin
Ich nehme mal an, das, was du im ersten Thread geschrieben hast, gilt noch?

Du willst also was proggen, um Wörtern automatisch einem Satzglied zuzuordnen?
Da hätte ich mehrere Überlegungen:

1.
So wie du es ursprünglich gedacht hast, jedes bekannte Wort in eine Datenbank zu speichern und dort mit einem Satzglied zu verknüpfen.
Möglich wären da mehrere Tabellen a la:

Code: Alles auswählen

Structure Satzglied_Struct
  Wort.s
  ; Hier das Wort rein, z.B. "Baum"
  Satzglied.l
  ; 0 = unbekannt (für alle Fälle), 1 = Subjekt, 2 = Prädikat usw.
EndStructure

NewList Satzglied.Satzglied_Struct()

usw...
Pro
- sehr einfach zu proggen (ist ja nur die Datenbank durchsuchen)

Contra
- riesige Wortdatenbank wird benötigt
- 50% Erkennung des Wortes (viele Wörte gibts können verschiedene Satzglieder sein)

2.
Du schlüsselst den Satz anhand grammatischer Regeln auf. z.B. leitet ein "dass" immer einen Nebensatz ein und folgt immer nach einem Komma oder Punkt (wenn der Nebensatz dem Hauptsatz vorangestellt ist).

Pro
- nur eine kleine Wortdatenbank wird benötigt (wo zb "dass" drin steht)

Contra
- grammatische Regeln sind nicht unbedingt leicht einem Computer beizubringen
- wenn ein Satz nicht den gramm. Regeln folgt, hats dein Programm echt schwer (zb "Was machen wir nun?" <-> "Was nun?" Erstere Satz folgt den Regeln, zweiterer ist eine Sonderkonstruktion, sogenannte Ellipse.)

3.
Ein Mischmasch aus 1. & 2.

Pro
- 99% Erkennung

Contra
- hoher Aufwand beim Proggen

Hm, irgendwie hab ich das Gefühl, das ich vom Thema abgewichen bin.

Viel Spaß beim Proggen ^^

Verfasst: 13.04.2006 00:12
von Froggerprogger
@Xaby
Ich würde dir zu einem Informatik-Studium raten. Neben vielen wichtigen Grundlagen und sehr interessanten und hilfreichen Konzepten und Denkweisen kann man da später je nach Uni z.B. in Richtung wissensbasierte Systeme/KIs gehen. Dabei geht es dann, wie Karl auch schon schrieb, stark um Aussagen-/Prädikatenlogik, Grammatiken, etc.

Du schriebst vorhin, dass du nicht beeinflusst werden willst von vorhandenen Lösungsansätzen. Meine Meinung ist dazu (mittlerweile), dass das Blödsinn ist. Wenn du ein Freigeist bist, dann wirst du nicht von vorhandenen Lösungsansätzen in falsche Richtungen geleitet, sondern kannst bei deren Analyse stattdessen die Problemstellungen, vor denen die anderen Programmierer standen, erkennen und deine eigenen ggf. völlig andersartigen Ansätze konkretisieren.

Das Projekt, bzw. die Projektideen, die du hier postest, sind einfach extrem komplex und zwar sowohl vom Programmieraufwand sehr umfangreich (wobei es hier ebenfalls sehr hilfreich ist, Vorgehensweisen zu erlernen, um komplexe Software richtig schrittweise anzugehen und umzusetzen), als auch von der Problemstellung her selbst (du versucht, die rein syntaktische Ebene zu verlassen und relativ weit in die semantische Ebene vorzudringen - da ist man schnell am Rande der Forschung).

Naja, genug als Wort zum Sonntag. Wollte dich nur zu einem Studium motivieren, da ich mal tippe, dass du noch relativ jung bist.

Gut's nächtle!

So, dank meines überragenden Genis ...

Verfasst: 17.05.2006 10:32
von Xaby
welches ich bei mir im Keller in einem Käfig halte und ab und zu mal füttere ... :?

Ist mir voll/folgender Gedanke gekommen ...

Naja, Bilder sagen mehr als Worte, deshalb hier mein CODE.
Dürfte auf PB 4.x und PB 3.9x funktionieren.

Stellt euch einen Satz vor:
Satz.s="Hans geht nach Hause."

WortZahl=CountString(Satz, " ")

Dim Feld.s(WortZahl)

For x=1 to WortZahl
Feld(i) = StringField(Satz,i," ")

...

Cool was :roll: Und nun hab ich schon folgendes:
jedes Wort einzeln und durch den Index weiß ich an welcher Stelle es
steht.
Nun kann ich mit meinem folgenden Code (der ist noch nicht cool genug, aber zeigt schon, was ich vor habe, bzw. wobei ihr mir helfen könnt)
Jedes Wort einzeln analysieren.

Code: Alles auswählen

;{- Information :: Für PB V4.x und PB 3.94
; Autor : Folker Linstedt
; Inhalt: Wort-Analyse
; Beginn: 17.05.2006
; Stand : 17.05.2006
;}/

;{- Deklaration
Eingabe.s ; Text-Eingabe

Ausnahme.b; Boolean für Ausnahmen

; Modale Verben, können mit Zusatzwerben benutzt werden:
; Ausnahmen: Verben mit Umlauten: dürfen, können, müssen
;             weitere : sollen, wollen

; Andere Ausnahmen: Laufen, saufen, ... (Die dummen Umlaute!) Aber ebm nicht kaufen

; Ausnahmen ohne Regel: sein, haben

Dim Worte.s(8) ; Stamm, Ich, Du, Er, Sie, Es, Wir, Ihr, Sie
Dim PersPron.s(8); PersonalPronomen

PersPron(0)="Stamm"
PersPron(1)="ich"
PersPron(2)="du "
PersPron(3)="er "
PersPron(4)="sie"
PersPron(5)="es "
PersPron(6)="wir"
PersPron(7)="ihr"
PersPron(8)="sie"

;}/

OpenConsole()
PrintN(":: WortDingli Simple V.0.1, (c) 2006 by Folker Linstedt")
PrintN("::")
PrintN(":: Bitte geben Sie ein Tu(n)-Wort in seiner Grundform in der Gegenwartsform ... ::")
PrintN(":: ... bzw. ein Verb im Infinitiv im PrAesens ein                               ::")
PrintN("")
Print("Eingabe: "): Eingabe=Input() ; Keine weitere Überprüfung
;PrintN(""); für PB 3.94 notwendig, da Input nicht allein in die Nächste Zeile springt
PrintN("")

Ausnahme=0; Ausnahmen müssten in einer Datenbank aufgenommen werden


; Folgenden 3 Zeilen sollen aus Umgangssprache Hochdeutsch mach'n
If Mid(Eingabe,Len(Eingabe)-1,1)<>"e"
  Eingabe=Left(Eingabe,Len(Eingabe)-1)+"en"
EndIf

If Eingabe="sein"
  Worte(1)="bin"
  Worte(2)="bist"
  Worte(3)="ist"
  Worte(6)="sind"
  Worte(7)="seit"
  Ausnahme=1
EndIf
If Eingabe="haben"
  Worte(1)="habe"
  Worte(2)="hast"; Statt "habst"
  Worte(3)="hat"; Statt "habt"
  Worte(6)="haben"
  Worte(7)="habt"
  Ausnahme=1
EndIf

If Eingabe="sollen" ; Ausnahmen mit Umlauten sind irgendwie umständlicher in der Console
  Worte(0)=Left(Eingabe,Len(Eingabe)-2); Stamm für Mehrzahl
  Worte(1)="soll"; Stamm ... bei dürfen -> darf, bei müssen -> muss, bei wollen -> will
  Worte(2)=Worte(1)+"st"
  ; -> bei musst fällt ein "s" weg, weil drei auf einander folgen, und es kein
  ;  zusammengesetztes Substantiv ist wie bei Schlosssickergrube, Schifffahrt
  Worte(3)=Worte(1); Wie "ich"
  Worte(6)=Eingabe
  Worte(7)=Worte(0)+"t" ; diesmal nicht wie "Er"
  Ausnahme=1
EndIf
  

If Ausnahme=0  
  Worte(0)=Left(Eingabe,Len(Eingabe)-2); Macht aus "gehen" -> "geh"
  
  Worte(1)=Worte(0)+"e"
  Worte(2)=Worte(0)+"st"
  Worte(3)=Worte(0)+"t"
  
  Worte(6)=Worte(0)+"en"
  Worte(7)=Worte(0)+"t" ; meist wie er, aber ebm nicht immer >> Ausnahmen
EndIf

Worte(4)=Worte(3) ; "Sie" ist wie "Er"
Worte(5)=Worte(3) ; "Es"  ist wie "Er"
Worte(8)=Worte(6) ; "Sie" ist wie "wir"

For i=1 To 8 ; Auch wenn Wir/Sie und Er/Sie/Es gleich sind, ist es für die Ausgabe einfacher
  PrintN("  "+PersPron(i)+" "+Worte(i))
Next

Input() ; Warte bis Enter

Natürlich ist es noch nicht das Absolute.
Meine Idee war auch, dass ich es umgekehrt machen kann.
Ohne Infinitiv. Also wenn man schreibt: gehe
Dann sagt der Rechner: Ich

Würde mich freuen, wenn ihr auch konktreten Code zu diesem Thema vorstellt.

Verfasst: 17.05.2006 10:44
von Kaeru Gaman
ich würde schon mal er/sie/es nicht in 3 feldern haben, die mit ich/du/wir/ihr/sie gleichberechtigt sind, doch das nur am rande.

ich hab mich vor ewigkeiten mal mit parserproggen beschäftigt. das war ein kurz in dem Adventure-Sonderheft 2 der zeitschrift 64er.

da hatten sie auch nen Elisa-source mitgeliefert, und am ende des kurses stand ein parser mit 4000 stichworten in ner direktzugriffs-datei auf diskette...

grundsätzlich gilt für Elisa und auch ihre (blödere) enkelin Alice:
es wird im grunde nur nach schlagworten gesucht, der großteil des satzes wird ignoriert.
bei Elisa z.b. wurden sätze der form "I <verb>" grundsätzlich beantwortet mit "Why do you think you <verb>?"
der parser war äußerst simpel.
wenn sie etwas nicht verstanden hat, antwortete sie standardmäßig mit "I see" (ich verstehe) ;)

Verfasst: 17.05.2006 10:58
von Xaby
ich würde schon mal er/sie/es nicht in 3 feldern haben, die mit ich/du/wir/ihr/sie gleichberechtigt sind, doch das nur am rande.
Wieso ich das gemacht habe, hab ich kommentiert!

>>Es ist am Ende für die Darstellung einfacher und es ist ja auch nicht das komplette Projekt.

ACH! Und was willst du eigentlich mit diesem Satz aussagen?
ich würde schon mal er/sie/es nicht in 3 feldern haben, die mit ich/du/wir/ihr/sie gleichberechtigt sind, doch das nur am rande.
Das ist eine dieser Formulierungen, die nur deine Tastatur älter werden lassen, aber keinen Gehalt haben.
>> Wieso würdest du es anders machen?
Da du keine Autorität bist, kannst es schlecht als Begründung gelten lassen, dass es schlecht ist, weil du es sagst.
>> Ach und dieses: nur mal so am Rande...
Hört sich an, als wäre es so unwichtig, dass du es dir gleich hättest sparen können, aber wohl keinen hast, der dir sonst zu hört.

Und später für die Analyse sind die dritten Personen singular genauso zu analysieren wie die dritten Personen plural.

Und bevor du wieder schreibst, dass du was so nicht gemacht hättest, schreib lieber wie du es gemacht hättest! Mit CODE!

Ich glaub auch ein wenig, du hast mich missverstanden. Ich hab nie behauptet, dass ich nicht die Dinge von anderen lese, um mir selbst meine Gedanken zu machen.

Ich wollte nur nicht fertige Programme ohne QuellCode für viel Geld einfach einbinden und wenn was nicht so geht wie ich es mir vorstelle, stehe ich da.

Und wie auch schon bei der Videoanalyse geschrieben, mach ich es hier noch mal:
Es hilft uns doch allen nicht wirklich weiter, wenn wir über Persönliche Meinungen sprechen und uns gegenseitig zu wenig zutrauen, nur labern, aber nichts kommt.

Und ob ich 50 bin und 12, oder ob ich schon Doktor der Informatik und Mathematik bin, oder gerade Lesen und Schreiben gelernt habe, spielt für mein Projekt auch keine Rolle.

Mit solchen Formulierungen schafft ihr es noch, dass sich die motivierten Programmierer lieber in eine stille Ecke verziehen und ihr eigenes Ding durchziehen. Aber dann hat die Gemeinschaft nichts mehr davon.
Ich hab mein Projekt nicht vorgestellt, um mich Lächerlich zu machen oder unreife Kommentare von euch lesen zu müssen. Sondern um euch eine Richtung zu zeigen, die interessanter ist als immer wieder ein ähnliches 2D-Shoot'm'Up.

Wenn es an den Geist geht, dann ist es doch erst interessant. Und wenn es so einfach wäre, dann hätte ich es ja nicht angefangen.

Ich brauch ja auch nichts machen, was es schon gibt. :?

Verfasst: 17.05.2006 11:08
von Kaeru Gaman
ich gebe zu, als du anfangs dein projekt vorgestellt hast, dachte ich, du hättest vergessen deine pillen zu nehmen, weil es wirklich verdammt hochgestochen klang. so hochtrabend, dass es in der regel illusorisch sein müßte, jemals erfolg zu haben.
deine bisherigen fortschritte haben mich lügen gestraft, und ich kann nur sagen: respekt!

allerdings bist du noch lange nicht fertig, also, rüste dich gut, denn die durststrecke kommt noch.
ich will hier nicht die ewige unke geben, aber die wahrscheinlichkeit, dass du wirklich in einem hobby-forum mit einem hobby-projekt etwas realisierst, woran sich die besten informatiker der welt sein jahren die köpfe zerbrechen, ist verschwindend gering, und die wahrscheinlichkeit, dass ich das auch noch komplett miterlebe ist gleich #NULL.
sorry, ich kann realisten auch nicht leiden, aber hier muss ich mal als solcher auftreten.

weiterhin:
> unreife Kommentare von euch lesen zu müssen.
möchte ich mir doch verbitten, das auf mich zu beziehen.