利用大模型对给定文本构建简易知识图谱思路:兼看PaperMage论文PDF解析工具的构成

756次阅读
没有评论

今天是2023年11月12日,北京,天气阴。

早上看到两个工作,一个是将文本转换为概念知识图谱的简易朴素案例,一个是EMNLP2023提出的关于PDF文档处理的开源工具PaperMage,其中涉及到一些有趣的实现思路,分享出来,供大家一起思考。

一、将文本转换为概念知识图谱的朴素案例

文章《How to Convert Any Text Into a Graph of Concepts》(地址:https://towardsdatascience.com/how-to-convert-any-text-into-a-graph-of-concepts-110844f22a1a)给出了一个针对给定文本生成知识图谱的案例。

这个完整demo示例可以查看:https://github.com/rahulnyk/knowledge_graph/blob/main/extract_graph.ipynb

其实现步骤如图所示:

利用大模型对给定文本构建简易知识图谱思路:兼看PaperMage论文PDF解析工具的构成

1、将文本语料库分割成块。为每个文本块分配一个chunk_id。这一步很简单,Langchain提供了大量文本拆分器,可以用它来将文本拆分成块。

利用大模型对给定文本构建简易知识图谱思路:兼看PaperMage论文PDF解析工具的构成

2、对于每个文本块,使用LLM提取概念及其语义关系,将这种关系的权重定为W1。同一对概念之间可能存在多种关系。每种关系都是一对概念之间的边。

这块可以使用prompt,让大模型进行抽取:

SYS_PROMPT = (
    "You are a network graph maker who extracts terms and their relations from a given context. "
    "You are provided with a context chunk (delimited by ```) Your task is to extract the ontology "
    "of terms mentioned in the given context. These terms should represent the key concepts as per the context. n"
    "Thought 1: While traversing through each sentence, Think about the key terms mentioned in it.n"
        "tTerms may include object, entity, location, organization, person, n"
        "tcondition, acronym, documents, service, concept, etc.n"
        "tTerms should be as atomistic as possiblenn"
    "Thought 2: Think about how these terms can have one on one relation with other terms.n"
        "tTerms that are mentioned in the same sentence or the same paragraph are typically related to each other.n"
        "tTerms can be related to many other termsnn"
    "Thought 3: Find out the relation between each such related pair of terms. nn"
    "Format your output as a list of json. Each element of the list contains a pair of terms"
    "and the relation between them, like the follwing: n"
    "[n"
    "   {n"
    '       "node_1": "A concept from extracted ontology",n'
    '       "node_2": "A related concept from extracted ontology",n'
    '       "edge": "relationship between the two concepts, node_1 and node_2 in one or two sentences"n'
    "   }, {...}n"
    "]"
)

USER_PROMPT = f“context: “`{input}“` nn output: “

利用pandas表示,可以表示为:

利用大模型对给定文本构建简易知识图谱思路:兼看PaperMage论文PDF解析工具的构成

3、考虑到出现在同一文本块中的概念也是通过上下文的邻近性联系在一起的,给这种关系赋予W2的权重。同一对概念可能出现在多个文本块中。权重可以采用两个实体的共现次数。

4、将相似的概念对分组,对它们的权重进行求和,然后将它们的关系连接起来。因此,现在任何一对不同的概念之间都只有一条边。这条边有一定的权重,其名称为关系列表。

地址:github.com/rahulnyk/knowledge_graph

二、PaperMage论文PDF解析工具

科学文档的处理充满挑战,它们通常是难以使用的PDF格式,处理它们的模型也并不多见,《PaperMage: A Unified Toolkit for Processing, Representing, and Manipulating Visually-Rich Scientific Documents》(地址:https://aclanthology.org/2023.emnlp-demo.45.pdf)是EMNLP2023提出的关于PDF文档处理的开源工具,用于分析和处理视觉丰富的结构化科学文档。

在实现路径上,papermage将不同NLP和CV模式整合到一个统一的框架,如下图所示:

利用大模型对给定文本构建简易知识图谱思路:兼看PaperMage论文PDF解析工具的构成

Papermage包括三个部分,其中:

magelib为将视觉丰富的文档表示为多模态结构并对其进行管理的基元和方法库;

Predictors为一套将不同的最先进科学文档分析模型整合到统一界面的实现方法;

Recipes提供对经过良好测试的单个(通常是单一模式)模块组合的即用型访问,以形成复杂的、可执行的多模式pipeline。

其中有几个比较关键的概念:

1、实体Entity

利用大模型对给定文本构建简易知识图谱思路:兼看PaperMage论文PDF解析工具的构成

实体是多模态内容单元。句子的跨度用于在所有符号中识别其文本,而方框则映射其在页面上的视觉坐标。跨度和方框可以包含非连续单元,从而使实体可以非常灵活地处理布局上的细微差别。一个分栏/分页并被浮动数字/脚注打断的句子需要多个跨度和边界框来表示。

2、实体的访问

可以不同方式灵活地访问实体,如下图所示:

利用大模型对给定文本构建简易知识图谱思路:兼看PaperMage论文PDF解析工具的构成

(A)通过自身层访问文档中第一段的实体;

(B)通过段落实体或直接通过句子层访问句子;

(C)可以通过重叠的句子实体或直接通过文档的标记层(其中第一个标记是论文标题)访问相同的标记;

D、E)图、标题、表格和关键词也可以通过类似的方式访问、用户选择的区域,papermage可以为给定的图层找到相应的实体,在这种情况下,可以找到该区域下的标记。

3、Predictors分析器 papermage包含多个现成可用的 Predictors,利用最先进的模型来提取特定的文档结构。

例如,如下图所示:

利用大模型对给定文本构建简易知识图谱思路:兼看PaperMage论文PDF解析工具的构成

SentencePredictor采用sciSpaCy和PySBD来分割句子。WordPredictor是一个定制的scikit-learn模型,用于识别PDF行或列中的断词。

ParagraphPredictor是布局和逻辑结构模型之上的一套启发式方法,用于提取段落。

BoxPredictor封装了来自LayoutParser的模型,该模型提供了类似于EfficientDet的视觉模型,并对文本布局进行了预训练,可以将doc分割为多个视觉块区域。

SpanPredictor包装了来自Transformers的token 分类器,它提供了来自VILA的预训练权重,以及在类似数据上微调过的RoBERTa、SciBERT权重,将文档划分为标题、摘要、正文、脚注、标题等组织单位。

对应的项目脚本在:https://github.com/allenai/papermage

利用大模型对给定文本构建简易知识图谱思路:兼看PaperMage论文PDF解析工具的构成

总结

本文主要介绍了将文本转换为概念图谱的简易朴素案例以及PaperMage论文PDF解析工具,两者都是一些很简朴的工具,我们在实际开发过程中,可以采用并检验。

感兴趣的,可以进一步阅读其源码,对其实现原理进行研究,会更有趣。

参考文献

1、github.com/rahulnyk/knowledge_graph

2、https://arxiv.org/pdf/2310.06201.pdf

3、https://aclanthology.org/2023.emnlp-demo.45.pdf

4、https://github.com/allenai/papermage

关于我们

老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。

老刘说NLP,将定期发布语言资源、工程实践、技术总结等内容,欢迎关注。

对于想加入更优质的知识图谱、事件图谱、大模型AIGC实践、相关分享的,可关注公众号,在后台菜单栏中点击会员社区->会员入群加入。

​​​​​​​       

 

Read More 

正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 
评论(没有评论)
Generated by Feedzy