“词汇的正则表达式”(语义替换) – 任何示例语法和库?

我正在寻找合成示例或常用技术,在给定过程语言的情况下对单词而不是字符进行正则表达式样式转换。

例如,要跟踪复制,可能需要创建具有相似含义但具有不同单词选择的文档。

我希望能够简明地定义我可以应用于文本流的这些可能的转换。

例如。 “快速名词 ”改为“快速名词 ”,但“ 走得快 ”。 不会被改变(之后没有名词。
或者:“爱丽丝会唱歌”到“ 歌曲将由爱丽丝演唱”

我希望这可以在语法检查器中完成,例如检测被动语态。

这种语言处理的AC#实现非常简洁,但我认为任何努力的大部分都是正确的规则 – 保持规则清晰易懂似乎是一个开始的地方。

您可以尝试Jason Rennie> WordNet-QueryData-1.47> WordNet :: QueryData

开始研究的一个好地方是“Word Net” – 它是一个语义词典,通过类似的含义将单词组合在一起,并以有用的方式记录单词之间的关系。

有许多利用Word Net语料库的软件项目,其中一个可能是你需要的。

如果你不依赖于某种语言,Haskell拥有Aarne Ranta的Grammatical Framework:

http://www.grammaticalframework.org/

明确设计用于生成此类自然语言处理的解析器等。

一个好的起点是SIL的CARLAStudio用于其“计算机辅助相关语言适应”套件。 或者SIL的适应它 。 SIL拥有大量的语言分析软件,这是您的目标。 对于能够处理语言分析的东西来说,它肯定是正则表达式的一大跳跃,它不关心意义。

如果你想要一些更健壮的自然语言解析/转换,你可以尝试OpenNLP的C#端口 。

我不知道您讨论的英语处理存在任何语法。 您需要使用其中一个工具集(例如Word Net)创建自己的DSL。