
Directory structure overview:
-----------------------------

RelationExtractor.java:
	This is the main class, wrapping together all of the various
	functions.  It should be taken to be an "example" of how
	to use RelEx in other systems. Yet, it is fully functional, and
	implements main(), which accepts sentences and generates output
	of various forms, depending on the command-line flags.

algs:
	Code for applying the dependency relation detection patterns.
	Dependency relations are discovered by applying a series of
	pattern templates or 'rules' to a graph of the parsed text. The
	result of finding a pattern-match is that the resulting rule is
	applied, which casues the graph to be modified in some way.

anaphora:
	Anaphora resolution algorithm. Implements the Hobbs algorithm.

chunk:
	Code to generate lexical chunks, aka lexicalized stems or units
	or phrases. Mostly focused on phrasal verbs.

concurrent:
	Provide infrastructure for multi-threaded (parallel) execution.
	Not normally used or needed; intended only for improving
	performance for production servers.

corpus:
	Code to handle multiple-sentence corpuses. Includes a class to
	split a document into multiple sentences, and another to perform
	entity extraction. The current system uses OpenNLP for sentence
	detection, so this directory contains code to wrap the OpenNLP
	system.

entity:
	Mangle sentences to consolidate entities before passing a sentence
	to the parser.  The idea was to ease the burden on the parser;
	however, its not clear that there are any entity detectors that are
	actually better than the parser. The entity detection is supplied by
	systems outside of relex. The current implementation uses GATE.
	Obsolete, code was removed in November 2013. Can be recovered from
	RelEx version 1.4.2 or earlier.

feature:
	The core classes for representing the graph of linguistic
	relationships and features.  The graph of linguistics relationships
	is the central data structure around which RelEx operates.

frame:
	Code to provide semantic frame output, inspired by FrameNet markup.
	The actual implementation is a set of pattern-matching rules which
	are applied to the RelEx output. Obsolete, removed in Novemeber 2013.
	Can be recovered from RelEx version 1.4.2 or earlier.

morphy:
	A simple, easy-to-use class for finding the base forms (lemmas)
	of a word. The current system uses WordNet to determine the lemmas,
	and so most of the code here is a wrapper around WordNet.

output:
	A collection of disparate classes that display the RelEx graph in
	various formats. Notable are a set of classes that generate
	OpenCog hypergraphs.

parser:
	Interfaces to the link grammar parser. Two choices: an in-process
	JNI binding to the C-language liblink-grammar-java.so, and an
	out-of-process server, reachable via a socket interface.

parser-old:
	Old, deprecated interfaces to the link-grammar parser. DO NOT USE
	THESE IN NEW CODE! These are here for backwards compatibility only!

stats:
	Some simple classes providing very basic statistical support,
	including some TruthValue (a la OpenCog) classes.

tree:
	Routines to extract and manipulate the treebank style phrase tree
	of a given parse. The phrase tree is central to the Hobbs algorithm,
	and to lexical chunking. The PhraseLeader class provides head-word
	identification.

wsd:
	Simple word-sense disambiguation code; compares word usage in pairs
	of sentences. Crude experiment, deprecated.

