<p>I'm looking for syntatic examples or common techniques for doing regular expression style transformations on words instead of characters, given a procedural language. </p>

<p>For example, to trace copying, one would want to create a document with similar meaning but with different word choices.</p>

<p>I'd like to be able to concisely define these possible transformations that I can apply to a text stream.</p>

<p>Eg.  "fast <em>noun</em>" to "rapid <em>noun</em>", but "go fast." wouldn't get transformed (no noun afterwards.<br>
Or:  "Alice will sing <em>song</em>"  to "<em>song</em> will be sung by Alice"   </p>

<p>I'd expect this to be done in grammatical checkers, such as detecting passive voice.   </p>

<p>A C# implementation for this sort of language-processing would be really neat, but I think the bulk of any effort is coming up with the right rules - Keeping the rules clear and understandable seems like a place to begin.</p>

A good place to start would be SIL's
CARLAStudio
for its "Computer Assisted Related Language Adaptation" suite. Alternatively SIL's
Adapt It
. SIL has a huge range of linguistic analysis software, which is the direction you appear to be going. It's certainly a big jump from regular expressions, which don't care about the meaning, to something that can handle linguistic analysis.