Zum Inhalt springen

Mefisto

Mitglieder
  • Gesamte Inhalte

    28
  • Benutzer seit

  • Letzter Besuch

  1. Also ich suche nach wie vor nache einem freien, deutschen Wörterbuch auf SQLite-Basis... Es geht natürlich auch jedes andere Format, man wird das ja irgendwie konvertieren können. Weiß da nicht vielleicht doch einer Rat? Danke schonmal im Voraus, Jonathan
  2. Hallo! Ich weiß, das Thema hier ist inzwischen lange veraltet. Aber es hat mich einfach wieder überkommen, etwas an "CINA" weiterzubasteln. Als ich mir hier nochmal den Thread durchgelesen habe, ist mir nach und nach mehr klar geworden, dass ich wahrscheinlich falsch angefangen habe. Also; gestern habe ich nochmal ganz neu angefangen und habe jetzt auch schon wieder ein wenig Code. Veränderungen von alt zu neu: 1. Kein Qt mehr, der "Kern" wird ausschließlich in C++ geschrieben. Hinterher kommt eine hübsches Qt Interface dazu, aber nur zur Steuerung des "Kerns". 2. Weg von Mustern; Einfach nur die Eingabe mit einem Regular-Expression-Muster abzugleichen ist nicht so anspruchsvoll und raubt dem Chatbot irgendwie seine Faszination. Also: Jetzt hat das ganze den selben Ansatz wie FreeHal. Natürlich nicht mit dem Ziel, eine Konkurenz darstellen zu wollen (wenn ich das Programm denn überhaupt jemals soweit schaffe!) Das sind so die zwei maßgeblichen Dinge, die ich jetzt ändern will. Was bis jetzt an dem Projekt auf zwei Beinen steht ist die Satzanalyse: Erkennung von Sätzen anhand von Satzzeichen, Aufteilung in einzelne Wörter und Speicherung in einen Vektor, um damit weiterarbeiten zu können. Was als nächstes kommt ist die Erkennung der Wörter, also welcher Worttyp (Nomen, Prädikat, Adjektiv, Atribut, etc.). Da dies für jede Sprache unterschiedlich ist, kommt ab jetzt auch die Datenbank ins Spiel. Und natürlich poste ich hier nicht aus Zeitvertreib, ich habe nämlich diesbezüglich auch gleich eine Frage: Gibt es eventuell eine Wörterdatenbank, die man kostenfrei verwenden darf? Also in der alle Wörter der deutschen Sprache verzeichnet sind und deren Worttyp? Weil auch wenn das Programm später selbstlernend ist, sollte es ja wenigstens über einen groben Basiswortschatz verfügen, den es schon kann. (Beispiel: Ein Baby lernt am Anfang mühsam jedes Wort und kann kaum Sätze bilden. Das wird im Laufe der Zeit besser und ab 6 Jahren sollte einfacher Satzbau kein Problem mehr sein. Ich würde diese 6 Jahre in meinem Programm gerne überspringen ) Würde mich über Hilfe natürlich wie immer freuen und hoffe es ist mir niemand böse, dass ich diesen Thread wieder aus der Versenkung geholt habe! Liebe Grüße, Jonathan
  3. So, mal wieder etwas weitergeschrieben. Ich habe jetzt meinen kompletten parser umgeschrieben, sodass er mit eienr Datenbank funktionieren sollte. Nur jetzt habe ich damit ein ziemlich großes und blödes Problem: Ich würde gerne eine Disk-basierte Datenbank verwenden, da bietet sich unter QT ja SQLite an. Soweit so gut. Nur ich muss ja auch das Reg-Exp in der Datenbank verstauen und mit dem Befehl "... REGEXP ..." hinterher wieder aus der Datenbank auslesen. Eigentlich unterstützt SQLite ja auch diesen Vergleich, um einen String mit einer Regular Expression aus der Datenbank zu vergleichen, nur dummerweise tut dies nicht die abgespeckte Version, die QT von Hause aus mitbringt. Was mache ich da jetzt? Weil ohne Regexp ist das ganze ja nicht wirklich realisierbar... Wäre nett, wenn mir jemand helfen könnte Liebe Grüße und einen guten Abend, Jonathan
  4. Jup, danke, funktioniert jetzt super. Genau so wie ichs mir die Woche über überlegt habe... Und ansonsten nochmal vielen Dank so überhaupt für die ganze Hilfe und das Testen! Ist wirklich nett Ich werd jetzt wohl erstmal etwas am Inhalt schreiben und dann vielleicht heute oder die kommende Woche mal eine erste "nutzbare" Version hochladen... Liebe Grüße, Jonathan
  5. So, ich habe meine Funktion jetzt vom QString zur QStringList abgeändert und es funktioniert alles soweit ganz gut. Nur jetzt habe ich ein Problem. Meine Funktion soll ja, sofern kein Thema gesetzt war und auch innerhalb der Funktion nicht durch ein [sETTOPIC ...] ein Thema gesetzt wurde, logischerweise kein Thema zurückgeben. Also eine StringList mit nur einem einzigen String, der Antwort des Bots. Nur dann habe ich folgendes Problem: Wie erkenne ich hinterher beim Sortieren von Antwort und Thema, was Antwort und was Thema ist? Angenommen das Thema ist immer das letzte Element der QStringList, dann wäre folgendes Möglich: 1: Mir gehts auch gut. 2: Wie geht es Ihnen denn? 3: Gesundheit Hier würde der PC zwei Strings ausgeben und das thema auf Gesundheit setzen. Wenn nun aber kein Thema gesetzt wird und der PC auf 3 Eingaben antwortet, sähe das ganze so aus: 1: Mir gehts auch gut. 2: Wie geht es Ihnen denn? 3: Ist heute nicht schönes Wetter? Natürlich sollte hier der dritte String auch ausgegeben werden, aber logischerweise würde er auch als Thema gesetzt werden. Ich denke mal, ein leeres Element an die StringList anzuhängen wäre unsinnig, ich weiß nicht mal, ob das überhaupt geht... Auch das ganze mit "Thema: " einzuleiten und hinterher wieder rauszulöschen ist sicher nicht so professionell... Wie löse ich das denn am besten?
  6. Wow, vielen Dank für diese ausführliche Antwort... Das mit der Klasse hatte ich mir auch schon überlegt, aber ich würde gerne ein Funktion machen, die Hinterher andere Leute einfach in Ihr Programm einbauen können... Und es gibt ja nichts einfacheres als einen Funktionsaufruf... Dass ich das ganze mit Parametern löse ist ja ansich auch kein Problem, es funktioniert ja. Nur das blöde ist dann halt, dass eine Funktion nur einen Rückgabewert haben kann... An einen StringList als Workaround dafür habe ich auch schon gedacht, und das werde ich wohl auch dann als nächstes probieren. Vielen Dank wie gesagt, jetzt werde ich erstmal tüfteln, dass es soweit wie es jetzt ist läuft... Vereinfacht wird wie in Mathe hinterher
  7. Dankeschön, dass ist sehr nett Eine Beispieldatei, in welcher das, was ich heute neu dazu zu machen versucht habe zu sehen ist (also das mit SETTOPIC und IFTOPIC), ist in "language/de/gimp.mod"... Bevor ich heute dran weitergemacht habe hat alles wunderbar kompilliert und funktioniert. Das heißt die züfällige Ausgabe bei (möglichkeit1|möglichkeit2|möglichkeit3) und alles andere funktioniert. cina_0-0-3-debug.zip
  8. Hm ich experimentiere jetzt schon seit einer Stunde mit gdb rum... Bin das Programm inzwischen per "step" vom Anfang an Schritt für Schritt durchgegangen und es kam kein brauchbares Ergebnis... Also irgendwie bin ich zu doof zum Debuggen... Was kann ich denn noch probieren? Liebe Grüße, Jonathan P.S.: Ich habe gerade noch rausgefunden, dass der Fehler mit Sicherheit in der Datei "parser.cpp" liegen muss. Ich habe einen Breakpoint in die betreffende Funktion "QString parse()" gesetzt und dieser wurde erreicht. Es wird also die Funktion aufgerufen.
  9. Ok, hier der Backtrace: #0 0xb762a57b in QString::append () from /usr/lib/libQtCore.so.4 #1 0x0804cb1a in mainwindow::sendString () #2 0x08051a9d in mainwindow::qt_metacall () #3 0xb76eaa60 in QMetaObject::activate () from /usr/lib/libQtCore.so.4 #4 0xb76eb7e2 in QMetaObject::activate () from /usr/lib/libQtCore.so.4 #5 0xb7c947a7 in QLineEdit::returnPressed () from /usr/lib/libQtGui.so.4 #6 0xb7c9d406 in QLineEdit::keyPressEvent () from /usr/lib/libQtGui.so.4 #7 0xb794f81e in QWidget::event () from /usr/lib/libQtGui.so.4 #8 0xb7c9b157 in QLineEdit::event () from /usr/lib/libQtGui.so.4 #9 0xb78f78ec in QApplicationPrivate::notify_helper () from /usr/lib/libQtGui.so.4 #10 0xb7900806 in QApplication::notify () from /usr/lib/libQtGui.so.4 #11 0xb76d5e61 in QCoreApplication::notifyInternal () from /usr/lib/libQtCore.so.4 #12 0xb79583de in ?? () from /usr/lib/libQtGui.so.4 #13 0xb798ebb0 in ?? () from /usr/lib/libQtGui.so.4 #14 0xb7990d26 in ?? () from /usr/lib/libQtGui.so.4 #15 0xb7967af5 in QApplication::x11ProcessEvent () from /usr/lib/libQtGui.so.4 #16 0xb79927aa in ?? () from /usr/lib/libQtGui.so.4 #17 0xb72006f8 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0 #18 0xb7203da3 in ?? () from /usr/lib/libglib-2.0.so.0 #19 0xb7203f61 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0 #20 0xb7700478 in QEventDispatcherGlib::processEvents () from /usr/lib/libQtCore.so.4 #21 0xb7991ea5 in ?? () from /usr/lib/libQtGui.so.4 #22 0xb76d452a in QEventLoop::processEvents () from /usr/lib/libQtCore.so.4 #23 0xb76d46ea in QEventLoop::exec () from /usr/lib/libQtCore.so.4 #24 0xb76d6da5 in QCoreApplication::exec () from /usr/lib/libQtCore.so.4 #25 0xb78f7767 in QApplication::exec () from /usr/lib/libQtGui.so.4 #26 0x0804c105 in main () Danke übrigens für den Tipp mit dem srand()
  10. So, nach ja inzwischen einiger Zeit wollte ich mich mal wieder hier melden. Ich hatte die letzte Woche eher wenig Zeit und deswegen habe ich kaum dran weitergearbeitet. Heute hat mich aber mal wieder der Wahn gepackt und ich wollte etwas weitermachen... Die Parser-Funktion hatte ich schon anfang der Woche überarbeitet und komplett neu gemacht (Datei war fast halb so groß hinterher )... Jetzt heute wollte ich mich etwas mit der Erinnerungs-Funktion beschäftigen: Innerhalb der Module kann der Benutzer entweder mit "[sETTOPIC irgendeinthema]" ein Thema setzen oder mit "[iFTOPIC irgendeinthema]" das aktuelle Thema abfragen. Somit kann z.B. folgendes realisiert werden: User: Hallo! Bot: Auch hallo User: Ich habe ein Problem mit GIMP... Bot: Ok, dann schießen Sie mal los! (hier wird das Thema auf "gimp" gesetzt... User: Wie erstelle ich ein neues Bild? (nirgendwo das Wort gimp drin) Bot: Klicken Sie im Hauptfenster von GIMP auf "Datei->Neu". Im letzten Satz ist im "Trigger-Teil" des Modules der Zusatz "[iFTOPIC gimp]"... Da der User vorher GIMP erwähnt hat, wurde auch "gimp" als thema gespeichert mit diesem einfachen trigger: <trigger 1>gimp</trigger> <out>[sETTOPIC gimp]</out> Soweit so gut, ich bin auch fertig, das ganze zu schreiben. Nur dummerweise funktioniert es nicht. Es kompilliert zwar alles, aber sobald ich etwas eingebe und der parser das ganze verarbeiten soll, stürzt das Programm ab (Segmentation fault, sagt zumindest gdb)... Der Fehler liegt also wahrscheinlich in meiner parser.cpp... Da ich selbst zu doof bin zu sehen, was ich falsch gemacht habe, wollte ich fragen, ob einer von euch kurz einen Blick auf die Datei werfen kann... Das wäre sehr, sehr nett Vielen Dank schon Mal im Voraus! Grüße, Jonathan parser.txt
  11. So, wer interesse hat zu sehen, was heute so enstanden ist (ist ja noch nicht viel, aber für einen Tag gehts finde ich ) kann sich das kleine Paket aus dem anhang runterladen und mit make kompillieren. Ihr braucht QT (mindstens irgendwas mit 4 )... Vernünftig kommentiert habe ich hier nur die "parser.cpp", in der bisher die meiste Arbeit steckt. Morgen mache ich dann Variablen in Modulen möglich (die ich zwischenzeitlich rausgenommen habe) und füge einigen Code im parser.cpp zusammen (z.B. die letzten beiden Schleifen passen gut in eine)... Ansonsten werde ich wohl dann erstmal etwas am Inhalt schreiben, damit ich hinterher eine größere Basis zum Testen habe (mit einer Datei ist das immer recht schwierig)... Über Tester freue ich mich natürlich, auch wenn es noch nicht so viel ist. Auch Codeverbesserungen sind immer nützlich Liebe Grüße und eine gute Nacht, Jonathan :schlaf: P.S.: Ich hoffe das mit dem abgekufertem Namen ist nicht so schlimm, ich änder ihn auch wenn ich länger dran weiterarbeite... Nur ich hatte von meinen ganzen Übungsprojekten schon cina, cina 2, cina_ui, etc... cina2009_0-0-1.zip
  12. So, das ganze läuft jetzt erstmal soweit ganz gut Ist ja schonmal was für einen Tag! Aber ein letztes Problem besteht noch mit dem aktuellen Code: Und zwar die deutschen Umlaute... Das Programm ist zwar eigentlich auf Englisch und beinhaltet halt erstmal nur das deutsche "Sprachpaket" (zumindest wird es das mal, ist ja erst eine Datei ), aber die Umlaute brauche ich für das deutsche Paket trotzdem. Das heißt: Tippt der User ä, ü, ö oder ß ein, so werden diese falsch dargestellt. Auch die Ausgabe vom Computer wird nicht richtig dargestellt. Kann ich das irgendwo umstellen von utf-8 auf ISO oder so? Danke schonmal
  13. Aaaah das ist einer dieser Momente wo einem ein Licht aufgeht Es wurde also nur der linke und rechte Tag erkannt und zwischendrin das </out><out> nur als normaler Text... Und weil ich mir das ganze nur in einem HTML-Textbrowser angeguckt habe, wurden die Taggs entfernt... Hm vielen Dank, ich wäre glaube ich erst in ein paar Tagen drauf gekommen
  14. Hm, irgendwie bin ich gerade etwas verwirrt... Also meine RegExpressions stimmen eigentlich, weil vor dem Versuch, mehrere in einer Zeile auszulesen, hat es ja funktioniert Aber vielleicht übersehe ich was? Und den Segmentation fault habe ich gefunden, vielen Dank dafür
  15. Dankeschön, da werde ich jetzt wohl erstmal weiter tüfteln

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...