Press "Enter" to skip to content

Nala 标注:将自然语言变为编程语言(NLP / 语言学,中英文例子)

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

本文提出名为 Nala 的标注,将自然语言变为编程语言语句。这名字来自 Natural Language 的前几个字母,听着还挺顺,不妨就这幺称呼了。

 

从语言学角度,常见的编程语言是 SVO 和 VSO,例如:

 

A.add(10) 是 S.V(O) // add(A, 10) 是 V(S, O)

 

而中英文都属于 SVO,例如:

 

我.爱(你)  //  I.love(you)

 

这幺写,程序员都懂。同理:

 

我.给(他, 一支笔)  //  I.give(him, a pen)

 

如果继续细化,按照编程思维,应该是:

 

我.给(他, 笔.一支())

 

不过这个更改了语序。我们希望保留原语序,所以,写成:

 

我.给(他, <一/支>笔)

 

这里 < > 是借用 C++ 模板符号,里面放修饰(形容词、副词、量词、时态等等)。这里 / 是分词标记。

 

看个经典案例,【王冕三岁死了父亲】,没考虑过这个句子的标注法是没有灵魂的。

 

如果按照我的语感,我会认为它的外围是个主题句,”王冕は”(借用日文格助词)。

 

于是,粗略标注如下:

 

王冕.#<三/岁>(死了父亲)

 

其中 # 代表省略的动词,类似英文的 be。

 

括号中,是复杂的语法现象,众说纷纭。对此,我会这样细化:

 

王冕.#<三/岁>(#.死<了>(父亲))

 

括号中的 #,代表某个特殊 context(就像语言模型中的隐状态),可让后续动词的 S 和 O 颠倒。需要说明,Nala 的原则是保持原语序,所以需要引入 #,而不能调整语序。

 

换种写法,【王冕三岁时,他的父亲死了】,标注:

 

王冕.#(三/岁).时,<他的>父亲.死<了>()

 

其中,我认为”时”是关联词,所以直接写,代表这个 token 修改语言模型的 context。

 

如果你认为”时”是修饰,那幺就标【王冕.#(三/岁)<时>】。

 

Nala 的宗旨是简单,够用就行,不做句法结构分析。我们的目标是:

适合人类阅读和运用,毋需构造详尽的句法树。
简单,保持原语序
。如果遇到复杂之处,可以不标注,直接保留原始词句。
适合作为语言模型的输入。减少自然语言的歧义,给机器提供参考。
适合作为 NLP IR(中间语言),适合翻译到多种语言。
适合描述游戏或故事中的人物行为。

欢迎大家讨论 Nala 标注的设计和改进。下面看更多例子。

 

下面两种标注,都可以,看你希望强调哪种语义:

 

我<在/家>.吃(晚饭)  // 我.<在/家>吃(晚饭)

 

注意,英文的惯用语序不同,这是中英文的重要区别:

 

I.have(dinner)<at home>

 

不过,我认为,可以借用文言文,精确对齐中文和英文:

 

我.吃(晚饭)<于/家>

 

根据我的实验,在英文中,只有少量结构难以精确对齐到中文,以后写写。

 

顺便一提,根据我的实验,日文句子,也可以用中文精确对齐,以后写写。

 

继续举例:

 

我.#<比/他>(高)
我.#(高)<于/他> // I.am(taller)<than him>

 

粗略标注(语气词直接写):

 

这件事.#(你也知道).吧

 

细致标注:

 

<这件>事.#(你.<也>知道()).吧

 

被动句(我认为,中文被动句,是用介词短语修饰,类似 by me):

 

酒.<被.我>#(喝<完/了>)

 

更多的中文语法现象,只粗略分析,欢迎讨论:

 

<这碗/猪都不喝的>汤.#(你.<还是>倒<了>().吧))
小张.#(把.眼睛.<哭>肿<了>())
他.<今年/天天>吃<食堂>()
这女孩.#(<见过的>#.<都>说(漂亮))
如果.#.可以(<重新>选择).那幺.你.<会>看好(谁)
如果 #.可以(<重新>选择) 那幺 你.<会>看好(谁) // 省略累赘的“.”

 

英文的例子:

 

I.agree()
#.Call(me, Ishmael)  //  隐藏的主语是 You
Please #.go()  //  隐藏的主语是 you
What #(<a nice> day)!
Isn't it.#(great)?

 

从句的例子:

 

Bob.gets(excited)<when he.watches(<action>movies)>

 

欢迎大家在评论区,讨论 Nala 标注的设计和改进。

 

如果对前文的标注有新的看法,也请畅所欲言。

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注