# 2021年夏季学期Java程序设计与训练大作业——知识图谱智能教育安卓端应用设计与实现

> Credit to Bowen Zhao

## 1 作业题目

实现一个安卓端的基于知识图谱的智能教育App。最低支持安卓系统版本为8.0（minSdkVersion为API26）

参考：https://developer.android.com/guide/topics/manifest/uses-sdk-element.html

## 2 作业描述

### 2.1 项目背景介绍

基础教育知识图谱（EDUKG）是一个大规模的基础教育领域的知识图谱，它提供了基础教育领域中的多维知识描述，还包含与其他基础教育文本资源的实体连接。 另外，EDUKG是基于基础教育领域权威的教材教辅资料和海量的互联网文本资源，通过知识图谱构建技术构建得到， 所包含的内容非常丰富。可以通过知识图谱的搜索功能进行实体搜索，搜索结果既展示了该实体与其他实体的关系，也展示了该实体的所有属性及知识来源。

EDUKG成功把基础教育领域的知识表示成为一个知识图谱，构造出一个包含700多个类、180多万个实例、2000多种属性、2200万条三元组的基础教育知识图谱，并应用到智慧教育中，包括知识问答、知识搜索、知识梳理、知识链接、知识关联等多种应用，并封装成数据接口为相关领域研究者提供服务。

EDUKG为计算机提供了实现该领域中认知智能的可能性，使计算机成为拥有基础教育知识的虚拟教师或者学习伙伴。如何有效使用EDUKG当中蕴含的数据资源，将其中包含的知识加以利用，开发出下游具有实际应用价值的终端产品，是“互联网+”教育这一领域当中的重要问题。

### 2.2 接口描述

本次大作业需要开发的系统结构包括服务端和客户端两部分，服务端负责调用Open EDUKG平台提供的接口，查询基础教育知识图谱当中的相关信息（实体检索、实体链接、实体关联、题目关联等）；客户端从服务器拉取基础教育相关数据并实现相关功能，包括基础教育实体检索、展示以及相关进阶功能。

接口url及接口说明见http://open.edukg.cn/help。

## 3 评分细则

本次大作业总分100分，分为开题分数和结题分数两部分，其中开题分数占10分，结题分数占90分。

### 3.1 开题分数

开题时需要提交一篇大作业设计文档，以小组为单位提交，每小组提交一份即可。在其中必须阐明的内容有：

- 附加功能的选择
- 人员分工
- 整体应用的框架（前、后端；是否需要自己实现算法端）
- 工作计划
- 简单的UI设计（可选）

### 3.2 结题分数

结题分数的90分为基础功能和加分功能两部分。基础功能总分值为75分，又分为子功能（80%）和子性能（20%），其中子功能每项内容只要完成实现即可得分，子性能每项内容需要达到对应条件才可得分，要求实现所有的基础功能；附加功能的总分数为15分，依照功能综合性能酌情给分。评分细则如表1。

#### 基础功能

| 功能         | 功能描述                                                     | 功能分数百分比（%） | 性能指标                         | 性能分数百分比（%） |
| ------------ | ------------------------------------------------------------ | ------------------- | -------------------------------- | ------------------- |
| 页面布局     | 布局合理，点击处理正确                                       | 4                   | 美观，布局合理  ，有多种布局形式 | 1                   |
| 学科分类列表 | 删除和添加操作                                               | 4                   | 修改时有动态特效（参照今日头条） | 1                   |
| 实体列表     | 正确显示实体列表的信息，布局和展示，点击进入实体详情页面正确。 | 8                   | 布局合理美观                     | 2                   |
| 本地缓存     | 实现实体详情页的本地存储，看过的实体列表及详情页在离线的情况下也可以浏览。实体详情页访问过的页面进行灰色标记。 | 8                   | 本地可存储页面数量大响应快       | 2                   |
| 实体检索     | 实体搜索及历史记录，并且搜索结果有多种排序和筛选机制（可使用开放平台接口）。 | 4                   | 搜索页面合理美观                 | 1                   |
| 实体链接     | 实现针对基础教育文本的知识点发现功能，识别出一段输入文本中含有的基础教育知识点（可使用开放平台接口）。 | 4                   | 知识点发现页面合理美观           | 1                   |
| 知识问答     | 实现针对基础教育简单问题的问答机器人页面（可使用开放平台接口）。 | 8                   | 问答对话页面合理美观             | 2                   |
| 实体详情页   | 合理展示实体的描述、属性、关系及关联试题（上述几条须都展示）等，可参考https://covid-19.aminer.cn/kg/对实体的查询和展示。 | 8                   | 布局合理美观                     | 2                   |
| 分享收藏     | 使用微博、微信（有一个即可）等SDK分享实体详情页和题目，实体详情页面或试题页面点击分享可以分享到常用的app，分享内容带有摘要。 | 4                   | 分享页面合理美观                 | 1                   |
| 用户系统     | 实现登陆功能，可将收藏信息同步到服务器，保存用户浏览历史记录（服务器后端部分需自行设计） | 8                   | 登录系统安全合理                 | 2                   |

