AI大模型 | 构建知识图谱的双重方法:传统NLP技术或大型语言模型

Code1994 2024-10-24 08:31:01 阅读 63

知识图谱是以结构化格式表示实体之间关系的强大工具。它们广泛用于医疗保健、金融、电子商务等各个行业,以组织大量数据、启用高级搜索功能并提供更好的决策能力。但是,构建知识图谱需要从原始文本中提取相关实体及其关系,这就是命名实体识别 (NER) 发挥作用的地方。

传统上,NER 一直是知识图谱构建中实体提取的首选方法。然而,大型语言模型 (LLM) 的出现带来了新的可能性,因此有必要比较这两种方法并评估哪种方法对构建知识图谱更有效。在这篇博客中,我们将深入探讨传统 NER 和 LLM 在构建知识图谱方面的区别,以及每种方法如何影响流程。

一、什么是知识图谱?

知识图谱是由互连实体及其关系组成的网络。它将信息组织成机器可以解释的结构化形式。该图包括:

节点(实体) :表示人员、地点、组织、概念等。

Edges (Relationships) :定义实体之间的连接(例如,‘works at’、‘is located in’)。

知识图谱在 AI、数据集成和自然语言处理 (NLP) 等领域特别有用,这些领域的目标是从非结构化数据中提取有意义的信息。

在这里插入图片描述

传统命名实体识别 (NER)

命名实体识别 (NER) 是信息提取的一个子任务,旨在识别和分类文本中的命名实体(例如人员、组织、位置等)。它是最早用于提取信息以构建知识图谱的技术之一。

1、传统 NER 的工作原理:

传统的 NER 模型依赖于预定义的字典和基于规则的系统,或者在标记数据集上训练的机器学习算法来检测实体。

基于规则的 NER :使用一组规则或正则表达式来标识实体。例如,所有大写的单词都可能被视为专有名词,因此也被视为实体。这速度很快,但灵活性有限。

机器学习 NER :基于机器学习的 NER 模型在带注释的数据集上进行训练。这些模型采用决策树、条件随机字段 (CRF) 或支持向量机 (SVM) 等技术从文本数据中学习。

深度学习 NER:现代 NER 系统使用深度学习模型,如递归神经网络 (RNN)、长短期记忆 (LSTM) 网络或变压器。这些模型可以捕获单词的上下文,并在看不见的数据上表现得更好。

2、使用传统 NER 构建知识图谱的步骤:

数据预处理 :清理并规范化输入文本(删除特殊字符、小写字母等)。实体提取 :使用经过训练的 NER 模型从文本中提取实体。关系提取 :使用依赖关系解析或共现分析等技术识别实体之间的关系。图谱构造 :将提取的实体表示为图形数据库(例如 Neo4j)中的节点,将关系表示为边缘。图谱融合:通过集成来自多个来源的数据来添加其他实体和关系。查询图形 :使用 Cypher 等图形查询语言来搜索或遍历知识图谱。

其中一种方法是使用 GLiNER 等神经模型,它通过利用深度学习技术简化了 NER。

GLiNER 模型针对命名实体识别 (NER) 进行了预训练,并在此处使用特定于域的实体标签进行初始化。然后,该模型根据文本中的上下文预测实体。

模型初始化:GLiNER 使用 GLiNER.from_pretrained() 加载。定义了标签列表(例如,“人员”、“组织”等)以指导模型识别特定实体类型。

实体提取 :模型扫描文本以查找与提供的标签匹配的实体。这就是 GLiNER 的亮点,因为它可以检测实体,而无需预定义的字典或严格的规则。

<code>from gliner import GLiNER

#Model Initialization

model = GLiNER.from\_pretrained("numind/NuNerZero")

#Merging and Displaying Entities

\# NuZero requires labels to be lower-cased!

labels=\[

"people",

"organizations",

"concepts/terms",

"principles",

"documents",

"dates"

\]

labels = \[l.lower() for l in labels\]

text = content\_process

entities = model.predict\_entities(text, labels)

entities = merge\_entities(entities)

for entity in entities:

print(entity\["text"\], "=>", entity\["label"\])

3、输出

在这里插入图片描述

二、传统 NER 的挑战

有限范围 :传统的 NER 模型通常仅限于预定义的实体类型,如人员、位置或组织。自定义实体(例如,“品牌名称”或“化合物”)需要特定于领域的训练数据。

手动特征工程 :NER 模型通常依赖于手动特征工程,例如词性标记或标记化,这可能非常耗时且容易出错。

缺乏上下文理解:NER 系统可能难以理解复杂或模棱两可的句子中的上下文。例如,“Apple”一词可以指代水果或公司,具体取决于上下文。

三、大型语言模型 (LLM)

大型语言模型 (LLM),例如 GPT-4、LLaMA 和 OpenAI 模型,通过利用大量数据和先进的深度学习技术以更细致和上下文化的方式理解语言,改变了 NLP。与传统的 NER 不同,LLM 可以捕捉到对语言和关系的更广泛理解。

1、LLM 在知识图谱构建中的工作原理:

