网易首页 > 网易号 > 正文 申请入驻

Python实现自动问答系统(毕设源码)

0
分享至


平台

  • 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、可以使用两种方式运行:

①. 运行命令行端

python run_cmd.py

普通问题的回答以字符串的形式给出;带有图表的回答,图表会被渲染至results文件夹中。

②. 运行web端(效果图见下文)

python run_web.py

带有图表的回答和普通回答一样会被渲染至web页面中,同时也被保存至本地results文件夹中。

注1:最好使用谷歌浏览器(Google Chrome);

注2:生成图表的文件夹地址可以在const.py中更改CHART_RENDER_DIR。

4、have fun!

简介

1、项目结构

--------------------------------------- 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 # 解析器

2、数据组织

①. 基本构想

通过浏览公报发现:

  • 每一年所涉及的目录大差不差,有时多有时少,或者只是改个名字;

  • 目录中涉及的指标每年都有一定的变动,而且某些指标里面嵌套指标,还有些指标中给出了各地区的组成值;

  • 指标的值有数值类型,也有字符串类型,有的有单位,有些则没有,而且有些单位在某些年份还不同。

基于上述几点,我将知识图谱的构建以年份为中心展开,将各个目录、指标等等实体作为知识图谱的结点。结点与结点之间相连接的关系称为结构关系(详细见下文),那么将每个年份结点到各个指标和地区的关系称为值关系(详细见下文)。

将结构和值两种关系拆开:

  • 从结构关系来看,不用一个年度录入一个年度的所有指标,每个年度中肯定有重复指标,这样避免了数据冗余。若每年的指标位置基本不变,则上述做法直接可行,但实际上指标出现的位置可能每年都飘忽不定,所以若直接按上述做法会出现这种情况:

假设2012年指标C1包含指标A、B,指标C2包含指标C;2013年指标C1包含指标A,指标C2包含指标B、C;则其结构关系为:

其中橙色的边是2012年特有的,蓝色的则是2013年特有的,而黑色的是它们共有的。但在知识图谱中这些边没有颜色之分,是按上图整个结构存储的,这就造成了一个父子结构关系错乱的问题,比如:我要查找13年指标C1包含的所有指标,则A和B都会被返回,而实际上B不应该被返回。

为了解决上述问题,并且不增加任何额外的关系,我为每个关系引入了一个生命周期属性life。这个属性运用了掩码的思想,每个年份维护自己的掩码(运行构建知识图谱脚本时会被自动生成),在遇到上述问题时,拿来和关系中的life做与运算,若结果不为0,就说明此年份包含此指标,反之则不含。

  • 从值关系来看,问题中也是直接给出年份和指标名称,这样也方便查询。

部分结点间的关系如下图:(橙色为年份,棕色为目录,蓝色为指标)

部分结点间的关系如下图:(橙色为年份,棕色为目录,蓝色为指标,红色为地区/机场/公司集团,下同)

②. 知识图谱实体类型

③. 知识图谱实体关系类型

④. 知识图谱属性类型

3、问题预处理

主要指年份和指标两个角度的预处理,此部分详见lib/complement.py。

①. 年份角度 对问题中的年份进行替换,方便特征词识别,例:

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年相比
......

②. 指标角度 对问题中的指标名进行替换,避免因错字漏字而特征词识别不成功。通过Levenshetin算法实现对指标名的模糊查询。例:

游客周转量 -> 旅客周转量

4、问题分类

问题的分类是基于特征词的分类,使用ahocorasick算法。

下表给出的是各种问题的类型,更详细的内容请参见项目demo中的demo1~4.ipynb。

5、Web APP

web端使用Flask构建,采用前后端分离的方式。问答界面较为简洁。但可实现以下功能:

  • 回答带有的图表可以直接渲染至页面;

  • 回答中某些关键词以tooltips的形式进行了解释说明(关键词取自年报的注释部分)。

源码文件预览

1、点击下方图片拉到文末点喜欢作者赞赏2

2、我核实后会直接回复你源码下载链接,如未能及时回复可以添加小二微信,小二直接用微信发你~

不是机器人

耐心等待,不要着急




特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
2015年广西小伙丁一舟带着绝症女友,骑车环游中国,如今怎么样了

2015年广西小伙丁一舟带着绝症女友,骑车环游中国,如今怎么样了

洞鉴历史
2024-01-08 12:24:11
来自从台湾回来游客的自述:这才是真实的台湾,别再被网上的骗了

来自从台湾回来游客的自述:这才是真实的台湾,别再被网上的骗了

小lu侃侃而谈
2024-06-13 15:07:39
史上首位中专生,17岁女学生姜萍冲进阿里巴巴全球数学竞赛决赛

史上首位中专生,17岁女学生姜萍冲进阿里巴巴全球数学竞赛决赛

IT之家
2024-06-13 15:18:29
实话实说,这8名球员100%代表国足出征18强赛!

