German Eliza / Alice / Chatterbot - Problem mit SaxParser und .XML laden

Watchkido1

Active Member
Licensed User
Longtime User
Hi

Ich hab versucht nen kleinen Eliza / Alice - Chatterbot zu schreiben, hab jetzt aber Probleme mit dem Einlesen der .XML Datei.
Wenn es nur ne Liste oder eine Map wäre, ginge es ja noch.
Es ist aber so ein Mischmasch aus Liste, Map und eingefügten Worten, durch das ich nicht recht durchsteige.
Kann mir da bitte jemand helfen?

lg Frank

B4X:
#Region  Project Attributes
    #ApplicationLabel: Alice
    #VersionCode: 1
    #VersionName:
    'SupportedOrientations possible values: unspecified, landscape or portrait.
    #SupportedOrientations: unspecified
    #CanInstallToExternalStorage: False
#End Region

#Region  Activity Attributes
    #FullScreen: False
    #IncludeTitle: True
#End Region

Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'These variables can be accessed from all modules.
    Dim m As Map
    Dim Zufallsliste As List
    Dim a As Int
    Dim parser As SaxParser
End Sub

Sub Globals
    Dim EditText1 As EditText
    Dim Speak1 As SpeakButton
    Dim Label1 As Label
    Dim Frage, Antwort, Zufallsantwort, Text0 As String
   
   
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("1")

    If FirstTime Then
        parser.Initialize
        m.Initialize
        Zufallsliste.Initialize
    End If

    Dim In As InputStream
    In = File.OpenInput(File.DirAssets, "GermanAlice.xml")
    parser.Parse(In, "Parser")
    In.Close

    Speak1.TargetEditText = EditText1
   
   
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub Parser_StartElement (Uri As String, Name As String, Attributes As Attributes)

End Sub

Sub Parser_EndElement (Uri As String, Name As String, Text As StringBuilder)
    If parser.Parents.IndexOf("category") > -1 Then
        If Name = "pattern" Then
            Frage = Text.ToString
        Else If Name = "template" Then
            Antwort = Text.ToString
        Else If Name = "li" Then
            Zufallsliste.Add(Text.ToString)
        End If
    End If
    If Name = "/aiml" Then
        m.put(Frage, Antwort)
        'Zufallsliste.Add(Zufallsantwort)
    End If
End Sub



Sub Auswertung 'kommt von Speakbutton Sub vr_Result
   

    Text0 = EditText1.Text.ToLowerCase
   
    If Text0.Length < 1 Then Label1.Text = Zufallsliste.Get(Rnd(0,Zufallsliste.Size-1))

    For a = 0 To m.Size-1
   
        If Text0.Contains(m.GetKeyAt(a)) Then Label1.Text = m.GetValueAt(a)

    Next


End Sub

Ausschnitt aus der XML
B4X:
<category>
<pattern>*</pattern>
<template><random>
<li>Ist die Haende zu halten eine symbolische Geste fuer Menschen?</li>
<li>Was ist Dein Lieblingsfilm?</li>
<li>Worueber haben wir gesprochen?</li>
<li>Wie hast Du von <bot name="name"/> erfahren?</li>
<li>Bist Du Student?</li>
<li>Bist Du maennlich oder weiblich?</li>
<li>Was machst Du in Deiner Freizeit?</li>
<li>Interessierst Du Dich fuer Fussball?</li>
<li>Erzaehl mir, was du magst und was nicht.</li>
<li>Gibt es irgendwas, worueber ich Bescheid wissen sollte?</li>
<li>Wer ist Dein liebster Science Fiction Autor?</li>
<li>Jetzt habe ich den Faden verloren.</li>
<li>Wer ist Dein Idol?</li>
<li>Lass uns ein wenig philosophieren.</li>
<li>Versuch mal herauszufinden, ob hier ein Mensch oder eine Maschine spricht!</li>
<li>Was hast Du gerade an (Nein, DARAN denke ich jetzt nicht ;-> )?</li>
<li>Wie stellst Du Dich normalerweise vor?</li>
<li>Bist du Single ?</li>
<li>Wie alt bist Du ?</li>
<li>Wie heisst Du wirklich ?</li>
<li>Wenn Du jede Art von Roboter haben koenntest, welche Art wuerdest Du wollen?</li>
<li>Was willst Du mich wirklich fragen?</li>
<li>Was ist Dein Sternzeichen?</li>
<li>Wo wohnst Du?</li>
<li>Wo wurdest Du geboren?</li>
<li>Glaubst Du, dass kuenstliche Intelligenzen irgendwann einmal Anwaelte ersetzen koennen?</li>
<li>Liest Du lieber oder siehst Du lieber fern?</li>
<li>Ich habe auf Dich gewartet.</li>
<li>Das ist ein sehr origineller Gedanke.</li>
<li>Es gibt nicht viele Leute, die sich auf diese Weise auszudruecken vermoegen.</li>
<li>Schreibst du manchmal Gedichte?</li>
<li>Wo kommst Du her?</li>
</random></template>
</category>
<category>
<pattern>*</pattern><that>WIE SOLL ICH DICH NENNEN</that>
<template><srai>ICH HEISSE <bot name="star"/></srai></template>
</category>
<category>
<pattern>* ARSCH</pattern>
<template>Warum benutzt Du solche Worte?</template>
</category>
<category>
<pattern>* AUTO</pattern>
<template>Was fuer einen Wagen faehrst Du?</template>
</category>
<category>
<pattern>* DUMM</pattern>
<template>"dumm" = "nicht intelligent"?</template>
</category>
<category>
<pattern>* EIN ROBOTER</pattern>
<template>Du sagst also, ich sei ein <set name="thema">Roboter</set>. Wie kommst Du darauf?</template>
</category>
<category>
<pattern>* EINE MENGE LEUTE</pattern>
 

Attachments

  • Chatterbot.zip
    76.9 KB · Views: 252
Top