本标签数据、下拉列表项中的文本数据以及<lable>元素中的文本标签数据,根据不同的表现 形式进行相应的数据处理。 Case1 普通的文本标签数据:如果处理”>”和”<”之间的有效数据单元之前,没有遇到 <select>标记和<lable>标记则是普通的文本标签数据,处理时新建一个存储单元存储对应的 150 值,然后添加到属性链表中。对应的赋值如下:context=有效数据单元,label=预处理后的文 本标签数据。这里的预处理主要是一些特殊符号的过滤和大小写的转换 Case2 下拉列表项中的文本数据:如果处理”>”和”<”之间的有效数据单元之前,遇到 <select>标记而没有</select>标记则是下拉列表项中的文本数据,处理时取属性链表中最后 一个存储单元,把对应的文本信息内容加入到存储单元中的selectItemList 的字符串链表中。 155 Case3 <lable>元素中的文本标签数据:如果处理”>”和”<”之间的有效数据单元之前,遇 到< lable >标记而没有</ lable >标记则是<lable>元素中的文本标签数据,作如下处理:取属 性链表中最后一个存储单元,如果该单元的id 值不空,且其它值全空,则对该存储单元作 如下赋值:context=有效数据单元,label=预处理后的文本标签数据。否则,处理方式与普通 文本标签数据一致。 160 (2) 处理符号”<”和”>”之间的有效数据单元:这部分数据单元包括各种表单的控件的内 部表示,如<form></form>标记,<input></input>标记,<selelct></select>标记以及布局标记 <table></table>,<tr></tr>,<td></td>等,不同标记的处理方式如下: Case1 <form></form>标记:提取<form>标记中的action 属性值、name 属性值、method 属性值作为查询接口模式IS 的查询接口表单的信息值,</form>标记则说明查询接口的解析 165 过程结束。 Case2 <input></input>标记:提取<input>标记中的type 属性值,过滤掉类型为reset、 submit、hidden、image、button 和file 的控件。如果存储类型为text、checkbox 或者radio 的 <input>标记,那么提取其中的type、name 以及id 属性值。如果遇到<input>标记时已经遇到 <lable>标记,则为<lable>元素中关联的控件标记,取属性链表中的最后一个存储单元,存 170 储控件标记相应的属性值,否则新建一个存储单元存储控件标记的属性值。 Case3 <selelct></select>标记:处理<select>标记时,新建一个存储单元存储<select>标记 中的name 属性值,并且type 类型赋值为select,然后再处理嵌在<selelct></select>标记中的 <option></option>标记,提取内部的value 属性值,添加到存储单元中的selectValueList 的字 符串链表中,遇到</select>则说明下拉列表的属性信息已经处理完毕,将存储单元添加到查 175 询接口表单的属性链表中。 Case4 布局标记:布局标记是为了记录文本标记和控件标记在查询接口表单中的位置信 息,遇到<table>标记,则blockId 加1,rowId 置0;遇到<tr>标记,则rowId 加1,columnId 置0;遇到<th>或<td>标记时,则columnId 加1;遇到</table>, </tr>, </td>或者</th>标记时, 则相应的块、行和列解析结束。在解析过程中处理的有效数据单元的布局信息,在添加相应 属性信息时,将布局信息location 添加到存储单元中180 的blockId、rowId 和columnId 中。 2.3 Deep Web 查询接口表单属性的抽取 在经过查询接口解析后,得到各个标记的属性信息。查询接口属性抽取的目的是根据标 记的属性信息和查询接口表单属性的表现形式进行表单视觉单元中的文本信息单元(TU)、值 输入单元(VU)和约束选择单元(CU)的结合,从而得到查询接口的表单属性[6][7][8]。 185 文本信息单元(TU)的内部表现形式即文本标记(TT);值输入单元(VU)的内部表现形式是 type 为text 的<input>标记和type 为select 的<select>标记,这两种标记是控件标记(KT)的两 种形式;约束选择单元的内部表现形式是type 为radio 和checkbox 的<input>标记与对应的 文本标记(TT)的组合,因此约束选择单元的获得需要进行标记的组合,其它视觉单元则是一 一对应的。表单属性的抽取的关键是正确的选择文本标记和对应的控件标记进行结合,本文 190 从查询接口内部编码和查询接口视觉单元特征两个角度进行文本标记与控件标记的结合。 根据对内部编码的观察,发现一部分查询接口内部编码能够反映出查询接口编码者的真 实意图。例如图4(a)中内部控件标记的name 值是txttitle 而它关联的文本标记是“Title:”,字 符串的相似度很高,或者说文本标记在转换为小写并且去掉符号“:”后是name 值的字串。图 4(b)中则是根据<lable>元素把文本标记First Name 和对应的控件标记关联起来,这也是查询 195 接口编码者使用<lable>元素的目的。 (a) (b) 200 图4 查询接口内部编码片段 Fig. 4 Internal code fragment of query interfaces 大多数查询接口编码者在编写查询接口内部代码时,往往会把想关联的解释性文本标签 作为他对应控件的内部名称,或者取一个相似的字符串作为内部名称,也有直接使用表单元 205 素<lable>直接把解释性的文本标签和对应的表单控件进行关联,因此,基于这种观察和认识, 本文定义了内部编码规则指导文本标记和控件标记的结合,从而得到表单的属性。内部编码 规则如下: 规则1 如果查询接口中文本标记的字符串和控件标记name属性值的字符串的相似度大 于特定阈值时,则把文本标记和对应的控件标记进行结合,组成一个表单的属性。 210 规则2 如果查询接口文本标记和控件标记在<lable>元素之间,则有<lable>元素的应用 把文本标记和对于的控件标记进行结合,组成一个表单的属性。 规则3 如果查询接口文本标记在<lable>元素之间,则通过<lable> 元素for 属性指定的 控件Id 把文本标记和对应有相同Id 的控件标记进行结合,组成一个表单的属性。 在规则1 中提到的字符串相似度用字符串编辑距离表示,并且在使用规则1 时,有额外 215 的限制条件:如果文本标记和控件标记的blockId 不同或者rowId 和columnId 都不同时,即 使符合规则1 也不进行结合。因为一般情况下,查询接口编码者不会用一个文本标记去解释 不同块中或同一块中行列都不对齐的控件标记。 (a) (b) 220 (c) (d) 225 (e) (f) 图5 查询接口表单属性片段 Fig. 5 Attribute fragment of query interfaces 230 对其它一些查询接口表单内部规则不能指导表单属性的抽取,从视觉单元的角度观察查 询接口表单,基于查询接口表单属性的4 种主要表现形式,发现多数表单属性中文本标记和 控件标记是左对齐或上对齐的,例如图5 中(a), (c), (d), (,f)均为左对齐,(b), (e)均为上对齐。 表单属性中的文本标记和控件标记在同一块中的同一行或在同一块中相邻行的同一列(例如 235 图5(e)),视觉单元中的约束选择单元多在值输入单元的后面(例如图5(f))。根据观察和统计 视觉单元的特征信息得到视觉单元上的启发式规则如下: 规则1 如果在同一块中的同一行中存在一个文本信息单元,其后紧邻一个值输入单元 或一个约束选择单元,则将其组合成表单属性。 规则2 如果在同一块中的同一行中出现n(n>1)个文本信息单元,紧邻下一行出现n 个 240 值输入单元,那么根据相应列对齐关系组合成n 个表单属性。 规则3 如果在同一块一行中只有一个文本信息单元,紧邻下一行中以一个或多个值输 入单元开始,则将该文本信息单元与值输入单元组合成一个表单属性。 规则4 如果在同一块中的同一行中存在一个文本信息单元,其后有多个值输入单元, 则将文本信息单元与值输入单元组合成一个表单属性。 245 规则5 如果一行中有一个约束选择单元,但是没有文本信息单元,则将该约束选择单 元添加到同一块中最近组合的表单属性中。 查询接口表单属性抽取算法如下: 算法2 查询接口表单属性抽取 250 输入:存储标记信息的结果链表resultList 输出:存储表单属性的链表attrList 算法开始 1 tagSet.clear();/tagSet 标记集合清空/ 2 Do/循环处理resultList 中的每个标记/ 3 tagSet.add(nextTagsInfor(255 resultList));/顺次取同一行中所有标记/ 4 innerRule = judge(tagSet); /判断标记集合符合的内部编码规则/ 5 If(innerRule!=0) /判断是否符合内部编码规则/ 6 Then attr=innerMerge(tagSet, innerRule); /根据内部编码规则结合得到表单属性/ 7 tagSet.clear();/抽取表单属性后,标记集合清空/ 260 8 attrList.add(attr); /表单属性添加到链表中/ 9 Else 10 visualRule = judge(tagSet); /判断标记集合符合的视觉规则/ 11 If(visualRule!=0) 12 Then attr=visualMerge(tagSet, visualRule);/根据视觉规则结合得到表单属性/ 265 13 tagSet.clear();/抽取表单属性后,标记集合清空/ 14 attrList.add(attr); /表单属性添加到链表中/ 15 Endif 16 Endif 17 While(resultList) /结果链表取空结束/ 270 算法结束 在对查询接口表单进行表单属性抽取时,内部编码规则的优先级高于视觉单元的规则, 因为内部编码的规则能真实反映出查询接口内部编码者的设计意图,而视觉单元的规则由于 一些不规范的设计出现抽取的错误。 2.4 Deep Web 查询接口模式的获得 275 通过查询接口表单属性的抽取,可以将文本标记和控件标记结合组成一个表单属性。一 个表单属性中可能会有多个控件标记,但是解释性的文本标记只有一个。有些表单属性是独 立的,但是某些表单属性因其文本标记的语义关系需要结合起来表示一个查询条件。Deep Web 查询接口模式抽取的目的就是发现表单属性中文本标记的语义关系,从而在语义层次 上再次结合表单属性,得到查询接口的模式。此处的语义关系指表单属性中文本标记的语义 280 关系。基于以上观察,将含有语义关系的查询接口表单属性片段分为3 种类型: Type1 属性关系(attribute-of):一个文本标记表示的语义是另一个文本标记的属性,在 领域本体中的表现形式就是一个概念和另一个概念的关系是attribute-of。如图6(a)中文本标 学术论文网Tag:代写论文 代写经济论文 代写代发论文 职称论文发表 |