"regex for words"(语义替换) - 任何示例语法和库?



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

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

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

例如。"fast名词"到"fast名词[/em>",但"go fast"不会被转换(之后没有名词。
或者:"爱丽丝将演唱歌曲"到"由爱丽丝演唱歌曲"

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

这种语言处理的C#实现会非常巧妙,但我认为大部分工作都是制定正确的规则——保持规则的清晰和可理解似乎是一个开始。

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

开始研究的一个好地方是"WordNet"——这是一本语义词典,可以根据相似的含义将单词组合在一起,还可以用有用的方式记录单词之间的关系。

有很多利用WordNet语料库的软件项目,其中一个可能正是你所需要的。

如果你不局限于特定的语言,Haskell有Aarne Ranta的语法框架:

http://www.grammaticalframework.org/

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

SIL的CARLAStudio"计算机辅助相关语言适应"套件是一个很好的起点。或者SIL的Adapt It。SIL有大量的语言分析软件,这就是你看起来要走的方向。从不关心意义的正则表达式到可以处理语言分析的正则表达式,这无疑是一个巨大的飞跃。

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

我不知道有任何语法可以像您讨论的那样用于英语处理。您需要使用其中一个工具集(如WordNet)创建自己的DSL。

最新更新