所谓节点编码就是从A-Z 26个字母当中给每一个节点标上节点位置与26个字母位置一样的字母,例如第一个节点就是A,第二个节点就是B,以此类推,当然,我们的语义树可能会遇到这种问题,就是说某一个节点的位置超过了26位怎么办呢,所以,在做之前,首先就要找出这些超过26位的节点,经过与陈总的商量,要求语料组将位置超过26位的那些节点重新挂到同类的子节点中去(这个工作逻辑语料组比我清楚)。
下面我以形容词为例详细介绍
每一个节点的编码都是相对于该节点的父亲节点而言的。比如红色标识的节点“号码”,它的根节点是“形容词”,但是它的父亲节点是“名称号码”,所以说,“号码”节点的节点编码是父亲节点的第二个孩子,第二个位置,它的字母编码就是B了。再如第二个红色圈着的节点“感觉有必要的”,它的父亲节点是“一般事件的认知属性”,它是父亲节点的第三个位置的孩子,所以它的字母编码就是C。呵呵,这里的节点字母编码应该理解清楚了吧。
当每一个节点的字母编码都编完之后,接下来就要做第二件事情了,就是说将此节点 的节点路径弄出来。也就是从该节点的根节点在到根节点的孩子节点一直到该节点,得到这些节点的字母,然后从根节点的字母一直累加到该节点的字母。整个过程就是这样了。
继续以红色部分的节点为例子。
例如节点“号码” 她的根节点“形容词”的字母是C(因为是第三个位置)
,然后 根节点的展开的孩子节点是“性状形容词”,它的字母是A(根节点的第一个孩子),
“性状形容词”节点展开的孩子节点是“共有属性的形容词”,字母为A,
“共有属性的形容词”节点展开的下一个孩子节点是“名称号码”,字母为C(第三个孩子节点),
然后,“名称号码”下就找到了“号码”节点,字母为B(第二个孩子节点)。
根据以上步骤得到的节点字母,所以说“号码”节点的节点路径就是“CAACB”.
其他的节点路径也都是这样处理的。
解决方案 »
- 求一个存储过程
- 如何判断一个日期到指定的月份时计算年数
- 对一个表的查询结果取交集,分不多,高手请指教!
- SQL Server数据仓库面试题
- 这样的结果如何处理?
- pclint工具怎样设置才能识别EXEC SQL?
- 看到绝大多数的金融系统都是有Oracle和Sybase的,几乎没有用MS的。有这方面的专家可以给我提些意见吗?
- SQL Server 2000安装时选择的是WINDOWS用户,如果改为SQL用户登录?
- win2000+delphi6+sql server2000到底能不能用LOOKUP字段?
- 求救!我的SQL SERVER数据库密码忘了,我该怎么办???
- 请问如果在MySQL里面做VBA的接口。
- sql2005+windows2003出现用户已满怎么解决
create table tb(节点ID int,父节点ID int,节点名称 nvarchar(10))如此表结构,在插入数据后,可以用递归来设置节点位置:;with cte as(
select 'A' as 编码,* from tb where 父节点ID is null
union all
select char(ascii(a.编码)+1),b.* from cte a inner join tb b on a.节点ID=b.父节点ID
)
select * from cte