Datawhale 知识图谱组队学习 之 Task 1 知识图谱介绍

Datawhale 知识图谱组队学习 之 Task 1 知识图谱介绍

知识图谱理论:

相关理论

知识图谱背景

早在 2010 年微软就开始构建知识图谱,包括 Satori 和 Probase;2012 年,Google 正式发布了 Google Knowledge Graph,现在规模已超 700 亿。目前微软和 Google 拥有全世界最大的通用知识图谱,Facebook 拥有全世界最大的社交知识图谱,而阿里巴巴和亚马逊则分别构建了商品知识图谱。

简介:

概念

从学术的角度,我们可以对知识图谱给一个这样的定义:“知识图谱本质上是语义网络(Semantic Network)的知识库”。

Schema

知识图谱另外一个很重要的概念是 Schema:

限定待加入知识图谱数据的格式;相当于某个领域内的数据模型,包含了该领域内有意义的概念类型以及这些类型的属性

这个概念十分关键,是核心部分。
在这里插入图片描述

价值

从图5中可以看出,知识图谱是人工智能很重要的一个分支, 人工智能的目标为了让机器具备像人一样理性思考及做事的能力 -> 在符号主义的引领下,知识工程(核心内容即建设专家系统)取得了突破性的进展 -> 在整个知识工程的分支下,知识表示是一个非常重要的任务 -> 而知识图谱又恰恰是知识表示的重要一环

个人认为,符号主义代表的人工智能不是核心解决思路,但一定很重要,他给机器提供了知识,这无疑十分·重要,但是这提供知识这个思路,本身是来自于 连接主义–仿生学的:
!因为人是依靠知识的!
同时,如何把知识融入模型十分关键!!!
在这里插入图片描述

如何建知识图谱

数据来源

这个特别重要:也是在把蛋糕做大的过程中很重要的一点。
知识图谱的构建是后续应用的基础,而且构建的前提是需要把数据从不同的数据源中抽取出来。对于垂直领域的知识图谱来说,它们的数据源主要来自两种渠道:

第一种:业务本身的数据。这部分数据通常包含在公司内的数据库表并以结构化的方式存储,一般只需要简单预处理即可以作为后续AI系统的输入;

第二种:网络上公开、抓取的数据。这些数据通常是以网页的形式存在所以是非结构化的数据,一般需要借助于自然语言处理等技术来提取出结构化信息。

难点

非结构化文本!!!

相关技术

在构建类似的图谱过程当中,主要涉及以下几个方面的自然语言处理技术:

  1. 实体命名识别(Name Entity Recognition)
  2. 关系抽取(Relation Extraction)
  3. 实体统一(Entity Resolution)
  4. 指代消解(Coreference Resolution)
  • 实体命名识别(Named Entity Recognition)
    实体命名识别(英语:Named Entity Recognition),简称NER
    目标:就是从文本里提取出实体并对每个实体做分类/打标签;
    举例说明:比如从上述文本里,我们可以提取出实体-“NYC”,并标记实体类型为 “Location”;我们也可以从中提取出“Virgil’s BBQ”,并标记实体类型为“Restarant”。
    这种过程称之为实体命名识别,这是一项相对比较成熟的技术,有一些现成的工具可以用来做这件事情。

  • 关系抽取(Relation Extraction)
    关系抽取(英语:Relation Extraction),简称 RE
    介绍:通过关系抽取技术,把实体间的关系从文本中提取出来;
    举例说明:比如实体“hotel”和“Hilton property”之间的关系为“in”;“hotel”和“Time Square”的关系为“near”等等。

在这里插入图片描述
还有两个小任务:

  • 实体统一(英语:Entity Resolution),简称 ER
    介绍:对于有些实体写法上不一样,但其实是指向同一个实体;
    举例说明:比如“NYC”和“New York”表面上是不同的字符串,但其实指的都是纽约这个城市,需要合并。
    价值:实体统一不仅可以减少实体的种类,也可以降低图谱的稀疏性(Sparsity)
  • 指代消解(Disambiguation)
    指代消解(英语:Disambiguation)
    介绍:文本中出现的“it”, “he”, “she”这些词到底指向哪个实体,比如在本文里两个被标记出来的“it”都指向“hotel”这个实体。

