Transductor logo

Transductor

Not for the faint of heart, Transductor is a finite-state morphophonology engine mainly for linguistics. If you have never heard of Kimmo Koskenniemi or the PC-KIMMO software from SIL International, or the Xerox Finite-state Tools then you probably have no use for it.

Transductor was originally a library version of PC-KIMMO; basically a KIMMO API. Originally a static library of routines for deriving strings based on an input string and any number of finite-state automata and/or transducers, plus vestigal support for morphology via RTN/ATN grammars. I realized some time ago that trying to hand tune a set of two-level rules for Sanskrit (one of my target languages) would be sheer folly. I finally forced myself to read and understand Kaplan & Kay, which led to a better understanding of the kinds of things the folks at Xerox are doing (à la Beesley and Karttunen).

I am in the middle of essentially my fourth rewrite of Transductor, the first two being in Mac OS Classic C, the second a partial proof-of-concept implementation in Ruby (!), and the current version is in Objective-C and currently runs (when it runs at all) as a command-line Unix application under GNUStep; it will eventally migrate to Mac OS X as a framework. And yes, it is basically an open source reimplementation of Xerox' xfst, which I suspect will remain closed source for the forseeable future.

Update December 2005 Transductor's getting closer to a developer release. It's running on OS X and GNUstep, compiling context-sensitive rewrite rules (no parallel replacement yet, sorry), and no longer leaking (much) memory. I wrote a PERL script to autogenerate a testsuite to validate it against xfst.
Here's a (quite large) screenshot of one of my development machines running it.
I couldn't have done it without Graphviz!

Finite-state machines are complicated. They should cost, like, a hundred dollars each.


Home

Valid XHTML 1.0!