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

时间:2008-10-23 05:45:36

标签: c# language-agnostic parsing syntax semantics

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

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

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

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

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

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

6 个答案:

答案 0 :(得分:3)

答案 1 :(得分:2)

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

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

答案 2 :(得分:2)

如果你没有与特定语言联系,Haskell有Aarne Ranta的语法框架:

http://www.grammaticalframework.org/

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

如果您想要更自然的语言解析/转换功能,可以试试C# port of OpenNLP

答案 5 :(得分:-1)

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