语法树,一个小把戏
发布于

前几天跟Padrick说起句法问题,然后我很无聊的为博客和论坛添加了按语法树输入文本的支持,一方面温习一下句法结构,同时也熟悉一下HTML5的canvas。

现在,我在写博客或你在 论坛 发帖时,假如碰到容易产生歧义的句子,便可以按通行的方法对句子的语法结构进行标注,凡经过标注的句子,读者可以调看直观的语法树图形,具体用法如下:

1)需要标注的句子首先用:{ . SNL/<sentence>/ . }括起来;

2)语法树的每个节点这样标注:[XX:<content>],其中XX是节点类型,命名采用语言学中的通行方式,常见的有下列几种: S: 句子(sentence),假如有子句,可在S后面加数字以示区别; N: 名词(noun) V: 谓词(verb) A: 形容词(adjective) Adv: 副词(adverb) P: 介词(preposition) Con: 连接词(conjunction) NP: 名词短语(noun phrase) VP: 谓词短语(verb phrase) AP: 形容词短语(adjective phrase) AdvP: 副词短语(adverb phrase) PP: 介词短语(preposition phrase) 3)分叉:因为我实现的功能只是树形数据结构的处理和图形化显示,所以并不涉及语言学知识,不过我觉得按[[Noam Chomsky]]的[[phrase structure grammar]],好像树的所有分支都应该是二叉的,只有一个例外(对此我不甚确定),就是包含了连接词(Con)子节点的分支,可以是多叉的。

4)移位、复用和踪迹:

4.1)移位:被移位的元素(比如英语疑问句中的前置代词)将成为孤立节点,其“XX”用“#n”标记,n是序数,用于与其它移位元素区分,在图形中,移位节点将以棕色显示;

4.2)复用:在句子其他位置将被其他隐含引用的节点,其“XX”后面加上“(n)”标记,n是序数;

4.3)踪迹:隐含引用了被移位的节点或其他可复用节点的地方,引用处以“(Tn)”标记,n是序数,且与(4.1)和(4.2)中的n相对应;

5)文本显示:在博客文章和论坛帖子中,被标记过的文本将被标上虚线下划线,其右侧将出现一个 图标;

6)图形显示:点击上述图标将弹出语法树窗口,该窗口不仅用于显示,也可在文本框内对文本进行标记,然后点击“解析”查看相应图形; 提示 :由于弹出窗口经常会被浏览器拦截,故在首次打开时,你需要手工撤销拦截(最好指示它以后不拦截headsalon.org的弹出窗口);

7)示例:我在 这篇文章 的倒数第二节提供了一个实例,我把它复制在这儿:

这个是原始文本: 不过这里仍需指出一条界线,{ . SNL/[S:[NP:[AP:可以被谴责的][N:行为]][VP:[Adv:未必][VP:[V:是][AP:[AP(1):[A:有罪的][Con:或者][AP:[VP:[V:构成][NP:(T2)]][Sfx:了][#2:[A:对既有权利的][N:侵犯]]]][Con:,][AP:[VP:[PP:[AP:(T1)][P:因而]][VP:[V:需要][NP:[N:加以司法矫正][Con:或][N:施以惩罚]]]][Sfx:的]]]]]]/ . }。 这是被解析后的文本: 不过这里仍需指出一条界线,{SNL/[S:[NP:[AP:可以被谴责的][N:行为]][VP:[Adv:未必][VP:[V:是][AP:[AP(1):[A:有罪的][Con:或者][AP:[VP:[V:构成][NP:(T2)]][Sfx:了][#2:[A:对既有权利的][N:侵犯]]]][Con:,][AP:[VP:[PP:[AP:(T1)][P:因而]][VP:[V:需要][NP:[N:加以司法矫正][Con:或][N:施以惩罚]]]][Sfx:的]]]]]]/}。