实话实说,这8名球员100%代表国足出征18强赛!

人生趣事悟语
2024-06-13 00:36:15
妻子为男闺蜜当众泼我一杯酒,1天后她道歉,我直言:晚了

妻子为男闺蜜当众泼我一杯酒,1天后她道歉,我直言:晚了

吉祥情感屋
2024-06-12 11:28:14
文旅局局长被指“官谱太大” 调研时有人打伞? 本人回应

文旅局局长被指“官谱太大” 调研时有人打伞? 本人回应

蓬勃新闻
2024-06-13 09:36:31
再见,美利坚!华人回国潮突现,他们离开美国的真正原因是什么?

再见,美利坚!华人回国潮突现,他们离开美国的真正原因是什么?

咖啡店的老板娘
2024-05-20 21:25:05
湖北孝感出台新政鼓励无偿献血,这些政策我觉得一个字:好极了!

湖北孝感出台新政鼓励无偿献血,这些政策我觉得一个字:好极了!

正经说个事儿
2024-06-13 09:23:48
广东梅州七旬老汉被邻居殴打后成植物人,法院一审判被告九年十个月,家属:已申请抗诉

广东梅州七旬老汉被邻居殴打后成植物人,法院一审判被告九年十个月,家属:已申请抗诉

极目新闻
2024-06-12 22:57:52
身价200万欧元!国足即将出手搞定一位大牌新归化,本人同意入籍

身价200万欧元!国足即将出手搞定一位大牌新归化,本人同意入籍

评球论事
2024-06-11 17:03:59
天雷滚滚!华人网红夫妻伪装爱马仕代购,发货快递装GPS再雇人抢回?狂赚6000万!

天雷滚滚!华人网红夫妻伪装爱马仕代购,发货快递装GPS再雇人抢回?狂赚6000万!

最英国
2024-06-13 07:33:45
演员邓超突然发声!

演员邓超突然发声!

娱记掌门
2024-06-13 10:07:52
媒体人:伊万的水平已经足够 恐怕没教练能带国足进世界杯

媒体人:伊万的水平已经足够 恐怕没教练能带国足进世界杯

直播吧
2024-06-13 19:24:07
台湾安排到解放军内部的间谍身份曝光后,很多人肠子都悔青了

台湾安排到解放军内部的间谍身份曝光后,很多人肠子都悔青了

寻史奇谈
2024-06-12 07:55:02
黄一鸣赢了!王健林王思聪父子财富大涨568亿,重回前十名

黄一鸣赢了!王健林王思聪父子财富大涨568亿,重回前十名

财话连篇
2024-06-13 09:16:28
河南64岁大爷五年间染指55名女性,只因太了解女性心理

河南64岁大爷五年间染指55名女性,只因太了解女性心理

真实故事汇
2024-05-06 13:31:30
滕哈赫将续约曼联2年!留队后首发声,今夏仅3500万预算,想买3人

滕哈赫将续约曼联2年!留队后首发声,今夏仅3500万预算,想买3人

风过乡
2024-06-13 07:23:57
冯提莫健身直播走光!直播间当场被封禁,网友嘲讽:“垫大欺客”

冯提莫健身直播走光!直播间当场被封禁,网友嘲讽:“垫大欺客”

青芳草
2024-06-13 08:50:35
太离谱!男子买的熟食被陌生大姨提走,视频曝光,当事人发声!

太离谱!男子买的熟食被陌生大姨提走,视频曝光,当事人发声!

皖声微言
2024-06-13 11:05:14
实锤!美军方确认俄罗斯预警机被“爱国者”击落!

实锤!美军方确认俄罗斯预警机被“爱国者”击落!

凡事一定有办法13119
2024-06-11 08:45:42
2024-06-14 03:46:44
Python小二
Python小二
人生苦短,我用Python!
387文章数 1899关注度
往期回顾 全部

科技要闻

小红书员工仅1/5工龄满2年 32岁就不让进了

头条要闻

上海楼市新政后有业主熬夜卖房:比之前最低价高360万

头条要闻

上海楼市新政后有业主熬夜卖房:比之前最低价高360万

体育要闻

乔丹最想单挑的男人走了

娱乐要闻

森林北报案,称和汪峰的感情遭受压力

财经要闻

私募大佬孙强:中国为什么缺少耐心资本

汽车要闻

升级8155芯片 新款卡罗拉锐放售12.98-18.48万

态度原创

本地
艺术
教育
房产
时尚

本地新闻

粽情一夏|海河龙舟赛,竟然成了外国人的大party!

艺术要闻

穿越时空的艺术:《马可·波罗》AI沉浸影片探索人类文明

教育要闻

TTS新传论文带读:粉过恋爱兄妹的李龙宇是我的赛博案底…

房产要闻

再度告急!海口连续仨月住宅入市不足千套!竟有楼盘卖爆!

受法律保护的可颂,究竟有多好吃!?

无障碍浏览 进入关怀版