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
Ausschnitt aus der XML
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>