知识图谱动手构建:

NEO4J

知识图谱的存储

这个地方对小白不太友好:

RDF形式上表示为SPO三元组,有时候也称为一条语句(statement),知识图谱中我们也称其为一条知识,如下图。
主要是方便
在这里插入图片描述

在这里插入图片描述

Neo4j 和 Python 的py2neo

关于Neo4j: 使用了官网上的 sandbox 在线版。这样省去了大量的环境配置时间。
Sandbox

Cypher查询语言:对应于SQL在关系数据库中的程序语言。

实验演示:

所包含的三种基本的:实体–关系–实体

  • Person-Friends-PERSON
  • Person-Married-PERSON
  • Person-Born_in-Location

创建节点:人物节点和location节点
创建关系:人物间关系和出生地和人物的关系
这些关系还包含一部分属性
图数据库的查询:
删除和修改:

##通过python的py2neo来进行控制

  • neo4j模块:执行CQL ( cypher ) 语句
  • py2neo模块:通过操作python变量,达到操作neo4j的目的
  g = Graph(url+user+code)

通过csv文件批量导入图数据

csv分为两个nodes.csv和relations.csv,注意关系里的起始节点必须是在nodes.csv里能找到的

参考资料

  1. 干货 | 从零到一学习知识图谱的技术与应用
  2. 手把手教你快速入门知识图谱 - Neo4J教程
  3. python操作图数据库neo4j的两种方式
  4. Neo4j之导入数据
  5. schema 介绍
  6. 知识图谱Schema
  7. 美团大脑:知识图谱的建模方法及其应用
  8. 肖仰华. 知识图谱:概念与技术.北京:电子工业出版社, 2020.2-39.