LLM 可以直接从非结构化文本中提取实体和关系,而无需预定义标签。它们具有很强的适应性,可以通过及时的工程设计或微调来识别各种实体类型和复杂的关系。

上下文实体识别 :LLM 根据上下文而不是固定规则识别实体,使其对于各种和看不见的数据更加健壮。

关系推理 :LLM 可以通过理解自然语言上下文和语义来推断实体之间的隐式关系。

动态知识更新 :LLM 可以动态处理新的、看不见的数据,从而在获得新信息时更轻松地更新知识图谱。

2、使用 LLM 构建知识图谱的步骤:

(1) Text Collection :收集大量非结构化文本,从中提取实体和关系。

(2) 使用 LLM 进行实体和关系提取:

使用 LLM 从文本中提取实体和关系。使用特定查询提示模型,例如“从以下文本中提取实体及其关系”。

(3) 特定于域的实体的微调(可选):

在特定于域的数据集上微调 LLM 以提高专用实体的准确性。

(4) 图谱构建 :使用 Neo4j 等图形数据库或自定义构建的解决方案将实体和关系构建到知识图谱中。

(5) 图查询与分析 :使用图遍历算法查询关系或从知识图谱中发现新的见解。

像 GPT 这样的大型语言模型 (LLM) 提供了一种灵活的方法来提取实体和关系。通过最少的设置,系统会提示模型直接从文本中识别实体(例如,人员、组织)并推断关系(例如,works for、located in)。与传统模型不同,LLM 可以理解上下文并返回结构化的 JSON 数据,因此非常适合动态、实时的知识图谱构建。

<code>import openai

import json

\# Function to generate entities and relationships from the given text using OpenAI's API

def generate\_entities\_and\_relationships(text, api\_key):

\# Set the OpenAI API key

openai.api\_key = api\_key

\# Create the prompt that will be sent to the OpenAI API.

\# The prompt asks the model to identify entities and relationships within the provided text

\# and format the response in JSON format.

prompt = f"""

Given the following text, identify the main entities and their relationships:

Text: { text}

Please provide the output in the following JSON format:

{ {

"entities": \[

{ {"name": "Entity1", "type": "PersonType"}},

{ {"name": "Entity2", "type": "OrganizationType"}},

...\],

"relationships": \[

{ {"subject": "Entity1", "predicate": "works\_for", "object": "Entity2"}},

{ {"subject": "Entity2", "predicate": "located\_in", "object": "Entity3"}},

...\]}}"""

\# Send the request to the OpenAI API using the 'gpt-3.5-turbo' model.

\# The API call is structured as a chat completion with system and user messages.

response = openai.chat.completions.create(

model="gpt-4o", code>

messages=\[

{ "role": "system", "content": "You are a helpful assistant that identifies entities and relationships in text."},

{ "role": "user", "content": prompt}

\]

)\# Extract and clean up the response by removing extra characters or code format markers

result = response.choices\[0\].message.content.strip().strip('\`\`\`json').strip().strip('\`\`\`')

return json.loads(result)

3、输出

合作链接

4、如何使用传统方法和 LLM 提取实体

四、使用 LLM 构建知识图谱的最佳实践

利用预先训练的模型:使用预先训练的 LLM 提取实体和关系,而无需大量标记的数据集。

针对特定领域的需求进行定制:针对特定行业(例如医疗保健、金融)微调 LLM,以提高基准任务的性能。

利用知识蒸馏:应用知识蒸馏技术将复杂的 LLM 输出转换为结构化知识图谱数据。

评估准确性:使用人机协同或自动评估技术持续评估提取的实体和关系的准确性。

优化性能:由于 LLM 的计算成本可能很高,因此请通过为实时应用程序部署更轻量级的版本来优化模型的性能

五、结论

传统的 NER 和基于 LLM 的方法在构建知识图谱中都有其一席之地。传统 NER 对于结构化的预定义实体类型是可靠的,并且在具有已建立分类法的域中运行良好。但是,LLM 提供了一种更灵活、上下文感知和可扩展的解决方案,用于从庞大的非结构化数据源中提取实体和关系。

对于上下文、细微差别和可扩展性至关重要的项目,LLM 是更好的选择。通过利用他们对自然语言的理解,LLM 可以更轻松地构建动态且高度上下文相关的知识图谱,这些知识图谱会随着新信息的出现而发展。

知识图谱的未来在于两种方法的混合,将传统 NER 模型的精度与 LLM 的适应性和强大功能相结合,以创建能够处理日益复杂的数据环境的强大系统。


六、如何学习大模型?

学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。

这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享!

1. 成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图方向不对,努力白费

这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。

在这里插入图片描述

2. 大模型经典PDF书籍

书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础(书籍含电子版PDF)

在这里插入图片描述

3. 大模型视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识

在这里插入图片描述

4. 大模型项目实战

学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

在这里插入图片描述

5. 大模型面试题

面试不仅是技术的较量,更需要充分的准备。

在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

在这里插入图片描述

全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以微信扫描下方CSDN官方认证二维码,免费领取【<code>保证100%免费



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。