是否存在可“编译”为多种自然语言的抽象语言?
这类可“编译”为多语种自然语言的抽象表示是真实存在的,已经有非常多成熟的落地实践,不是停留在概念层面的设想。
目前最通用的公开标准是抽象语义表示(Abstract Meaning Representation,简称AMR),设计逻辑和你给出的示例完全契合:
- 它不绑定任何一门自然语言的语法、词汇形态,用统一的结构化形式标记句子核心语义
- 核心结构以谓词为根节点,通过语义角色标签挂载施事、受事等句子成分,时态、语气、情态、否定等附加语义都可以作为属性挂在对应节点上
- 你示例里用的S-表达式写法和AMR的标记逻辑高度匹配,比如你写的基础结构:
(verb-love :subject person-1sg :object person-2sg)
对应AMR的标准标记就是以love-01为根,:ARG0(施事/主语)为第一人称,:ARG1(受事/宾语)为第二人称,后续对接不同语种的生成规则,就能直接输出英语I love you、法语Je t'aime、汉语“我爱你”等对应表达。你举的加将来时标记的例子:
(verb-love :subject person-1sg :object person-2sg :tense future)
只要给根节点加上将来时属性,生成英语就会输出I will love you,法语就会输出Je t'aimerai,完全符合预期。
除了AMR这类通用标准,大量多语种自然语言生成(NLG)系统也会自定义这类轻量抽象表示,这类表示普遍符合你提到的特性:
- 不强制要求统一语法形式,用S-表达式、JSON、YAML甚至自定义的标记格式都可以,只要能结构化存储语义关系和属性即可
- 不需要满足图灵完备要求,本质是语义的结构化载体,不需要支持循环、条件判断这类通用编程语言的特性,简单场景下甚至几十行脚本就能实现基础的“编译”功能:先从抽象结构里拿到核心谓词、各个句子成分、语法属性,再按目标语言的语法规则调整语序、做词汇的变位变格、拼接成通顺句子即可。
这类抽象表示和普通机器翻译的核心区别是,它站在比自然语言更高的语义层,不依赖某一门源语言,同一个抽象结构只要对接对应语种的生成规则,就能输出任意多语言的文本,还可以灵活调整输出的正式度、语气、句式风格。
注:你第二个代码示例里写的:object person-2g应该是笔误,对应第二人称单数的常规标记是person-2sg。
内容的提问来源于stack exchange,提问作者user16727914
相关产品推荐
相关产品推荐