<think>好的,我需要帮助用户解决关于使用ASP.NET开发校园社交平台的毕业设计的问题。首先,用户需要相关资料或指导,包括示例代码和设计方案。我需要结合之前的引用内容,尤其是引用[3]提到的ASP.NET校园一卡通管理系统,这可能提供一些参考。 首先,我应该考虑校园社交平台的基本功能模块。用户管理、动态发布、好友系统、消息通知、权限控制这些应该是核心模块。然后,技术选型方面,ASP.NET MVC或Core都是合理的选择,搭配Entity Framework和SQL Server,前端可以用Bootstrap和jQuery,可能还有Vue.js。 接下来,数据库设计部分需要详细说明,比如用户表、动态表、好友关系表等。每个表的结构要明确,字段和类型都要列出来。例如用户表可能有UserID、Username、PasswordHash、Email、Role等字段。 系统架构方面,分层设计是常见的做法,比如表现层、业务逻辑层、数据访问层。需要解释每层的作用,如何实现前后端分离,以及API的设计。 然后,示例代码部分,可能需要提供一些关键功能的代码片段,比如用户注册的控制器方法,动态发布的视图,或者好友管理的逻辑。这部分要确保代码符合ASP.NET的规范,使用C#语言。 安全性和扩展性也是需要考虑的。比如如何防止SQL注入,使用身份认证机制,以及未来可能的功能扩展点,比如数据分析或移动端适配。 最后,参考资料和推荐项目,引用已有的ASP.NET项目,如引用[3]中的校园一卡通系统,可以引导用户参考类似结构。同时,提供获取示例代码的途径,比如GitHub或联系导师。 整个过程中,需要确保回答结构清晰,分点说明,符合用户要求的格式。同时,检查是否覆盖了用户提到的毕业设计所需的各个方面,并确保引用正确,比如引用[3]的相关内容。可能还需要提醒用户注意系统设计中的权限管理和数据可视化,这些在引用[3]中也有涉及,可以借鉴。</think>### 使用 ASP.NET 开发校园社交平台的毕业设计方案 #### 一、系统核心功能模块 1. **用户管理** - 注册/登录(支持邮箱验证、第三方登录) - 个人资料编辑(头像、简介、隐私设置) - 角色权限控制(学生、教师、管理员)[^3] 2. **社交动态** - 图文/视频动态发布与删除 - 动态点赞、评论、分享功能 - 动态分类标签(如#学习#、#活动#) 3. **好友与消息系统** - 好友添加/删除/分组管理 - 私信聊天(支持文本和文件传输) - 系统通知(如新评论、好友请求) 4. **校园特色功能** - 课程/社团活动组队模块 - 校园论坛分区(学术交流、二手交易) - 基于角色的内容审核机制[^3] --- #### 二、技术选型与工具 | 模块 | 技术方案 | 说明 | |--------------|-----------------------------------|------------------------------------------| | 后端框架 | ASP.NET Core MVC | 支持依赖注入和跨平台部署 | | 数据库 | SQL Server + Entity Framework Core | 使用Code First模式进行数据迁移管理 | | 前端 | Bootstrap + jQuery/Vue.js | 响应式布局适配多端访问 | | 实时通信 | SignalR | 实现聊天消息的即时推送 | | 安全认证 | ASP.NET Identity | 支持OAuth 2.0和JWT令牌验证 | --- #### 三、数据库设计示例 1. **用户表 (Users)** ```sql CREATE TABLE Users ( UserID INT PRIMARY KEY IDENTITY, Username NVARCHAR(50) UNIQUE, PasswordHash NVARCHAR(256), Email NVARCHAR(100) UNIQUE, AvatarUrl NVARCHAR(200), CreatedAt DATETIME DEFAULT GETDATE(), Role INT DEFAULT 0 -- 0:学生, 1:教师, 2:管理员 ); ``` 2. **动态表 (Posts)** ```sql CREATE TABLE Posts ( PostID INT PRIMARY KEY IDENTITY, Content NTEXT, UserID INT FOREIGN KEY REFERENCES Users(UserID), PostTime DATETIME DEFAULT GETDATE(), LikeCount INT DEFAULT 0, Visibility INT DEFAULT 0 -- 0:公开, 1:好友可见 ); ``` --- #### 四、关键代码示例 1. **动态发布控制器 (C#)** ```csharp [Authorize] public class PostController : Controller { private readonly AppDbContext _context; public PostController(AppDbContext context) { _context = context; } [HttpPost] public async Task<IActionResult> CreatePost(PostViewModel model) { var userId = User.FindFirstValue(ClaimTypes.NameIdentifier); var post = new Post { Content = model.Content, UserId = int.Parse(userId), Visibility = model.Visibility }; _context.Posts.Add(post); await _context.SaveChangesAsync(); return RedirectToAction("Index"); } } ``` 2. **SignalR 聊天中心** ```csharp public class ChatHub : Hub { public async Task SendMessage(string receiverId, string message) { await Clients.User(receiverId).SendAsync("ReceiveMessage", Context.User.Identity.Name, message); } } ``` --- #### 五、扩展功能建议 1. **数据可视化** - 使用ECharts展示用户活跃度热力图(参考一卡通系统的可视化方案) - 生成用户社交网络关系图谱 2. **移动端适配** - 开发PWA渐进式Web应用 - 集成推送通知服务(如Firebase Cloud Messaging) --- #### 六、参考资料获取 1. **推荐项目结构** - 参考[校园一卡通管理系统](^3)的分层设计与权限实现 - 学习ASP.NET Identity的[官方文档](https://docs.microsoft.com/aspnet/core/security/) 2. **代码资源** - GitHub搜索:`ASP.NET Social Platform` - NuGet常用包:`Microsoft.AspNetCore.SignalR`, `AutoMapper`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值