基于金融知识图谱的问答机器人
import json
from flask import Flask, request
from py2neo import Graph
from pyhanlp import *
app = Flask(__name__)
@app.route("/qa", methods=['POST', 'GET'])
def kg_qa():
if request.method == 'GET':
ques = request.args.get('question')
cb = request.args.get('callback')
print(ques)
qa_graph = Graph("http://localhost:7474",auth=("neo4j","12345678"),name="neo4j")
keyword = []
ansList = []
# CRF 词法分析器
CRFLexicalAnalyzer = JClass("com.hankcs.hanlp.model.crf.CRFLexicalAnalyzer")
analyzer = CRFLexicalAnalyzer()
han_word_pos = analyzer.analyze(ques).toString()
print(han_word_pos)
wordlist = han_word_pos.split(" ")
for word in wordlist:
pos = word.split("/")
if "n" in pos[1]:
print(pos[0],pos[1])
if pos[0] not in keyword:
keyword.append(pos[0])
print(keyword)
query_str = ""
#枚举组成cypher查询语句
for key1 in keyword:
for key2 in keyword:
if('董事' in key2):
query_str = "match (e)-[r2:`董事会成员`]->(s) where s.name='%s' return e.name"%(key1)
if('概念' in key2):
query_str = "match (s)-[r2:`概念属于`]->(e) where s.name='%s' return e.name"%(key1)
if('行业' in key2):
query_str = "match (s)-[r2:`行业属于`]->(e) where s.name='%s' return e.name"%(key1)
print(query_str)
if(len(query_str) > 0):
answer = qa_graph.run(query_str).data()
print(answer)
if answer:
for item in answer:
print(item)
ans_str = item['e.name']
print(ans_str)
#如果结果里面没有才加入
if ans_str not in ansList:
ansList.append(ans_str)
print(ansList)
re_ans = "您想问的是不是这些问题:\n"
for i in range(len(ansList)):
re_ans += "(%s) %s \n"%(i+1,ansList[i])
print(re_ans)
result = {
"question" : ques,
"answer" : re_ans
}
res_str = json.dumps(result)
cb_str = cb + "(" + res_str + ")"
print(cb_str)
return cb_str
return 'Error Format'
if __name__ == '__main__':
from werkzeug.serving import run_simple
run_simple('127.0.0.1', 9001, app)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <! DOCTYPE html> < html > < head > < meta charset="utf-8"> < meta http-equiv="X-UA-Compatible" content="IE=edge"> < meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/> < meta name="author" content=""> < meta name="description" content=""/> < meta name="format-detection" content="telephone=no" /> < meta name="apple-mobile-web-app-capable" content="yes" /> < meta name="apple-mobile-web-app-status-bar-style" content="white" /> < title >chatbot</ title > < style type="text/css"> body{ margin: 0; font-size: 18px; background-color: #fff;} </ style > </ head > < body > < h1 >欢迎大家参加本期知识图谱学习</ h1 > < div > 讲师:蔡丰龙< br > </ div > < script type="text/javascript" src="robot/robot.js?022107"></ script > </ body > </ html > |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署