#### 附加功能（方向意见）

| 功能     | 功能描述                                                     | 功能分数 | 性能指标                         | 性能分数 |
| -------- | ------------------------------------------------------------ | -------- | -------------------------------- | -------- |
| 专项测试 | 针对用户给出的希望学习的知识点给出一套题目，让用户做题并完成打分。<br /> | 2        | 页面展示美观，题目链接知识点准确 | 2        |
| 知识梳理 | 针对用户希望学习的知识点，自动构建出一套复习提纲并展示       | 3        | 页面展示美观，提纲内容准确合理   | 2        |
| 试题推荐 | 针对用户以往的做题历史记录以及访问记录，对用户进行试题的推荐 | 4        | 页面展示美观，推荐内容合理       | 2        |

**注：为了鼓励大家发挥自己的创造性，如果实现了上述未提及的附加功能，会得到相同工作量子功能分数的200%，单项功能的子功能分数最高不超过8分，最少不低于2分；单项附加功能任务的子性能分数均为2分。另外由于本课程的重点在于Java语言的程序设计与训练，而不是机器学习算法，因此上述功能的实现只要合理即可，对于实际算法的准确性并没有明确、硬性的baseline。**

## 4 提交方法

所有文档和代码必须通过网络学堂提交，每组仅需组长提交即可，其余组员无需提交。大作业报告要求按照报告模板进行撰写，在报告内必须真实地注明大作业实现功能及组内分工。在线下评测过程中，要求组内所有组员到场，如遇特殊情况无法到场可以申请使用线上会议形式参与评测，评测时助教将会进行一些简单的提问以保证分工的真实性。

文件打包格式需如下（格式有误，报告分数记为0分）：

```
根目录（命名为：姓名_学号_大作业.zip）
|-- 大作业报告.pdf
|-- apk文件（项目名称自拟）
|-- 源代码目录（项目名称自拟）
```

## 5 应用竞赛

在Java程序设计训练课程开展同期将会开展**知识图谱智能教育应用大赛**，竞赛网址为https://www.biendata.xyz/competition/edukg/，竞赛的相关规则和时间轴已经在网站上公布。该竞赛的题目与课程大作业保持一致，我们鼓励各小组组队报名参加该项比赛，该项比赛的阶段一评测和大作业的开题将会合并开展。共计有15支队伍将会进入到该项赛事的决赛当中，所有进入决赛的队伍将会免去最终应用评测且获得本课程A以上的成绩（该竞赛的前6名可以还获得对应奖级的奖金）。**报名参赛但未进入决赛的队伍仍要进行大作业的评测以获得课程成绩。**

## 6 大作业说明

- 本次大作业要求三人一组完成
- 基础功能要求原则上全部实现，完成后才能对附加功能部分进行评审。不允许在有基础功能为实现的情况下实现附加功能，如遇此情况，则附加功能均不得分。
- 大作业最后将apk文件下载到安卓手机上进行评测。助教会下载上传到网络学堂的apk文件到评测机上进行评测。为保证每个同学的包名是唯一的，需要将包名确定为com.java.姓名 这种格式，姓名为组长英文拼音。
- 按照大作业报告模板撰写报告，每小组由组长提交一份即可
- 按时提交。由于大作业提交时间较晚，延期提交会导致无法及时上报课程分数，因此大作业不接受任何形式，因任何原因而导致的迟交，请务必注意。
- 申请使用微博、微信SDK的流程较为繁琐，如果未能在提交大作业前申请通过，实现前段相关接口并在报告中上传申请截图也可以得到全部分数。
- 如对于上述内容有任何疑问，可发送邮件至zhaobw1998@sina.com与助教联系，或联系助教微信zhaobowen98。

