Sunday, October 31, 2010

SeMap - final year project (9th - 22nd October)

On 9th of October I have created a new private mailing list in our sourceforge project account, nldex-devs, since that would be much easier platform for us to have our project discussions going on.  I added all my group members to the mailing list and made them aware about it and requested them to always use this mailing list for project based discussions.
Around 13th October we got few comments from our internal supervisor Dr. Shehan Perera, on our project proposal. We altered our proposal according to his suggestions.
I found few sample SRSs on 15th October, from our seniors and looked at them and discussed with the group members. We figured out the necessary parts for our project’s requirement specification, and divided parts among each of us. I took up the sections of Operating Environment, User Documentation, Assumptions and Dependencies, and went through few resources to find out what I need to write. I put up the basic draft of my parts on 17th October; in our mailing list so all my group members can review them. We planned to finish the SRS on 26th October.
Throughout this period I continued to read on Drools documentation. I had downloaded Drools examples projects and ran them in Eclipse IDE and play around to get familiar with its behaviour. Also I looked at a rule creation method in Drools, called Domain Specific Language (DSL) and will be continued to look at them in coming days as well.
I tried to setup the RelEx in the Eclipse IDE since as it will make our lives easier when dealing with RelEx code. So I successfully setup the RelEx source code in Eclipse IDE. Following are the steps I followed.
·        File --> New --> Java Project --> Create project from existing source --> specified the path to relex folder
·        Now an eclipse project will be created based on the existing project
·        Go to the project root in the Package Explorer in the IDE
·        Right click on it --> properties
·        Select "Java Build Path" --> Libraries --> add external jars, and add the following jar files and press ok.

·        gate.jar
-gate.jar can be found inside the bin folder
·        jwnl.jar
-jar file can be found inside the extracted folder
·        linkgrammar-4.7.0.jar
          -jar file can be found inside the extracted folder
·        opennlp-tools-1.4.3.jar
          -Go to the path of the folder from a terminal and run "ant" command
          -That will build the opennlp-tools-1.4.3.jar for you inside the "output" folder of the same directory.

·        Go to Project and un-tick "Build Automatically" in the menu strip of the IDE.
·        Then go to the project root in the Package Explorer in the IDE
·        Right click on it --> Build Project
·        This will build the RelEx source without any errors.

Tuesday, October 12, 2010

SeMap - final year project (25th Sept. - 8th Oct.)

I started from what I left earlier week, basically to setting up the environment for us to use RelEx. RelEx has lot of dependencies which are in turn needed some other dependencies. I gave a try to set up RelEx in a windows environment, using MinGW which is a minimalist development environment for native Microsoft Windows applications. RelEx developers preferred us to use linux environment, but they asked me to give a try on windows (since most of us wanted to use windows) which they had no experiences of building RelEx. In an IRC discussion I told them that if I got successful, I will come up with a “how-to-do” document which will help someone who is planned to use OpenCog on windows and they were appreciated that.

Link grammar parser is one of the dependencies of RelEx and I had a nightmare of building it in MinGW environment, since some libraries used by them are not there in the windows platform. So I tried to manually download some of the missing libraries after debugging the build, but was unsuccessful. Then Nisansa started to build link grammar using Visual C++, neither he got it to build without errors (I think he will continue his investigation). Without further wasting our time on just setting up the environment, we thought to move to Linux based OS. I already had some experiences of using Ubuntu, so I just re-booted and logged into Ubuntu. Amazing fact is that within 10 minutes I was able to build RelEx successfully! But I had no regret of trying to install RelEx in windows.

I came up with a set of steps which one should follow in order to get RelEx installed in Ubuntu. Here I list them.

*sudo apt-get install build-essential
*sudo make install
*sudo ldconfig
*cd link-grammar
*./link-parser (this will run LGP, you can just verify that it is working)
*sudo cp linkgrammar-4.7.0.jar /usr/share/java
                sudo apt-get install bzr
  • Go to the folder where you need the RelEx trunk to be in and issue following:
                bzr branch lp:relex
                    ;this will check out the relex source code
  • In relex source code there's a build.xml file. Open it up and change the following:
                line 20:
                     pathelement location="${PREFIX}/linkgrammar-4.7.0.jar"
        Save it!
  • Finally go to the folder which contains build.xml (relex) & issue:
