From: Martin F. <ma...@sk...> - 2009-02-09 23:49:23
|
Hello, there is an entry about the automatically extended Stendhal word list in the bug tracker: https://sourceforge.net/tracker2/?func=detail&aid=2457606&group_id=1111&atid=101111 It describes the problem that at some time the parser did no more recognice expressions containing the word "3" correctly. While it may look like a trivial bug, there is a longer story behind it. The parser in the Stendhal server needs to know about word types in order to decipher the English grammar. Because the initial word list in the source code will never be complete to handle all user input, there is a logic in the code to add previously unknown words in the list as they are detected by one of the NPCs. Their type is initially unknown. Anyhow this new entries have influence on the following behaviour of the parser. This is what explains the behavior shown in the above bug. The problem has been solved initially by reseting the word list in the server to the hard coded list. My initial idea was to take this automatically detected new words as proposal to extend the word list permanently. Using a comfortable word list editor it would be possible to edit the word list entries and associate word types. This way the parser would grow and could handle more and more extended vocabulary. Its behavior would become better and better as time goes by. The word list editor could access the database directly using JDBC. But I initially forgot that then either the user interface of the word list editor would have to run on the server. Or the database access would have to be implemented in any other way between server and client. One way would be to configure a limited access to the MySQL port through the firewall. Another way would be to integrate the word list editor into the Stendhal client and use the already existing client/server connection to transmit the data. What are your ideas and opinions about the word list editor? Regards, Martin (original text in German) Vor einiger Zeit wurde ein Bug bzgl. der automatisch gefüllten Wortliste in Stendhal erfasst: https://sourceforge.net/tracker2/?func=detail&aid=2457606&group_id=1111&atid=101111 Da ich hierzu adhoc keine Lösung parat habe, möchte ich eine kleine Diskussion starten. Der Parser im Stendhal-Server ist auf die Zuordnung von Word-Typen angewiesen, um die englische Grammatik aufzulösen. Da die im Quellcode vorgegebene Liste mit nie ganz vollständig sein wird, um alle Benutzereingaben abzudecken, ist eine Logik im Code enthalten, die bisher unbekannte Wörter mit in der Liste erfasst, sobald sie von einem der NPCs entdeckt werden. Deren Typ ist zunächst einmal noch nicht bekannt. Dennoch beeinflussen diese Neueinträge das nachfolgende Verhalten des Parsers. Dies erklärt das im oben aufgeführten Bug beschriebene Verhalten. Das akute Problem wurde zunächst dadurch gelöst, dass die Wortliste im Server auf die im Code verdrahtete Liste zurückgesetzt wurde. Meine ursprüngliche Idee war nun, diese automatisch neu erfassten Wörter als Vorschläge für eine permanente Erweiterung der Wortliste zu verwenden. Über einen komfortablen Wortlisten-Editor könnte man die Einträge der Wortliste nachbearbeiten und jeweils einen Wort-Typ zuordnen, so dass der Parser weiter reift und künftig mit dem erweiterten Vokabular klarkommt. Nach und nach wird sein Verhalten so immer besser. Dieser Wortlisten-Editor könnte direkt über JDBC auf die Datenbank des Servers zugreifen. Woran ich zugegebenermassen allerdings anfangs nicht dachte ist, dass dazu entweder die Oberfläche des Wortlisten-Editors auf dem Server laufen muss. Oder der Datenbank- Zugriff wird auf irgend eine andere Weise zwischen Server und Client durchgeführt. Möglich wäre hier eine über die Firewall beschränkte Freigabe des MySQL-Ports. Oder man könnte den Wortlisten-Editor auch in den Stendhal-Client integrieren und die Daten über die schon bestehende Client/Server-Verbindung übertragen. Was sind Eure Ideen und Meinungen hierzu? Grüße, Martin |
From: Oslsachem <os...@ya...> - 2009-02-12 22:18:13
|
> What are your ideas and opinions about the word list > editor? I'm afraid I can only contribute with questions for now :) Can the parser be -easily- configured so that it doesn't start to consider the new words once they get added but simply stores them? Why is the run-time/dynamically generated word list -presumably- stored inside a database instead of just a (flat) file as the original hard-coded list is? As it needs to be manually supervised, what could be the growth rate of this list (number of words per day)? Are there any additional requirements (appearance frequency, ...) for the new words to get added to that automatically generated list? Is there a necessity or are there any benefits for an online list editor over editing the original file offline and updating it during server restarts? Cheers, Osl |
From: Martin F. <ma...@sk...> - 2009-02-14 09:07:25
|
Hello Oslsachem, >> What are your ideas and opinions about the word list >> editor? > > I'm afraid I can only contribute with questions for now :) You are very welcome. > Can the parser be -easily- configured so that it doesn't start to > consider the new words once they get added but simply stores them? New words are not given any type information at first. But while parsing sentences directed to NPCs, there take place transformations, which are influenced by this new words, as it seems. At least this is my interpretation of the bug report. Well, I should look more into detail and try to reproduce the problem... To answer your question directly: Ideally there should be no influence of new words to following inputs without assigning types to them manually. But currently this doesn't seem to work in all cases because of the complexity of the parser transformations. <german> Neuen Wörtern wird zunächst einmal noch kein Typ und somit auch keinerlei Bedeutung zugeordnet. Allerdings finden während der Erkennung von Sätzen, die an NPCs gerichtet sind, Transformationen statt, auf die diese neuen Wörter scheinbar gelegentlich doch Einfluß nehmen. Zumindest kann ich mir nur auf diese Weise den Bug Report erklären. OK, ich sollte wohl demnächst versuchen, das Problem näher zu betrachten und den Fall zu reproduzieren. Ich fürchte nur, das wird nicht so ganz einfach werden. Um Deine Frage direkt zu beantworten: Idealerweise sollten die neuen Wörter keinen Einfluß auf folgende Eingaben haben, so lange ihnen nicht explizit ein Word-Typ zugeordnet wird. Nur scheint dies aufgrund der Komplexität des Parser-Algorithmus derzeit nicht immer der Fall zu sein. </german> > Why is the run-time/dynamically generated word list -presumably- > stored inside a database instead of just a (flat) file as the > original hard-coded list is? We think it is the lean way to store all data generated by the Stendhal server at one single place, that is in the database. Technically it is of course no problem to store the word list in file format. In fact this has already been done during the development phase of the NPC parser. <german> Wir denken, es ist der saubere Weg, alle vom Stendhal-Server gespeicherten Daten an einer einzigen Stelle - also in der Datenbank abzulegen. Technisch gesehen wäre es natürlich kein Problem, die Wortliste wieder wie früher in einer Datei zu speichern. In der ersten Entwicklungsphase des NPC-Parsers war das bereits der Fall. </german> > As it needs to be manually supervised, what could be the growth rate > of this list (number of words per day)? We could answer our server admins - they should know about the current size of the list and have some impression about the growth rate. I know, there are some fundamental concerns about storing the words at all because one could make conclusions from the new vocabulary to the current discussions in the game (NPCs some times also listen to user discussions). <german> Dazu können wir unsere Server-Admistratoren fragen. Sie sollten eigentlich einen Eindruck von der aktuellen Größe und der ungefähren Wachstumssrate haben. Ich weis, auch dass es einige Bedenken gegenüber der Speicherung der Wörter an sich gibt, da gewisse Rückschlüsse aus dem neu dazukommenden Vokabular auf die aktuellen Diskussionen im Spiel zu ziehen sind. Daher sollten auch nur Admins Zugriff auf die Wortliste haben (NPCs bekommen manchmal auch Diskussionen mit, die eigentlich nicht an sie gerichtet waren). </german> > Are there any additional requirements (appearance frequency, ...) > for the new words to get added to that automatically generated list? Currently any new word, that is not derived from any already know word, is added to the word list (see also SentenceImplementation.classifyWords() in the source code). <german> Zur Zeit wird jedes bisher unbekannte Wort, das nicht von einem der bereits bekannten abgeleitet ist, in die Wortliste aufgenommen (siehe auch SentenceImplementation.classifyWords() iim Quellcode). </german> > Is there a necessity or are there any benefits for an online list > editor over editing the original file offline and updating it during > server restarts? <german> Ein Online-Editor könnte die Bedienung vereinfachen. Er würde z.B. Auwahllisten für den Wort-Typ bereitstellen, um versehentlichen Fehleingaben zu vermeiden. Außerdem kann man so Sonderfunktionen wie die im folgenden Inline-Kommentar beschriebenen vorsehen. </german> package games.stendhal.server.entity.npc.parser; /** * WordListEditor is a graphical tool to administer the word list stored in the database. It provides * the following functionality: * - (re-)initialize the database with the pre-configured word list by calling WordListUpdate * - associate word types, plural, numerical values and aliases with new words - remove wrong * spelled words - add new entries * - print out the "words.txt" file to update the source, which initializes new word lists * * @author Martin Fuchs */ public class WordListEditor { public static void main(final String[] args) { // TODO implement WordListEditor } } By the way: The <german> sections are there because it is some times easier for me to write the german text first and then translate all into english. So if you prefer German, just read this version of my messages - it's a free spin-off feature. ;-) Regards, Martin |
From: Oslsachem <os...@ya...> - 2009-02-16 20:20:52
|
IMHO the best option would be integrating the word list editor into the Stendhal client and use the already existing client/server connection to transmit the data because: - It complements the policy of storing all data generated by the Stendhal server at one single place with accessing it in a single way as well. - From a perspective of performance, it allows moving the CPU load of running the user interface from the server to the client, which in this case is significative given that the server can already experience heavy loads just from running the game itself, which in many cases results in noticeable lag for the end users. - From an end user's perspective, it makes it transparent -invisible- to her the setup of the word list editor service on the hosting server as well as the access to the editor interface from the client side. Cheers, Osl |