ACE:

the Answer Constraint Engine

Downloads

Please see the Getting Started section below.

About ACE

ACE is an efficient processor for DELPH-IN HPSG grammars, with support for most of the modern features these grammars require, including:

ACE is written in pure C and runs on the Linux and Mac OS X operating systems. Other UNIX operating systems are not officially supported, although ACE will likely work. ACE development began in 2004 for proprietary uses, but the software was not openly released until 2011. ACE is distributed under the MIT License.

The primary design goal for ACE was speed. ACE's parsing and generation performance are both about 15 times faster than the LKB. Parsing performance is comparable to PET (with ACE being significantly faster in certain common configurations).

Some additional information (with some overlap) is hosted on the DELPH-IN Wiki's AceTop page.

Getting Started

Linux x86-64 users and Mac OS X users can download the ready-to-run ACE binary from above, together with the appropriate ERG image. Users of other environments are more-or-less on their own in getting ACE compiled (hint: you'll need to install repp-0.2.2.tar.gz).

Here's a sample parsing session (user input in pink):

[sweaglesw@octopus ace-0.9]$ ./ace -g erg-trunk-x86-64.dat -1Tf
The quick brown fox jumped over the lazy dog.
SENT: The quick brown fox jumped over the lazy dog.
[ LTOP: h0 [ h ]
INDEX: e1 [ e SF: prop TENSE: past MOOD: indicative PROG: - PERF: - ]
RELS: < [ _the_q_rel CFROM: 0 CTO: 3 LBL: h3 [ h ] ARG0: x2 [ x PERS: 3 NUM: sg IND: + ] RSTR: h4 [ h ] BODY: h5 [ h ] ]
 [ "_quick_a_1_rel" CFROM: 4 CTO: 9 LBL: h6 [ h ] ARG0: e7 [ e SF: prop TENSE: untensed MOOD: indicative ] ARG1: x2 ]
 [ "_brown_a_1_rel" CFROM: 10 CTO: 15 LBL: h6 ARG0: e8 [ e SF: prop TENSE: untensed MOOD: indicative ] ARG1: x2 ]
 [ "_fox_n_1_rel" CFROM: 16 CTO: 19 LBL: h6 ARG0: x2 ]
 [ "_jump_v_1_rel" CFROM: 20 CTO: 26 LBL: h9 [ h ] ARG0: e1 [ e SF: prop TENSE: past MOOD: indicative PROG: - PERF: - ] ARG1: x2 ]
 [ _over_p_dir_rel CFROM: 27 CTO: 31 LBL: h9 ARG0: e10 [ e SF: prop TENSE: untensed MOOD: indicative PROG: - PERF: - ] ARG1: e1 ARG2: x11 [ x PERS: 3 NUM: sg IND: + ] ]
 [ _the_q_rel CFROM: 32 CTO: 35 LBL: h12 [ h ] ARG0: x11 RSTR: h13 [ h ] BODY: h14 [ h ] ]
 [ "_lazy_a_1_rel" CFROM: 36 CTO: 40 LBL: h15 [ h ] ARG0: e16 [ e SF: prop TENSE: untensed MOOD: indicative ] ARG1: x11 ]
 [ "_dog_n_1_rel" CFROM: 41 CTO: 45 LBL: h15 ARG0: x11 ] >
HCONS: < h4 qeq h6 h13 qeq h15 > ]


NOTE: 1 readings, added 5224 / 3439 edges to chart (892 fully instantiated, 326 actives used, 828 passives used)	RAM: 19023k
^D
NOTE: parsed 1 / 1 sentences, avg 19023k, time 0.15492s
[sweaglesw@octopus ace-0.9]$ 

Here, we used the -1 option to request only a single result, the -T option to suppress output of derivation trees, and the -f option to ask ACE to print each MRS EP on its own line, for legibility. Here's a more complicated command pipeline, showing how to use the parsing and generation capabilities of ACE together to paraphrase an input:

[sweaglesw@octopus ace-0.9]$ echo "The quick brown fox that jumped over the lazy dog took a nap." | ./ace -g erg-trunk-x86-64.dat -1T 2>/dev/null | ./ace -g erg-trunk-x86-64.dat -e
NOTE: input semantics had 12 EPs and 24 variables
The brown quick fox, that jumped over the lazy dog, took a nap.
The quick brown fox, that jumped over the lazy dog, took a nap.
The brown quick fox, who jumped over the lazy dog, took a nap.
The quick brown fox, who jumped over the lazy dog, took a nap.
The brown quick fox, which jumped over the lazy dog, took a nap.
The quick brown fox, which jumped over the lazy dog, took a nap.
The brown quick fox that jumped over the lazy dog took a nap.
The quick brown fox that jumped over the lazy dog took a nap.
The brown quick fox which jumped over the lazy dog took a nap.
The quick brown fox which jumped over the lazy dog took a nap.
The brown quick fox who jumped over the lazy dog took a nap.
The quick brown fox who jumped over the lazy dog took a nap.
NOTE: 524 passive, 602 active edges in final generation chart; built 683 passives total. [12 results]
NOTE: generated 1 / 1 sentences, avg 12081k, time 0.11495s
NOTE: transfer did 2163 successful unifies and 2007 failed ones
[sweaglesw@octopus ace-0.9]$ 

For more details and documentation, please see the documentation on command-line options and the grammar configuration file.

Troubleshooting

ACE requires execute permission for temporary files. This is used for dynamically linking in quickcheck code from the compiled grammar image. If your /tmp/ does not have execute permission, try setting the TMPDIR environment variable to the location of a directory where you do have execute permission.


©2018 Woodley Packard