Ruby-LinkParser
This module is a Ruby binding for the link-grammar library, a syntactic parser of English.
Authors
- Michael Granger [email protected]
- Martin Chase [email protected]
Requirements
- Ruby 1.8.7 or 1.9.2
- link-grammar (version 4.7.0 or later) from the AbiWord project (http://www.abisource.com/projects/link-grammar/)
Installation
These instructions assume a UNIX or UNIX-like environment. I've built it on MacOS X, FreeBSD, and Ubuntu Linux. I'm not sure how to get this to build under Windows, as I don't have a Windows license with which to test it. Suggestions welcomed.
First, you'll need to install the Abiword link-grammar library that comes with this source (or download it yourself if you wish):
$ tar -xvzf link-grammar-4.6.5.tar.gz
$ cd link-grammar-4.6.5
$ ./configure; make; sudo make install
$ cd ..
Now build, test, and install the Ruby library:
$ rake
$ sudo rake install
If you've installed the link-grammar library someplace that isn't in your regular include path, you might have to tell the build system where to look:
$ rake -- --with-link-grammar-dir=/usr/local
Under MacOS X, unless you've taken extra steps to compile the link-grammar library as a universal binary, you'll probably also have to limit it to your machine's architecture:
$ ARCHFLAGS="-arch i386" rake -- --with-link-grammar-dir=/usr/local
That's it!
Example Usage
require 'linkparser'
dict = LinkParser::Dictionary.new( :screen_width => 100 )
sent = dict.parse( "People use Ruby for all kinds of nifty things." )
# => #<LinkParser::Sentence:0xcf8eb "LEFT-WALL people use Ruby for all kinds
# of nifty things . RIGHT-WALL"/2 linkages/0 nulls>
sent.subject # => "people"
sent.verb # => "use"
sent.object # => "Ruby"
puts sent.constituent_tree_string
# =>
# (S (NP People)
# (VP use
# (NP Ruby)
# (PP for
# (NP (NP all kinds)
# (PP of
# (NP nifty things)))))
# .)
puts sent.diagram
# =>
# +-------------------------------Xp------------------------------+
# | +----MVp---+----Jp----+ +------Jp-----+ |
# +----Wd---+--Sp--+--Os-+ | +-Dmc-+--Mp-+ +----A---+ |
# | | | | | | | | | | |
# LEFT-WALL people.p use.v Ruby for.p all kinds.n of nifty.a things.n .
Legal
For licensing information, see the LICENSE file.
For copyright and licensing information for link-grammar itself, see the LICENSE file in that distribution.
$Id$