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

转载公众号 | 知识图谱科技


最近在默沙东制药的内部研讨会分享了一下我们医学图书馆如何利用知识图谱和大模型技术构建文档级别知识图谱和打标签能力并应用于智能知识库建设以及推荐和检索、问答等应用场景。

f2200f6dcf9cd6a585a2f88e664b0d97.png

知识图谱本身也是一种丰富的语义标签,编辑摘录部分关于用传统NLP技术以及大模型LLM技术构建知识图谱的方法及对比,后续将详细介绍我们的方案并如何应用于知识库、情报和Chatbot系统中。

正文

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

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

c40263281fa1045453182a03371235a9.png

什么是知识图谱?

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

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

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

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

ae2f1bd5810515132c786b6e6cd9f91b.png

传统命名实体识别 (NER)

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

传统 NER 的工作原理:

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

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

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

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

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

  1. 数据预处理 :清理并规范化输入文本(删除特殊字符、小写字母等)。

  2. 实体提取 :使用经过训练的 NER 模型从文本中提取实体。

  3. 关系提取 :使用依赖关系解析或共现分析等技术识别实体之间的关系。

  4. 图谱构造 :将提取的实体表示为图形数据库(例如 Neo4j)中的节点,将关系表示为边缘。

  5. 图谱融合:通过集成来自多个来源的数据来添加其他实体和关系。

  6. 查询图形 :使用 Cypher 等图形查询语言来搜索或遍历知识图谱。

其中一种方法是使用 GLiNER 等神经模型,它通过利用深度学习技术简化了 NER。
GLiNER 模型针对命名实体识别 (NER) 进行了预训练,并在此处使用特定域的实体标签进行初始化。然后,该模型根据文本中的上下文预测实体。

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

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

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"])

输出

d662f1811281b725ca23dbf71934a68e.png

传统 NER 的挑战

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

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

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

大型语言模型 (LLM)

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

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

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

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

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

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

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

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

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

  • 使用 LLM 从文本中提取实体和关系。

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

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

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

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

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

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

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",
        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)

输出

ed3a8714d735414e28096bb757ed43fe.png

efcbb742ec1e71c1c7c0fb238d4fcd7a.png

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

ac84de6bbecabbffdc141f8924dafcbc.png54a435fe9663d60d02df5b315a6a22f9.pngace1a39889e096ef5bfab091f004f136.png

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

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

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

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

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

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

另请参阅:- https://www.bluetickconsultants.com/blogs/from-rag-to-graphrag-transforming-information-retrieval-with-knowledge-graphs.html

结论

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

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

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


OpenKG

OpenKG(中文开放知识图谱)旨在推动以中文为核心的知识图谱数据的开放、互联及众包,并促进知识图谱算法、工具及平台的开源开放。

ec702f72e96ef28085ca171356ddaa30.png

点击阅读原文,进入 OpenKG 网站。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值