# CivilAviation Q&A
基于民航业知识图谱的自动问答系统。
A QA system based on Civil Aviation knowledge graph.
## 平台
- Windows 10 x64
- Python 3.7
- Neo4j community 3.5.20
## 运行
1. 确保安装所需依赖
```
pip install -r requirements.txt
```
注:`python-Levenshtein` 如果安装不成功,则可以下载对其进行离线安装。
2. 构建知识图谱
修改`const.py`文件中连接数据库使用的`URI`,`USERNAME`和`PASSWORD`的值。然后执行:
```
python build_cakg.py
```
运行大约需要2~5分钟。
3. 可以使用两种方式运行:
1. 运行命令行端
```
python run_cmd.py
```
普通问题的回答以字符串的形式给出;带有图表的回答,图表会被渲染至`results`文件夹中。
2. 运行web端(效果图见下文)
```
python run_web.py
```
带有图表的回答和普通回答一样会被渲染至web页面中,同时也被保存至本地`results`文件夹中。
注1:最好使用谷歌浏览器(Google Chrome);
注2:生成图表的文件夹地址可以在`const.py`中更改`CHART_RENDER_DIR`。
4. have fun!
## 简介
### 一. 项目结构
```
--------------------------------------- root
|------data/ # 数据存放
|------dicts/ # 存放特征词(运行build_cakg.py后自动生成)
|------question/ # 存放问句中的疑问词
|------reference/ # 存放指代词
|------tail/ # 存放尾词(后缀词)
|------data.json # 从年报中组织出的数据
|------raw.7z # 11-19年的年报
|------demo/ # 以jupyter-notebook的形式给出了各种问题类型的演示和说明
|------doc/ # 存放有关readme的文件
|------lib/ # 函数库
|------results/ # 存放某些问题生成的图表(会自动生成)
|------test/ # 存放一些单元测试
|------web/ # web app
......
|------answer_search.py # 回答组织器
|------build_cakg.py # 构建知识图谱
|------chatbot.py # 自动问答器
|------const.py # 常量
|------question_classifier.py # 分类器
|------question_parser.py # 解析器
......
```
### 二. 数据组织
#### 1. 基本构想
通过浏览公报发现:
1. 每一年所涉及的目录大差不差,有时多有时少,或者只是改个名字;
2. 目录中涉及的指标每年都有一定的变动,而且某些指标里面嵌套指标,还有些指标中给出了各地区的组成值;
3. 指标的值有数值类型,也有字符串类型,有的有单位,有些则没有,而且有些单位在某些年份还不同。
基于上述几点,我将知识图谱的构建以年份为中心展开,将各个目录、指标等等实体作为知识图谱的结点。结点与结点之间相连接的关系称为`结构关系`(详细见下文),那么将每个年份结点到各个指标和地区的关系称为`值关系`(详细见下文)。将结构和值两种关系拆开,
1. 从结构关系来看,不用一个年度录入一个年度的所有指标,每个年度中肯定有重复指标,这样避免了数据冗余。若每年的指标位置基本不变,则上述做法直接可行,但实际上指标出现的位置可能每年都飘忽不定,所以若直接按上述做法会出现这种情况:
`假设2012年指标C1包含指标A、B,指标C2包含指标C;2013年指标C1包含指标A,指标C2包含指标B、C;则其结构关系为:`
![rel](doc/struct.png)
其中橙色的边是2012年特有的,蓝色的则是2013年特有的,而黑色的是它们共有的。但在知识图谱中这些边没有颜色之分,是按上图整个结构存储的,这就造成了一个父子结构关系错乱的问题,比如:我要查找13年指标C1包含的所有指标,则A和B都会被返回,而实际上B不应该被返回。
为了解决上述问题,并且不增加任何额外的关系,我为每个关系引入了一个生命周期属性`life`。这个属性运用了掩码的思想,每个年份维护自己的掩码(运行构建知识图谱脚本时会被自动生成),在遇到上述问题时,拿来和关系中的life做`与`运算,若结果不为0,就说明此年份包含此指标,反之则不含。
2. 从值关系来看,问题中也是直接给出年份和指标名称,这样也方便查询。
部分结点间的关系如下图:(橙色为年份,棕色为目录,蓝色为指标)
![kg1](doc/graph-1.png)
部分结点间的关系如下图:**(橙色为年份,棕色为目录,蓝色为指标,红色为地区/机场/公司集团,下同)**
![kg2](doc/graph-2.png)
#### 2. 知识图谱实体类型
| 实体类型 | 含义 | 数量 | 举例 |
|--|--|--|--|
| Year | 年份 | 9 | 2011,2012 |
| Catalog | 目录 | 16 | 运输航空,航空安全 |
| Index | 指标 | 242 | 运输总周转量,货邮运输量 |
| Area | 地区/机场/公司集团 | 35 | 港澳台,中航集团 |
#### 3. 知识图谱实体关系类型
| 实体结构关系类型 | 含义 | 数量 | 举例 |
|--|--|--|--|
| include | 年度包括目录、目录包括指标 | 193 | ![include](doc/graph-include.png)|
| contain | 指标(父)含有指标(子)、地区(父)含有地区(子) | 148 | ![contain](doc/graph-contain.png)|
| locate | 指标位于某地区 | 93 | ![locate](doc/graph-locate.png)|
| 实体值关系类型 | 含义 | 数量 | 举例 |
|--|--|--|--|
| info | 某年度的目录信息 | 45 | ![info](doc/graph-info.png)|
| value | 某年度的指标值 | 1194 | ![value](doc/graph-value.png) |
| 具体的指标名称 | 某年度某地区的指标值 | 781 | ![index-name](doc/graph-indexname.png)|
#### 4. 知识图谱属性类型
| 属性类型 | 含义 | 举例 |
|--|--|--|
| info | 年份或目录的整体概况 | 全年航空安全形势稳定,旅客运输和... |
| name | 各实体名称 | 2014,国内,货邮周转量 |
| value | 指标或地区的值 | 451.2,0,22 |
| unit | 指标或地区值的单位 | 亿吨公里,%,万元 |
| repr | 地区值所代表的含义 | 航线(不含港澳台),吞吐量占比 |
| child_id | 同一(父)指标下不同(子)指标拥有相同child_id的可视为构成父指标的一个角度 | 0,1,2 ... |
| life | (结构关系)生命周期 | 0x179, 0x008 |
### 三. 问题预处理
主要指年份和指标两个角度的预处理,此部分详见`lib/complement.py`。
1. 年份角度
对问题中的年份进行替换,方便特征词识别,例:
```
11年 -> 2011年
两千一十一年 -> 2011年
11-15年 -> 2011年,2012年,2013年,2014年,2015年
13到15年 -> 2013年,2014年,2015年
13年比前年 -> 2013年比2011年
15年比大大前年 -> 2015年比2011年
16年比3年前 -> 2016年比2013年
16年与前三年相比 -> 2016年与2015年,2014年,2013年相比
......
```
2. 指标角度
对问题中的指标名进行替换,避免因错字漏字而特征词识别不成功。通过`Levenshetin`算法实现对指标名的模糊查询。例:
```
游客周转量 -> 旅客周转量
......
```
### 四. 问题分类
问题的分类是基于特征词的分类,使用`ahocorasick`算法。
下表给出的是各种问题的类型,更详细的内容请参见项目`demo`中的`demo1~4.ipynb`。
| 问题类型 | 含义 | 举例 |
|--|--|--|
| year_status | 年度整体状况 | 2011年整体状况如何? |
| catalog_status | 年度目录状况 | 2012年教育�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
知识图谱是一种结构化的知识表达形式,它以图形的方式组织和存储了大量实体(如人、地点、事件等)及其相互关系。在知识图谱中,实体作为节点,实体之间的各种语义关联则通过边进行连接,形成了一个庞大的数据网络。 知识图谱的核心价值在于其能够精确、直观地表示复杂世界中的知识,并支持高效的知识查询与推理。例如,在搜索引擎中,知识图谱可以提升搜索结果的相关性和准确性,为用户提供直接的答案而非仅仅是网页链接。同时,知识图谱还能支撑高级的人工智能应用,比如问答系统、推荐系统、决策支持等领域。 构建知识图谱的过程通常包括数据抽取、知识融合、实体识别、关系抽取等多个步骤,涉及到自然语言处理、机器学习、数据库技术等多种技术手段。知识图谱的不断完善有助于实现从海量信息中挖掘深层次、有价值的知识,从而推动人工智能向着更加理解人类世界的智慧方向发展。 总之,知识图谱是一个大规模、多领域、多源异构知识集成的载体,是实现智能化信息系统的基础工具和关键基础设施,对于提升信息检索质量、推动智能应用研发具有重要作用。
资源推荐
资源详情
资源评论
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![exe](https://img-home.csdnimg.cn/images/20210720083343.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
收起资源包目录
![package](https://csdnimg.cn/release/downloadcmsfe/public/img/package.f3fc750b.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/7Z.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/TXT.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/TXT.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/TXT.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/TXT.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/TXT.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/TXT.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/TXT.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/TXT.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/TXT.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/TXT.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/TXT.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/HTML.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/HTML.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/HTML.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/HTML.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/HTML.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/HTML.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/HTML.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/HTML.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/HTML.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/HTML.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/HTML.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/HTML.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/HTML.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/TXT.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
共 78 条
- 1
资源评论
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/2b17cb8b32224168bb8ed166a94dd8f6_weixin_56154577.jpg!1)
JJJ69
- 粉丝: 6269
- 资源: 5775
![benefits](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-1.c8e153b4.png)
下载权益
![privilege](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-2.ec46750a.png)
C知道特权
![article](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-3.fc5e5fb6.png)
VIP文章
![course-privilege](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-4.320a6894.png)
课程特权
![rights](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-icon.fe0226a8.png)
开通VIP
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)