Tuesday, December 21, 2010

Work done in the period of 6th to 19th of November

During this period my main task was to integrate the converted Drools Rules to the RelEx source code. For that first I just created a Drools State-full Knowledge session which creates the Knowledge Base based on the converted Drools Rules file. At the first debugging time, I got hell of errors, which is some what expected since we had not done any debugging of created Drools rules before that moment. So I started to look into each and every error thrown. Few errors among hundreds of errors are noted below.

Import statement was missing from the drools rules file: I altered the RuleConverter code such that it adds that.
There were lot of typos found in the RelEx2Frame hand written rule file, which mislead our RuleConverter to generate malformed rules: I debugged and edited the hand written rule file as needed.
Once I made the Drools to create the KnowledgeBase successfully, I started to debug the methods used inside the Drools rules which were implemented by Danaja and Nisansa. They didn't have a way to debug there method earlier, so we expected few bugs from those methods. I found few bugs in one of the methods (which is the tricky method), and successfully fixed those bugs, and got the rules to work.
Then I found out that currently we were not outputting the given sentence related output but only the rule. So I went ahead and implemented that functionality. It needed few changes in the Drools rules file (i.e. RuleConverter) and also in few methods in the RelEx2Frame. While doing this I observed that the 'then' part of the rule is not get executed suddenly after the activation of a rule. I had a discussion about this behaviour in Rules Users List mailing list and got to know the following:
“ In the rete algorithm the agenda is a list of activated rules who's actions are eligible to fire. The "first" one on the list is selected, it's action is fired, and the agenda might change as a result. "First" is in quotes because the agenda list is sorted by conflict resolution rules.”
So I altered the code a bit such that it solves this issue as well.

I did few tests with the new Rule Engine, and found out it takes ages (10-15mins) to display the resulted frame outputs. I raised this issue in front of my group mates and made the point that a possible approach of caching which I have seen in few mailing list discussions.

Further I edited the existing RelEx build.xml file such that it adds necessary Drools related executables to the classpath before compiling the source code.

We had few discussions on preparing the design document as well, again Chamilka took the lead and cooperated with others and divided separate parts among four of us.

No comments: