点击上方
蓝色
“
顶层架构领域
”,关注精彩与你分享
即使保守估计,80% 的企业数据也驻留在非结构化文件中,存储在支持异构格式的数据湖中。
传统的搜索引擎不再能够满足信息搜索的需求,特别是当任务是浏览和探索洞察力时。换句话说,没有明显的搜索关键字可供使用。知识图由于其自然的视觉吸引力减少了人类的认知负担,成为异构数据集成和知识表示的获胜候选者。
在本文中,我们介绍了 Docs2KG,这是一种新颖的框架,旨在从各种异构非结构化文档(包括电子邮件、网页、PDF 文件和 Excel 文件)中提取多模式信息。
Docs2KG动态生成代表提取的关键信息的统一知识图谱,实现文档数据湖的高效查询和探索。
与专注于特定领域数据源或预先设计模式的现有方法不同,Docs2KG 提供了灵活且可扩展的解决方案,可以适应各种文档结构和内容类型。所提出的框架将支持多种下游任务的数据处理与改进的域可解释性统一起来。
一、Docs2KG
介绍
最有价值的企业知识存在于异构格式的非结构化文档中,占据了至少 80% 的企业数据湖。通过整合这些数据来提取有意义的信息(Luo 等人,2022)至关重要,同时保留对检索增强生成(RAG)起源的引用(Lewis 等人,2020) 减少幻觉。以医疗保健行业为例,患者记录通常以多种格式存在,例如手写临床记录、出院信、临床医生之间的电子邮件通信和医学图像。如果没有数据集成,就不可能提供综合评估。许多现有作品(Luo等人,2022;Li等人,2020)旨在针对单一数据源,例如扫描文档或PDF文件。然而,在现实世界的应用中,特别是在特定领域的知识领域内,数据是异构的、非结构化的和多样化的(Maree 和 Belkhatir,2015)。为了从异构非结构化文档中执行文档范围的语义解析和布局分析。
-
多模态数据的提取(包括 各种格式的表格、文本、图像和图形)。
-
将特定于模态的信息提取模型集成到一个统一的框架中。
-
通过我们提出的
Docs2KG
系统来促进知识图谱构建的最终目标,以解决上述挑战。Docs2KG可以处理的数据格式包括电子邮件、网页、PDF文件和Excel文件。提取的多模态信息合并为统一的 KG,允许基于文档结构和内容进行动态自动更新,并且可以修改和扩展以允许人机交互。
例如:
“向我显示与 2011 年和 2021 年发生的事件相关的所有文档及其组件。”
。此功能可以显着减少浏览大量非结构化文档所需的时间、精力和资源。此外,Docs2KG通过
双路径策略
统一文档处理,有效地将基于深度学习计算机视觉的文档布局分析与mark-down结构化文档解析相结合,以最大限度地提高其文档类型覆盖率。
Docs2KG生成的KG可用于促进许多现实世界的应用,例如降低知识过时和语言语言模型幻觉的风险,以实现基于知识的检索增强生成。
二、Docs2KG 技术架构
Docs2KG的技术架构如:图1所示,其设计目的是将一组异构且非结构化的文档作为输入,包括电子邮件、网页、PDF文件和Excel文件。
Docs2KG涉及两个主要阶段:双路径数据处理和多模态统一KG构建。
双路径数据处理
阶段将输入文档分割为文本内容、图像和表格。
多模态统一知识图谱构建阶段
将处理后的信息与结构和语义关系集成起来。
对齐后,生成的多模态 KG 存储在 Neo4j图形数据库,允许将提取的信息存储为三重存储,以实现高效查询和直观可视化。所有代码和文档均可在线获取。代码设计为模块化,可以使用其他图数据库代替Neo4j进行图数据存储和检索。
以下部分详细介绍了 Docs2KG 的两个关键阶段:
双路径数据处理
图2:查询“显示与 2011 年和 2021 年发生的事件相关的所有文档及其组件”的演示图。通过合并 PDF 文件和 Excel 文件。PDF档案载有2011年至2021年香港人口规模及结构的资料。Excel 文件包含 2021 年至 2023 年的人口普查记录。(青色表示PDF文档;绿色表示Excel文件;红色表示PDF页面;卡其色表示页眉;海蓝色表示段落)
图1:中介绍根据提取布局信息的容易程度将输入文档分为两类。例如,网页 (HTML) 使用树结构进行组织,可以直接转换为 Markdown 或 JSON。相比之下,具有大量描述信息的 PDF 文件和 Excel 文件对布局检测和转换为半结构化格式提出了重大挑战。
Image Converter
路径是一种通用方法,它使用经过训练的深度学习模型来进行文档布局分析。
Markdown Converter
路径是将文档转换为 Markdown 格式并使用 XML/HTML 查询语言(例如 XPath)。
所有四种类型的文档都可以转换为图像,并利用文档布局分析将其分割为文本、图像和带有边框的表格。
对于Markdown文档解析,有四个独立的解析器来处理不同的文档类型:
-
PDF解析:
根据PDF文件提供的元信息,我们可以确定是否将其提供给
Markdown Converter
或
Image Converter
。对于扫描的 PDF 文件,唯一的途径是通过训练有素的文档布局分析模型,而生成的 PDF 文件可以进行解析或分段,以提取带有边界框信息的图像、表格、文本。
-
网页解析:
我们使用流行的 Python 库 BeautifulSoup (Hajba, 2018) 来进行高效的 HTML 解析。使用 markdownify (Tretter, 2024) 提取文本。图片通过
标签标识,表格通过 标签标识。HTML页面的原始文档树结构被保留为布局知识图。
-
Excel解析:
使用 Python 库 pandas,加载 Excel 文件并从每个工作表中提取数据。提取的数据然后通过
imgkit
转换为图像,然后经过
Image Convertor
路径。对于结构复杂的 Excel 工作表,可以先将其转换为 PDF 文件,以遵循 PDF 处理流程。
-
电子邮件解析:
我们假设电子邮件采用 .eml 格式。然后使用 Python 库 email 将消息分段为纯文本、HTML 和附件。然后,可以像网页一样处理电子邮件的文本和 HTML 部分,而附件则根据其格式由适当的工具(例如 PDF 或 Excel 解析器)处理。
通过结合解析器和文档分割模型,Doc2KG可以解析不同的异构和非结构化文档,以便随后集成到统一的KG中。这里采用的模块化方法允许灵活配置和组合处理模块,以优化计算资源的使用。
多模态统一知识图构建
在第一阶段之后,我们提出的 Docs2KG 将解析的信息统一为包含结构(层次和空间)和语义信息的多模态知识图谱。
我们将多模式知识图谱的关系分为两种主要类型:
模式内关系和模式间关系(布局知识图谱和语义知识图谱)。
模内关系构建:
模态内关系包括标题级别和段落级别的结构关系以及句子级别的语义关系。模态内关系可以表示为:
其中 𝐺 表示多模态 KG 中的最小单元子图。𝛼 和 𝛽 表示来自文本源的不同模式,包含文本 (𝑇)、段落 (𝑃) 和句子 (𝑆)。符号(ℎ𝛼,𝑟,𝑡𝛽)表示两个节点之间的构造方法,其中ℎ𝛼(头实体)指向𝑡𝛽(尾实体)。𝑟表示关系,用结构或语义信息表达:
-
-
语义关系:
“同时”、“重点”、“支持”、“解释”。
多式联运关系构建:
我们使用语义关系来表达不同模态之间的关系。这是因为模态内的层次关系和空间关系已经提供了明确的关系方向。各模态间的关系可以表示为:
其中𝐺表示最小单元子图。𝑆 表示句子,例如表格标题。𝑀表示表格和图形。𝑟是它们之间的语义关系:“解释”和“同时”。
三、知识图谱查询
我们为演示选择了一份 PDF 文件和一份 Excel 文件。PDF档案载有2011年至2021年香港人口规模及结构的资料。Excel 文件包含 2021 年至 2023 年人口普查的记录,包括按年龄组和性别分类的年中人口数据。
仅从 Excel 文件或 PDF 文件无法获得有意义的见解。我们通过Docs2KG对PDF文件和Excel文件进行解析和整合。数据被提取为图形、表格和文本,并合并为单个 KG。为了提取相关信息,我们使用了图3中所示的查询。返回的图表如图2,其中绿色气泡和红色气泡分别代表从Excel和PDF文件中提取的信息。根据可视化,我们可以观察到 PDF 文档的介绍部分(卡其色节点)引用了 2011 年和 2021 年发生的几起事件。
四、基于语义和结构邻近度的信息检索
为了增强大型语言模型的性能,RAG 方法建议将更多相关信息直接集成到提示中。在我们的多模态知识图谱中,“相关性”是指节点的接近程度,可以是语义的,也可以是结构的。具体来说,相关节点是知识图中在有限跳数内可以到达的节点。
基于此,考虑上面演示中的相同查询:“我想知道 2011 年到 2021 年的所有人口信息”。最初,知识图谱中的所有节点都使用嵌入模型进行嵌入。使用相同的模型来嵌入查询。然后利用查询嵌入通过语义相似性搜索来检索相关文本块、图形和表格。将选择前k个语义相关节点作为锚节点来检索n跳语义和结构相关节点,从而增强提示,如图3所示。我们可以看到检索到了2011年至2021年的人口信息表。
总结
在本文中,我们通过提出一个开源框架 Docs2KG 解决了现有多模态知识图谱构建方法的局限性。与以前仅关注图像或依赖现有知识图谱来链接图像的方法不同,框架考虑了跨所有领域的更现实的场景。Docs2KG有效处理各种非结构化格式的原始数据的多样性和异构性,例如网页、电子邮件、PDF文件和Excel文件。通过将这些不同的数据源集成到统一的知识图谱中,并结合语义和结构信息,Docs2KG 能够更全面、更准确地表示知识。这促进了广泛的现实应用,提高了知识图谱在不同领域的实用性和准确性。
Docs2KG文档:
https://docs2kg.ai4wa.com
演示视频:
https://docs2kg.ai4wa.com/Video
参考论文地址:
https://arxiv.org/pdf/2406.02962
开源地址:
https://github.com/AI4WA/Docs2KG
喜欢就
关注一下
👇
,不定期分享经典干货
:
点击右
下角
点赞、分享、
在看、收藏
,
感谢与
您分享
预览时标签不可点
微信扫一扫
关注该公众号
![]()
微信扫一扫
使用小程序
:
,
。
视频
小程序
赞
,轻点两下取消赞
在看
,轻点两下取消在看
分享
收藏
';
videoPlaceHolderSpan.style.cssText = "width: " + obj.w + "px !important;";
insertAfter(videoPlaceHolderSpan, a);
function ajax(obj) {
var url = obj.url;
var xhr = new XMLHttpRequest();
var data = null;
if (typeof obj.data == "object") {
var d = obj.data;
data = [];
for (var k in d) {
if (d.hasOwnProperty(k)) {
data.push(k + "=" + encodeURIComponent(d[k]));
}
}
data = data.join("&");
} else {
data = typeof obj.data == 'string' ? obj.data : null;
}
xhr.open('POST', url, true);
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if (xhr.status >= 200 && xhr.status < 400) {
obj.success && obj.success(xhr.responseText);
} else {
obj.error && obj.error(xhr);
}
obj.complete && obj.complete();
obj.complete = null;
}
};
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xhr.send(data);
}
var mid = "2247484275" || "" || "";
var biz = "MzkwNDYzODQyMw==" || "";
var sessionid = "" || "svr_84607890376";
var idx = "1" || "";
(function sendReq(parentNode, copyIframe, index, vid) {
ajax({
url: '/mp/videoplayer?vid=' + vid + '&mid=' + mid + '&idx=' + idx + '&__biz=' + biz + '&sessionid=' + sessionid + '&f=json',
type: "GET",
dataType: 'json',
success: function (json) {
var ret = JSON.parse(json || '{}');
var ori = ret.ori_status;
var hit_biz_headimg = ret.hit_biz_headimg + '/64';
var hit_nickname = ret.hit_nickname;
var hit_username = ret.hit_username;
var sourceBiz = ret.source_encode_biz;
var selfUserName = "gh_fd2712fd936a";
if (ori === 2 && selfUserName !== hit_username) {
var videoBar = document.createElement('div');
var videoBarHtml = '';
videoBarHtml += '
以下视频来源于
';
videoBarHtml += '
';
videoBarHtml += '
';
videoBarHtml += '
' + hit_nickname + '
';
videoBarHtml += '
';
videoBarHtml += '
';
videoBarHtml += '
';
videoBarHtml += '
';
videoBar.innerHTML = videoBarHtml;
var spanContainer = document.getElementById('js_mp_video_container_' + index);
if (spanContainer) {
spanContainer.parentNode.insertBefore(videoBar, spanContainer);
} else if (parentNode.contains && parentNode.contains(copyIframe)) {
parentNode.insertBefore(videoBar, copyIframe);
} else {
parentNode.insertBefore(videoBar, parentNode.firstElementChild);
}
var avatorEle = document.getElementById(hit_biz_headimg + index);
var avatorSrc = avatorEle.dataset.src;
console.log('avatorSrc' + avatorSrc);
if (ret.hit_biz_headimg) {
avatorEle.style.backgroundImage = 'url(' + avatorSrc + ')';
}
}
},
error: function (xhr) {
}
});
})(a.parentNode, a, i, vid);
a.style.cssText += ";width: " + obj.w + "px !important;";
a.setAttribute("width", obj.w);
if (window.__zoom != 1) {
a.style.display = "block";
videoPlaceHolderSpan.style.display = "none";
a.setAttribute("_ratio", obj.ratio);
a.setAttribute("_vid", vid);
} else {
videoPlaceHolderSpan.style.cssText += "height: " + (obj.h - obj.sdh) + "px !important;margin-bottom: " + obj.sdh + "px !important;";
a.style.cssText += "height: " + obj.h + "px !important;";
a.setAttribute("height", obj.h);
}
a.setAttribute("data-vh", obj.vh);
a.setAttribute("data-vw", obj.vw);
if (a.getAttribute("data-mpvid")) {
a.setAttribute("data-src", location.protocol + "//mp.weixin.qq.com/mp/readtemplate?t=pages/video_player_tmpl&auto=0&vid=" + vid);
} else {
a.setAttribute("data-src", location.protocol + "//v.qq.com/iframe/player.html?vid=" + vid + "&width=" + obj.vw + "&height=" + obj.vh + "&auto=0");
}
}
})();
(function () {
if (window.__zoom != 1) {
if (!window.__second_open__) {
document.getElementById('page-content').style.zoom = window.__zoom;
var a = document.getElementById('activity-name');
var b = document.getElementById('meta_content');
if (!!a) {
a.style.zoom = 1 / window.__zoom;
}
if (!!b) {
b.style.zoom = 1 / window.__zoom;
}
}
var images = document.getElementsByTagName('img');
for (var i = 0, il = images.length; i < il; i++) {
if (window.__second_open__ && images[i].getAttribute('__sec_open_place_holder__')) {
continue;
}
images[i].style.zoom = 1 / window.__zoom;
}
var iframe = document.getElementsByTagName('iframe');
for (var i = 0, il = iframe.length; i < il; i++) {
if (window.__second_open__ && iframe[i].getAttribute('__sec_open_place_holder__')) {
continue;
}
var a = iframe[i];
a.style.zoom = 1 / window.__zoom;
var src_ = a.getAttribute('data-src') || "";
if (!/^http(s)*\:\/\/v\.qq\.com\/iframe\/(preview|player)\.html\?/.test(src_)
&& !/^http(s)*\:\/\/mp\.weixin\.qq\.com\/mp\/readtemplate\?t=pages\/video_player_tmpl/.test(src_)
) {
continue;
}
var ratio = a.getAttribute("_ratio");
var vid = a.getAttribute("_vid");
a.removeAttribute("_ratio");
a.removeAttribute("_vid");
var vw = a.offsetWidth - (getOuterW(a) || 0);
var vh = vw / ratio;
var h = vh + (getOuterH(a) || 0)
a.style.cssText += "height: " + h + "px !important;"
a.setAttribute("height", h);
if (/^http(s)*\:\/\/v\.qq\.com\/iframe\/(preview|player)\.html\?/.test(src_)) {
a.setAttribute("data-src", location.protocol + "//v.qq.com/iframe/player.html?vid=" + vid + "&width=" + vw + "&height=" + vh + "&auto=0");
}
a.style.display = "none";
var parent = a.parentNode;
if (!parent) {
continue;
}
for (var j = 0, jl = parent.children.length; j < jl; j++) {
var child = parent.children[j];
if (child.className.indexOf("js_img_placeholder") >= 0 && child.getAttribute("data-vid") == vid) {
child.style.cssText += "height: " + h + "px !important;";
child.style.display = "";
}
}
}
}
})();
})();
var anchor_tree_msg = '';