up | to Main Page
Background, Credits and Uses
In order to get this idea into production, I first had to be able to access the raw data for the Princeton WordNet project, which I found on the Sourceforge project files page for the Wordnet MySQL database (thanks to Bernard Bou for making them available under his project).
After locating the raw data, I was able to import the data into my own MySQL database, set up a web-based connection to the database, and generate a display-view page on which to show the result data that correspond to the user's search string.
What motivated me and what good are the interfaces
There were some motivations beside learning to program that helped me to achieve this included: the desire to create a usable interface for accessing the formally-compiled dictionary data put together by the WordNet staff via a user-friendly search interface; creating a more reader-friendly version of merriam-webster.com-like dictionary search results page; and gaining a look inside a well-organized, technologically advanced academic endeavor to create real solutions to problems by constructive use of recent innovations in computer technology (ie: cheap, secure webhosting & open-source software programs, like MySQL, etc.)
I recognize that there is some potential confusion that could arise when distinguishing the two applications I hoped to contribute to the WordNet project. To distinguish them, please consider that:
1) the HTML interface is a search interface to WordNet and is human-friendly. Using this form, a user may observe that searching with it brings he or she to the results page (ie: at the URL http://chriscargile.com/dictionary/search.php?q=<searchword> - the browser will interpret the page at this URL as HTML).
2/3) the XML and JSON interface(s) are computer-friendly interfaces and are accessible only by way of manipulating URLs in a web browser or in the program code for an application (ie: the URL http://chriscargile.com/dictionary/xml/<searchword> will bring the user to a results page for <searchword>. The browser/machine will interpret this page as XML). As the XML and JSON formats are intended to be used by machines, URL-manipulation alone as a means for accessing them is practical, and the existence or non-existence of a human-search interface will be irrelevant to the machine's parsing their results.
The easiest way to illustrate the XML structure to humans is, perhaps, below:
(1) - lemma
, where the number of hyphens next to each element indicates its nesting-level in the XML document structure.
(..'n':) -- sense
For JSON the structure is similar, except that I did not include the <sense> tags in the results' document structure.
As a note on handling exceptions, the only known exception would be that resulting from appending ''(null character) to the search URLs 'http://chriscargile.com/dictionary/search.php?q=' and/or 'http://chriscargile.com/dictionary/xml/'. These searches would die as the server does not find a search criteria as being input and issues a 'please enter a search word' error message.
Lessons & next steps
Creating this app has led me to further understand: web-based technologies & protocols (webservers,DNS,server-side scripting, DMBS, & html/css), process management tools & methodologies, and has inspired me to learn new tools, techniques, and approaches (C#/Java, OOP, self-learned skills development via use of free and community-encouraged resources, respectively).
Next steps for the application to modernize it include incorporating word-discovery/-suggestion (similar to google searches) for the interface (would be implemented using a C# module, most likely), a phonetic/audible pronunciation tool, and a bi-lingual word search interface, based on other word mappings (or mapping other projects, such as FrenchWordNet to the original)
[Update: a bi-lingual english->french interface has been prototyped here]
Would you like to clone the HTTP interface for internal usage?
If you are interested in setting up the HTML Wordnet interface on your local (Win7) machine, accessible via //localhost, go no further. A brief and easy-to-follow walk-through is provided right here