资源简介
基于知识图谱的智能问答系统python实现(复旦大学论文基于qa语料和知识库的问答系统)
代码片段和文件信息
#! -*- coding:utf-8 -*-
import pickle
from connectSQLServer import connectSQL
host = ‘172.16.54.33‘
user = ‘sa‘
password = ‘chentian184616_‘
database= ‘chentian‘
querySQL = connectSQL(host user password database)
class Pro_onlines(object):
def __init__(selfEV):
self.EV=EV
self.sql_current_evp=“SELECT COUNT(*) FROM [chentian].[dbo].[baike_triples1] WHERE entity =‘%s‘ AND property=‘%s‘“
self.sql_baidutag=“SELECT value FROM [chentian].[dbo].[baike_triples1] WHERE entity =‘%s‘ AND property=‘BaiduTAG‘“
# self.entity_values=entity_values
# self.value_entities=value_entities
self.concept_fre=pickle.load(open(“./../data/concept_count.pkl“‘rb‘))
def calculate_piq(selfque1):
“““
计算当前问题qi的每一个实体的概率,可以认为是当前实体对当前问题的重要程度,计算了三个概率,并且这三个概率,都可以通过当前问题,进行计算,
计算了p(e|q)的概率,计算时由于对EV对可能有多个重复实体记录,所以需要把分母进行累加计算,具体看代码56-57行,分子为所有实体额记录频数。
第二个概率变化为,根据两篇论文,最终采用当前实体对应的类别的概率采用e:{c1:pre1c2:pre2...}的形式,
第三个概率,论文中提到对于e,p的多个value采用均匀概率,并且唯一value概率为一。至此三个概率
:param qi: 当前问题,以及对应的三元组形成的数据
:return: 返回当前问题中每个实体对应p(e/q)已经求出
“““
print(que1.keys()“$$$$$$$$$$$$$$“)
evi=list(que1.values())[0]#问题中的所有(实体-属性-值)
currente_pre1 = {} #当前问题的第一个概率p(e|qi)
currente_pre2 = {} # 是每一个实体对应value不同实体的频数
current_pteq={}#对于问题模板的类别概率问题 e_c = {} # 保存每一个实体对应的类别概率e:{c1:pre1c2:pre2...}
current_pvep={}#对于当前问题的实体意图对应的value值得概率
for key in evi.keys():
e_c_pre = {} # 当前问题每一个实体e对应的类别c的频数。
epv=key.split(“&&&&&“)#接下来对每一个v 遍历每一个问题中所有的相同v得到对应的实体e,并且记录实体出现的频数 实体e可能出现多次对第一个概率没有影响,但是对第二个有影响,本来有结果,
# 重复第二次没有对应baidutag,则会重新赋值为空,
if v!=‘‘ and p!=‘‘ and v!=‘‘:
current_e = 0 # 当前实体对应的频数 分子
current_alle = 0 # 对当前value的不同实体记总数 分母
entity_value_temp=self.entity_values[e]#得到对应实体的value以及频数
value_entity_temp=self.value_entities[v]#得到对应value的
for entity_keyentity_pre in entity_value_temp.items():
if entity_key==v:
current_e=entity_pre
current_alle=sum(list(value_entity_temp.values()))
currente_pre1[e]=float(current_e)/float(current_alle)
print(currente_pre1)
# current_pvep_pre=querySQL.Query(self.sql_current_evp%(ep))[‘‘][0] #计算同一实体e同一意图p的不同值v的个数
# current_pe=0 #当前实体,对应类别(pe)共同满足的个数
# current_allp=0 #当前实体的频数在整个EV中,作为求类别的分母。
# for que_ev in self.EV: #整个for循环就把所有的实体遍历所有问题
# current_evi=list(que_ev.values())[0] #当前EV当前问题的所有实体对
# for key1 in current_evi.keys(): #对于每一个实体对
# e1p1v1=key1.split(“&&&&&“)
# if v ==v1: #如果value相同
# current_alle+=1 #对应实体的value其他共有多少实体的频数
# if e1==e:curr
相关资源
- Learning Python(3rd.Edition.完整书签目录
- 创建画板,手写体实时在线识别
- Python程序设计-董付国第二版教学课件
- python核心编程+python基础教程+流畅的
- pyqt4-4.11 for python 2.7
- Effective python 中英文 pdf
- Artificial Intelligence with Python 无水印p
- python-3.6.4-amd64
- 图灵书籍(Python数据分析基础.pdf+Py
- 基于Python的http流抓取系统
- python-3.6.3.exe zip包
- Python3-教程
- 吴恩达机器学习python代码
- opencv_python-3.4.2.16-cp35-cp35m-win_amd64.wh
- Python机器学习经典及随书代码
- 深度学习入门:基于Python的理论与实
- Natural Language Processing with PyTorch
- Django for Beginners: Learn web development wi
- Data Analytics with Spark Using Python
- 《深度学习入门:基于Python的理论与
- 01_python基础_版本.pdf
- 外星人入侵源代码
- 线性分类器代码
- pynaoqi-python2.7-2.1.4.13-win32-vs2010.zip
- Python Machine Learning - Second Edition
- Python-微信跳一跳辅助的App实现
- Python-Tensorflow实现SpatialAsDeepSpatialCNN
- python2.7.13
- python machine learning 最新版 2nd second
- 图像分割python实现代码
评论
共有 条评论