首页 > 技术文章 > 清华树库规则的提取

zidiancao 2014-02-27 10:16 原文

  近期准备句法分析的前期工作,要进行句法分析很自然的就需要句法规则,我们用的是统计的方法,打算从清华大学的树库中抽取规则。早期也曾将清华大学的树库解析成树结构,但是直观解析出的结果是多叉树,提取规则的时候不是很方便,现在把多叉树转换成了二叉树,提取起规则来就方便多了。 

  多叉树与二叉树之间的转换其实比较简单,多叉树看起来更直观具体些,二叉树呢,每个节点最多只能有两个子节点,若一个节点的孩子节点个数大于两个就不好直接处理,二叉树的处理方法是左右结点明确区分开来,左节点为第一个孩子节点,右节点为第一个兄弟节点。那么两者就可以形成映射,互相转换。

  举一个例子,直观点(后面这个二叉树的图我承认画的是有点搞笑,要是学霸同学肯定受不了,直到画美为止,咱们意会下就可以了"^_^")

    

 

  原来的处理程序,多叉树结构设计的就比较粗糙,二叉树的时候仿了多叉树,稍有精简,但我觉得没有做到成为精品的目标。两者的处理过程基本一致,唯一值得一说的是,自己提出了一个新的概念——“真正父节点”,这个真正父节点就是多叉树中父节点的概念,二叉树找真正父节点就是判断这个子节点是不是父节点的左节点,若是,则该子结点的真正父节点就是它的直接父节点,否则它的真正父节点和它的上层父节点的真正父节点是一样的,处理方法也不复杂,递归一下就可以了。二叉树中向一个节点的中插入结点,先判断这个节点的左孩子节点是否为空,若是为空就插入左节点,否则就插入右节点,若是右节点不为空,就迭代下去,直到遇到第一个右节点为空的节点,然后插入该节点的右节点。

清华树库的标注集介绍

16种成分标记和27种关系标记

树库的范例抽取一条:

[zj-XX [dj-ZW 这/rN [vp-PO 是/vC [np-DZ 总量/n 的/u 计划/n ] ] ] 。/。 ]

 

 

处理的结果是:

zj-XX->dj-ZW 。/。

dj-ZW->这/rN vp-PO 

vp-PO->是/vC np-DZ 

np-DZ->总量/n 的/u 计划/n

 

推荐阅读