这个算法是根据Word大纲层次结构生成parent_id的。例如,一篇文章有五个章节,第一个章节有三个子章节。这三个章节的parent_id应该是相同的,即第一个章节的element_id。然而,你的实验结果似乎与此不同。
这个算法的工作原理如下:
- 首先,为每个元素分配一个唯一的ID(element_id)。
- 然后,根据元素之间的层次关系,计算它们的父级元素(parent_id)。通常情况下,具有相同父级元素的元素在大纲中处于相同的层次。
- 最后,将这些信息存储在元数据(metadata)中,以便在处理文档时可以轻松访问它们。
如果你的实验结果与预期不符,可能是因为你的文档结构与预期的结构不同,或者你在计算parent_id时使用了错误的算法。你可以尝试检查你的文档结构和计算parent_id的方法,以确保它们符合预期的规则。
1条答案
按热度按时间mcvgt66p1#
在
unstructured/unstructured/partition/common.py
文件的第233行到第278行,定义了一个名为defset_element_hierarchy
的函数,该函数接受两个参数:elements
(一个Element对象的列表)和ruleset
(一个字典,键为字符串,值为字符串列表)。函数的返回类型是Element对象的列表。函数的主要功能是根据元素的类别、深度和规则集为列表中的每个元素设置
parent_id
。首先,创建一个空栈stack
,然后遍历elements
中的每个元素。如果元素的metadata.parent_id
不为None,则跳过该元素。接着,获取元素的类别和深度,如果没有类别,则跳过该元素。当栈不为空时,获取栈顶元素及其类别和深度。如果栈顶元素的类别与当前元素的类别相同且深度小于当前元素的深度,或者栈顶元素的类别与当前元素的类别不同且栈顶元素的类别在规则集中,则将栈顶元素的ID设置为当前元素的
parent_id
,并跳出循环。最后,将当前元素压入栈中。函数返回处理后的元素列表。