Installing Ruby-WordNet on Leopard
I recently decided to play around with WordNet, a lexical database of English. Naturally, I wanted to use Ruby and found the Ruby-WordNet bindings. The install process was more involved than I expected.
Install WordNet
Download and unpack the latest version of WordNet. (I installed WordNet-3.0.tar.gz.) Then, proceed with the usual build steps:
$ cd ~src/WordNet-3.0 $ ./configure $ make $ sudo make install
Install Berkeley DB
I used MacPorts, which was nice and simple:
$ sudo port install db46
Install Berkeley DB Ruby Bindings
Download the latest release of BDB via FTP server. (I installed bdb-0.6.2.tar.gz.)
$ cd ~src/bdb-0.6.2
Next, if you are using an Intel-based Mac, use this:
$ env ARCHFLAGS="-arch i386" ruby extconf.rb --with-db-include=/opt/local/include/db46 --with-db-lib=/opt/local/lib/db46
Otherwise, if you’re using a PPC-based Mac:
$ env ARCHFLAGS="-arch ppc" ruby extconf.rb --with-db-include=/opt/local/include/db46 --with-db-lib=/opt/local/lib/db46
For me, not specifying the architecture results in this general error:
Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options. ... extconf.rb:78: libdb not found (RuntimeError) ...
With more detailed error information in ~/src/bdb-0.6.2/mkmf.log:
... ld: symbol(s) not found for architecture ppc ...
Note: In general, I’ve found that anything that I build using MKMF needs the ARCHFLAGS environment variable. Also, note that some RubyGems use MKMF to build native extensions, so -arch is also required (i.e. sudo env ARCHFLAGS="-arch i386" gem install mysql).
If everything went well you’ll have a Makefile and can finish off the Berkeley DB Ruby bindings installation:
$ make $ sudo make install
Install Ruby-WordNet
Download the latest version of Ruby-Wordnet (I installed Ruby-WordNet-0.0.4.tar.gz):
$ cd ~src/Ruby-WordNet-0.0.4 $ ruby convertdb.rb /usr/local/WordNet-3.0/dict/ $ ruby test.rb $ sudo ruby install.rb
I got one failure while running the tests, which I assumed to not be a huge problem.
You should now be able to run the examples:
$ sudo ruby examples/distance.rb pine tree The hypernym distance between pine and tree is: 3
Note: To avoid having to sudo to run your Ruby scripts that leverage WordNet, you will likely need to correct permissions to allow your user write access to the ruby-wordnet database files. I do not recommend adding your user to the group wheel, which exposes you to security vulnerabilities and/or prevent applications from loading plugins. For example, Safari won’t load plugins (Input Managers) if your user is a member of wheel.
Concluding Thoughts
I have a strong suspicion that the Ruby community would benefit from using MySQL for the WordNet database. There are already some projects that port WordNet to a MySQL database, such as wordnet sql builder. With a reasonable amount of effort the schema could be altered to conform to ActiveRecord conventions, making WordNet much more accessible.
Sorry, comments are closed for this article.