*ant -Check whether the "Build Successful" . This will build the code.
*ant run -to run the relex
*ant test -to test the relex

Project proposal was due on 8th of October so we had started are work on the proposal on 30th September. We discussed and distributed parts of the project proposal among us. I had taken the parts of introduction and methodology. Danaja and Nisansa proof-read the separated parts of the proposal and Chamilka did the most of the formatting part. I did help them in possible ways that I can. I should note here that I was down with a contagious eye disease, from 6th - 9th of October where I was instructed to keep my eyes rest. But I participated in group chats in that period as well, to keep me in touch of the project. We submitted our proposal to Dr. Ben Goertzel; our external supervisor and also to Dr. Shehan; our internal supervisor to get their approvals on 5th of October. Dr. Ben had reviewed our proposal within 24 hours and sent us few suggestions, and we all agreed to alter our proposal according to his amendments, and sent the revised proposal to Dr. Shehan. Unfortunately Dr. Shehan was attending a conference in US, so he was unable to sent us a reply.

Dr. Shantha had asked project groups to appoint a leader, and my project members appointed me as the group leader. I will try to do my best as the group leader and is desperate to make our project a success by getting contributions from all my passionate and highly talented group mates.

Saturday, October 2, 2010

Inception of an exciting time!

Ok, now I'm in my final year as an undergraduate, and this post is all about the 10 credits worth final year project of me. We've formed our group when we were in training, and my group mates are Nisansa de Silva, Chamilka Wijeratne and Danaja Maldeniya. Further this post carries what I did in first two or so weeks since the start of the semester.

During this period we went across an exciting time with the selection of a project idea and analysing the feasibility of ideas for a final year project in the area we are most interested i.e. Artificial Intelligence. We had few interesting ideas, some are posted in Moodle, and some ideas came up from my group mates. We had met with the lecturers and got to know about their expectations etc. about those ideas. But we decided to explore few ideas which are more interesting to us.

While I was thinking about a project idea, suddenly I remembered about an AI related open source project which I got familiar with during GSoC-2010, that is OpenCog. OpenCog is an open source Artificial General Intelligence framework, intended to one day express general intelligence at the human level and beyond. I did surf about OpenCog to get more familiar with it. Meanwhile I sent an email to the co-founder of OpenCog Dr. Ben Goertzel (CEO of Novamente LLC and Biomind LLC, CTO of Genescient Corp., Chairman of Humanity+, Advisor in Singularity University and Singularity Institute, Adjunct Professor of Cognitive Science, Xiamen University, China) and Dr. Joel Pitt who is a developer in OpenCog, by mentioning our interest to work under OpenCog and inquiring him possible project ideas with good research value. I got a really quick response from Dr. Ben with four possible categories namely NLP, machine learning, virtual embodiment and cognition, including brief descriptions. I shared Dr. Ben’s reply with my project members and went on a process of selecting the most interesting and doable two categories. We were able to select two categories i.e. NLP and machine learning and requested Dr. Ben to give us more detailed descriptions, at the same time I introduced other members of my team to Dr. Ben.

Dr. Ben was on a trip for couple of days, so we were asked to wait till he is back at home. Meanwhile I did few readings on OpenCog, NLGen and RelEx. On 26th I had a chat in gTalk with Dr. Ben and got to know that machine learning involves pretty hard core C++ programming including lots of templates and use of STL and Boost, since most of us were not familiar with C++, he suggested us to do a project in NLP which is more java based. Dr. Ben suggested three possible project ideas with brief descriptions on each, all were really interesting. After discussing with Vishaka Madam and Dr. Shehan we all agreed to do the project which is involved in improving the RelEx2Frame rule engine, which is used to identify the semantic relationships in English sentences. Dr. Shehan extended his support as our internal supervisor, while Dr. Ben Goertzel will support us as an external supervisor.

Dr. Ben provided us with the list of tasks that would be possible to do under the selected project, which will help us to come up with a comprehensive project proposal. Last few days I had looked into RelEx and RelEx2Frame, and tried to set up the environment to use RelEx. Also today I had a useful discussion on #opencog IRC channel with two OpenCog developers including Dr. Joel Pitt, and got very useful information about the project and they asked me to give the details of our group and our university etc. to mention us on the OpenCog Recap which is a fortnightly summary of stuff that is happening in the OpenCog community.

This is how things went since the inception of our project group.