本文整理汇总了Python中util.ElementHelper.get_element_depth方法的典型用法代码示例。如果您正苦于以下问题:Python ElementHelper.get_element_depth方法的具体用法?Python ElementHelper.get_element_depth怎么用?Python ElementHelper.get_element_depth使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类util.ElementHelper
的用法示例。
在下文中一共展示了ElementHelper.get_element_depth方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: get_clustered_records
# 需要导入模块: from util import ElementHelper [as 别名]
# 或者: from util.ElementHelper import get_element_depth [as 别名]
def get_clustered_records(cls, doctree):
#get level_nodes_mapping
all_level_nodes = cls.bfs_tree(doctree)
root = ElementHelper.get_root(doctree)
body = ElementHelper.get_body(doctree)
#get max level and min level
upper_bound = int(ElementHelper.get_element_depth(root))+1
low_bound = int(body.get(px))+1
for level in range(low_bound, upper_bound):
level_nodes = all_level_nodes[level]
#if parent is record node, then do not consider its children
level_nodes = [node for node in level_nodes if not cls.is_node_or_ancestor_record(node)]
for j in range(1,len(level_nodes)-1):
left_node = level_nodes[j-1]
#横向比较
right_bound = min(len(level_nodes), j+5)
right_nodes = level_nodes[j:right_bound]
#纵向比较
down_nodes = right_nodes[0]
right_nodes.extend(down_nodes)
for right_node in right_nodes:
if cls.similar_check(left_node, right_node):
left_node.set(kg_record_mark,'1')
right_node.set(kg_record_mark, '1')
break
record_groups = cls.merger_sibling_record_node(doctree)
return record_groups
示例2: get_clustered_records
# 需要导入模块: from util import ElementHelper [as 别名]
# 或者: from util.ElementHelper import get_element_depth [as 别名]
def get_clustered_records(cls, doctree):
#get level_nodes_mapping
all_level_nodes = cls.bfs_tree(doctree)
root = ElementHelper.get_root(doctree)
body = ElementHelper.get_body(doctree)
#get max level and min level
upper_bound = int(ElementHelper.get_element_depth(root))+1
low_bound = int(body.get(px))+1
#记录相似的节点
cluster={}
for level in range(low_bound, upper_bound):
level_nodes = all_level_nodes[level]
#if parent is record node, then do not consider its children
level_nodes = [node for node in level_nodes if not cls.is_node_or_ancestor_record(node)]
#在同一个父亲节点下进行比较
# tag_names = set([node.getparent() for node in level_nodes])
# tmp = {}
# for tag in tag_names:
# for node in level_nodes:
# tmp.setdefault(tag, []).append(node)
tmp = cls.segement(level_nodes)
for k, nodes in tmp.items():
# if len(nodes)==1:break
first = None
node_set = set()
for i in range(1,len(nodes)):
if nodes[i].get(kg_record_mark)=='1':
continue
left_node = nodes[i-1]
# 和集合类的所有元素比较,查看是否有相同的
right_nodes=nodes[i:]
for node in right_nodes:
if cls.similar_check(left_node, node):
if first is None:
first = left_node
node_set.add(nodes[i-1])
left_node.set(kg_record_mark, '1')
node.set(kg_record_mark, '1')
node_set.add(node)
if first is not None:
cluster[first]=node_set
record_groups = cls.merger_sibling_record_node(doctree, cluster)
# record_groups = cluster
record_groups = {k:v for k,v in record_groups.items() if k.get(kg_record_mark)=='1'}
return record_groups
示例3: get_clustered_records
# 需要导入模块: from util import ElementHelper [as 别名]
# 或者: from util.ElementHelper import get_element_depth [as 别名]
def get_clustered_records(cls, doctree):
#get level_nodes_mapping
all_level_nodes = cls.bfs_tree(doctree)
root = ElementHelper.get_root(doctree)
body = ElementHelper.get_body(doctree)
#get max level and min level
upper_bound = int(ElementHelper.get_element_depth(root))+1
low_bound = int(body.get(px))+1
for level in range(low_bound, upper_bound):
level_nodes = all_level_nodes[level]
try:
next_level_nodes = all_level_nodes[level+1]
except KeyError:
next_level_nodes=None
#if parent is record node, then do not consider its children
level_nodes = [node for node in level_nodes if not cls.is_node_or_ancestor_record(node)]
for j in range(1,len(level_nodes)-1):
left_node = level_nodes[j-1]
#将横向名称相同的节点放到一起进行比较
# right_bound = min(len(level_nodes), j+5)
# right_nodes = level_nodes[j:right_bound]
# #纵向比较
# down_nodes = right_nodes[0]
# right_nodes.extend(down_nodes)
right_nodes = [node for node in level_nodes[j:] if node.tag==left_node.tag]
#纵向查找
# if next_level_nodes is not None:
# for node in next_level_nodes:
# if node.tag==left_node.tag:
# right_node.append(node)
for right_node in right_nodes:
if cls.similar_check(left_node, right_node):
left_node.set(kg_record_mark,'1')
right_node.set(kg_record_mark, '1')
break
record_groups = cls.merger_sibling_record_node(doctree)
return record_groups