Noch mehr CODE
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 : 18.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
; Das Global muss bei PB 3.94 wieder entfernt werden!!!
Global Dim Worte.s(8) ; Stamm, Ich, Du, Er, Sie, Es, Wir, Ihr, Sie
Global Dim PersPron.s(8); PersonalPronomen
Global Dim Vokale.s(4); Dim Vokale.c(4) wegen der PB 3.94 Kompatibilität, aber ohne Global
; Vokale + Umls
Global Dim Umls.s(2); Umlaute von Vokalen getrennt, weil sie unter der Console anders erkannt werden
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"
Vokale(0)="a" ; Reihenfolge normalerweise: a, e, i, o, u
Vokale(3)="e"
Vokale(4)="i" ; Wegen den Umls, sind jedoch die ersten drei a, o, u
Vokale(1)="o"
Vokale(2)="u"
Umls(0)="ä" ; -> hier müssen die richtigen Codes für die Umlaute eingesetzt werden
Umls(2)="ö"
Umls(2)="ü"; Später müsste es vielleicht noch
; "au"'s, "äu"'s, "eu"'s, "ai"'s, und "ei"'s geben
;>> Enge Verknüpfung mit der Sprachausgabe.
;>> WörterBuch müsste Aussprache, Sinn und visuelle Darstellung
;>> des Wortes, der Gruppe speichern. Sinn -> mit anderen Worten verknüpfen
;}/
Procedure.b VokaKuck(s.s); Schaut, ob ein Vokal oder ein Uml in der Zeichenkette vorkommt
Dings.b=0
For o=0 To 4
If FindString(s,Vokale(o),1)<>0
Dings+1
EndIf
Next
For o=0 To 2
If FindString(s,Umls(o),1)<>0
Dings+1 ; Urml aus dem Ei
EndIf
Next
ProcedureReturn Dings
EndProcedure
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
Satz.s
Satz=Eingabe+" "; + " " für Wort-Erkennung!
WortZahl=CountString(Satz, " ")
Dim Wort.s(WortZahl)
p.l=-1
For i=0 To WortZahl
If VokaKuck(StringField(Satz,i," "))<>0
p+1
Wort(p) = StringField(Satz,i," ")
EndIf
Next ; Okay, es klappt, aber fragt mich nicht warum
For i=1 To WortZahl ; Auch wenn Wir/Sie und Er/Sie/Es gleich sind, ist es für die Ausgabe einfacher
PrintN(" "+Wort(i))
Next
Input() ; Warte bis Enter
Dieser trennt einen Satz in Worte. Es überprüft auch schon ansatzweise, ob es sich überhaupt um ein Wort handelt.
Ich denke, es ist möglich einen Filter zu machen, der z.B. folgendes schon kann:
Der Mann geht langsam weg.
> Mann ist groß geschrieben, also ist das Subjekt bis dorthin.
- Der Mann -
Nach dem Subjekt muss sofort das Prädikat kommen.
>> also "geht"
Der Rest ist dann irgendein Objekt oder sowas.
Subjekt, Prädikat, Objekt
>> folgendes geht nicht
Langsam geht der Mann weg.
-> hier müsste man wohl ein Wörterbuch auf "geht" ansetzen.
Und auch auf "langsam" und "weg"
Auf Mann nicht, das kann nämlich auch Frank sein. Und den kennen wir ja noch nicht
