知识图谱实战应用1-知识图谱的构建与可视化应用

大家好,今天给大家带来知识图谱实战应用1-知识图谱的构建与可视化应用。知识图谱是一种概念模型,用于表示和组织实体之间的关系,从而实现大规模的语义查询和推理。

一、知识图谱的应用领域

1. 搜索引擎:知识图谱可以帮助搜索引擎更好地理解用户的搜索查询,提高搜索精度和准确性。谷歌的知识图谱已经将搜索引擎从传统的关键词匹配升级到了语义匹配。

2. 智能客服:通过利用知识图谱建立一系列问题与答案的关系,可以实现智能客服系统,帮助用户更快捷地获得解决方案,大幅提升用户体验。

3. 语义分析:知识图谱可以对文本进行语义分析,提取实体、关系和事件等信息,从而支持自动化文本理解和智能化处理。

4. 金融风控:知识图谱可以帮助金融机构识别欺诈行为,了解客户的相关信息和关系,从而降低风险和损失。

5. 医疗健康:知识图谱可以帮助医生更好地诊断和治疗疾病,预测患者应对特定治疗的反应,同时也能够进行病例推理和知识发现等任务。

二、知识图谱的涉及哪些深度学习的应用

 1.实体链接 实体链接是将文本中的实体与知识图谱中的实体进行链接的过程。其中基础算法包括基于字典匹配、基于规则、基于相似性等方法。同时,也有利用机器学习和深度学习的实体链接算法,例如使用卷积神经网络(CNN)进行实体链接。

2.实体识别:实体识别是指从文本中识别出实体名称,同时还可以识别出实体类型和属性信息。目前主流的方法包括:规则和模式匹配、基于机器学习的方法(例如条件随机场(CRF)和递归神经网络(RNN))。

3.知识图谱构建:知识图谱构建算法是指将文本和结构化数据相结合构建知识图谱的一系列算法。其中,最常用的方法包括关系抽取、实体链接和实体识别等。

4.关系抽取:关系抽取是指从自然语言文本中抽取实体之间的关系信息的过程,其目的是构建知识图谱中的关系。常见的方法包括基于规则和模式匹配、基于统计方法的方法(例如条件随机场(CRF)和递归神经网络(RNN))。

5.图卷积网络:图卷积网络是一种用于学习和处理图数据的深度学习方法。它的独特之处在于考虑到了图的拓扑结构、节点特征和边的权重,能够有效处理知识图谱中的复杂关系。 以上是知识图谱中涉及到的一些基本算法,不同算法可结合使用,进一步提高知识图谱的精度和效果。

6.推荐算法:基于知识图谱下的推荐算法是基于知识图谱的基础上,通过利用用户历史行为和知识图谱中的实体之间的关系,从图谱中获取推荐信息的一种推荐算法。其主要思想是根据用户的兴趣和行为,对与用户有关联的实体进行挖掘和分析,从图谱中获取相关的实体或信息进行个性化推荐。

三、知识图谱的数据导入应用实战

基于neo4j构建知识图谱,利用pyt2neo第三方库,导入数据并可视化呈现数据关系。代码部分如下:

## 相关模块导入
import pandas as pd
from py2neo import Graph

## 连接图形库,配置neo4j
graph = Graph("http://localhost:7474/browser/",auth = ('neo4j','neo4j'))


#csv源数据读取
storageData = pd.read_csv('data_new.csv',encoding = 'utf-8')
# 获取所有列标签
columnLst = storageData.columns.tolist()
print(len(storageData['title']))
namelist=['中文名','中文名称','中文学名','标签','描述','外文名称','国籍','外文名','拼音','含义','时间','定义','是否含防腐剂']

for i,title,attribute,value in zip(range(len(storageData['title'])),storageData['title'],storageData['attribute'],storageData['value']):
    try:
        print(i)
        value = value.replace('“', '').replace('”', '').replace("'", '').replace("‘", '').replace("’", '')
        attribute = attribute.replace(' ', '').replace('、', '').replace('/', '')

        matchq = "MATCH (n:entity{name:" + "'" + title + "'" + "}) RETURN  n "
        matchquery = graph.run(matchq).data()
        if len(matchquery) == 0:
            query = "CREATE (n:entity {name:" + "'" + title + "'"  + "})"
            graph.run(query)
        if attribute in namelist:
            query = "match(n:entity {name:" + "'" + title + "'" + "}) set n." + attribute + "=" + "'" + value + "'" + ""
            graph.run(query)
        else:
            relationship = "MATCH (a:entity {name:" + "'" + title + "'" + "})-[r:"+attribute+"]->(b:entity {name:" + "'" + value  + "'" + "}) RETURN a,b "
            relationships = graph.run(relationship).data()
            if len(relationships) == 0:
                    matchvalue = "MATCH (n:entity {name:" + "'" + value + "'" + "}) RETURN  n "
                    valuequery = graph.run(matchvalue).data()
                    if len(valuequery) == 0:
                        query_v = "CREATE (n:entity {name:" + "'" + value + "'" + "})"
                        graph.run(query_v)
                    query = "MATCH (a:entity {name:" + "'" + title + "'" + "}),(b:entity {name:" + "'" + value + "'" + "}) MERGE (a)-[r:" + attribute + "]->(b)"
                    graph.run(query)
    except Exception as e:
            print(e)

这里数据可以私信获取,或者链接获取:

链接:https://pan.baidu.com/s/1Yw8z9Nlsw6kDiYExlEpo5w?pwd=a1q8 
提取码:a1q8

数据导入后,我们本地通过访问:http://localhost:7474/browser/,就可以看到可视化的知识图谱:

91d2935767ab4c8eab260728f4725eea.png

 f301500f5b6247c09d67e7a2096bb18c.png

 知识图谱中的数据导入neo4j后可以用来进行多种操作和分析,可以进行下列应用:

 

数据查询和检索:通过使用Cypher语言,可以方便地查询知识图谱中的数据,包括节点、关系及其属性,从而实现快速的数据检索。

数据可视化:Neo4j支持多种数据可视化工具,可以使用这些工具来对知识图谱中的数据进行可视化展示,帮助用户更好地理解知识图谱中的信息。

知识推理:在知识图谱中,节点和关系之间的关联关系可以用来进行推理,通过使用Neo4j的算法以及自定义的规则,可以根据已有的信息自动推理出新的知识。

等级挖掘和网络分析:使用Neo4j,可以对知识图谱中的节点和关系进行各种统计和分析,包括节点的度、中心性、社区检测等,从而可以洞察知识图谱的结构和演化。

应用开发:Neo4j提供了完善的API和开发工具,可以方便地将知识图谱中的数据应用到各种应用开发场景中,帮助构建智能系统和应用。

更多精彩深度学习的内容可以关注“微学AI”,有问题可以私信,合作也可以私信。

 

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
乘风的头像乘风管理团队
上一篇 2023年6月25日
下一篇 2023年6月25日

相关推荐