Coder Social home page Coder Social logo

decalogue / chat Goto Github PK

View Code? Open in Web Editor NEW
672.0 41.0 227.0 31.75 MB

基于自然语言理解与机器学习的聊天机器人,支持多用户并发及自定义多轮对话

License: MIT License

Python 100.00%
nlp question-answering context nlu natural-language-processing natural-language-understanding qa chat chatbot python python3 algorithm machine-learning kb sentence-similarity neo4j graph database

chat's Introduction

Chat

Chatbot based on natural language understanding and machine learning.

基于自然语言理解与机器学习的聊天机器人

Documentation Status PyPI Version

chat

这就是 Chat

  • Chat 是一个基于自然语言理解与机器学习的语义理解库。
  • Chat 提供丰富的语义分析工具与语义知识图的构建工具,非常适合从0开始迅速搭建自己的聊天机器人,也能够减少工程师在实际开发当中的重复工作。
  • Chat 非常易于修改和扩展,可以方便地个性化定制。
  • Chat 支持多用户并发及自定义的多轮对话场景。

如果您有如下需求,欢迎选择 Chat:

  • 想从0开始迅速搭建自己的聊天机器人
  • 想了解自然语言处理与机器学习算法在问答中的应用
  • 想智能化生活工作,提升效率
  • 对知识图谱以及 KBQA 感兴趣,想从0开始构建自己的知识图谱

Chat适用的Python版本是:Python 3.3-3.6

Installation 安装

pip install --upgrade chat

Tutorial 快速开始

Step 1 在终端中启动数据库

(推荐)方式1:直接使用 chat/tests/nlu.db 这个已经初始化的数据库

使用方法:对于安装版的 neo4j 手选 nlu.db 所在路径进行连接;对于免安装版本的将 nlu.db 放到 neo4j/data/databases/ 目录下并修改 neo4j/conf/neo4j.conf 文件中

# The name of the database to mount
dbms.active_database=nlu.db

已经包含了3个用户及其知识库配置,具体的用户信息可直接查看数据库 User 或者 chat/tests/test_user.txt

说明:chat/tests/ 目录下的示例知识库:

chat.xls 基础问答(命令+闲聊)
chat_bank.xls 银行业务(里面有一个详细的自定义多轮对话示例以及两个单节点场景示例)
chat_hospital.xls 医院事务(业务问答)

方式2:需自定义数据库,将其密码设为'train'

若要修改密码:可在 chat/conf/self.conf 中修改 [neo4j] 选项 password)

neo4j start

Step 2 初始化语义知识库

2.1 启动语义服务器并保持 (详见 chat/tests/test_server.py,可命令行运行 python test_server.py)

启动前请将 chat/conf/self.conf 中 [path] 下的 log(问答日志) 和 do_not_know(回答不了的问题日志) 修改为自己的路径

from chat import server

server.start()

2.2 导入测试知识库(若 Step 1 中使用 chat/tests/nlu.db 则直接进入 Step 3) (详见 chat/tests/test_graph.py,可命令行运行 python test_graph.py)

from chat.graph import Database

# 初始化实例的时候若指定 userid 参数则会被导入 userid 对应用户,若不指定则导入通用用户
kb = Database(password='train')
kb.reset(filename='chat.xls')

Step 3 开始聊天

(推荐)方式1:启动语义客户端(详见 chat/tests/test_client.py,可命令行运行 python test_client.py)

可同时独立运行多个客户端,各个客户端的场景对话不会相互影响。

推荐使用已经提供的 test_client_bank.py 和 test_client_hospital.py 测试

from chat import client

# userid 和 key 可在已有的3个测试用户中选或者自己添加
client.start(userid="您的 userid", key="您的 key")

方式2:使用 chat.qa 子模块

from chat.qa import Robot
from chat.config import getConfig

robot = Robot(password=getConfig("neo4j", "password"))
result = robot.search(question="您的自定义问题", userid="您的 userid", key="您的 key")
answer = result['content']
print(answer)

Chat 的设计原则

  • 用户友好:用户的使用体验始终是我们考虑的首要和中心内容。Chat 遵循减少认知困难的最佳实践:Chat 提供一致而简洁的 API, 能够极大减少一般应用下用户的工作量,同时,Chat 提供清晰和具有实践意义的 Bug 反馈。
  • 模块性:完全独立可配置的模块可以用最少的代价自由组合在一起,您可以使用它们来构建自己的模块。
  • 易扩展性:添加新模块超级容易,只需要仿照现有的模块编写新的类或函数即可。创建新模块的便利性使得 Chat 更适合于快速开发。
  • 知识图谱:基于图数据库的知识图表达提供了更快的搜索速度与智能。

您可以在 Read the docs 中阅读官方中文文档。

如果您阅读在线中文文档时有什么问题,您可以在 Github 上下载这个项目,然后去 /docs/build/html/index.html 阅读离线中文文档。

非常感谢各位 Github 小伙伴的贡献

代码贡献

建议贡献

TimLoveFreedom 具体内容:分享支持

zheyang0715 具体内容:chat.semantic.synonym_cut 句尾标点符号过滤

zhengxijiang 具体内容:chat.server 场景并发中 robot 实例化

文档贡献

Mirza Zulfan 具体内容:设计 chat LOGO

如果想了解更多,也欢迎扫二维码加我微信分享交流。

Rain

Copyright © 2017 Decalogue. All Rights Reserved.

关于作者:Decalogue

chat's People

Contributors

decalogue avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

chat's Issues

关于server.py

您好,感谢分享代码。有个问题请教下,为什么我改了 server.py 的代码,但是重启 test_server之后,修改的代码没有任何效果。

我仅仅是将
image
这里的Data 换成 99 Data, 但是server仍然打印的是 Data。。。

cannot import name 'NodeSelector'

Sorry. When I tried to run test_server.py in tests file, it showed an ImportError, which cannot import name 'NodeSelector', from py2neo.
The detailed problem:
Traceback (most recent call last):
File "chat.py", line 1, in
from chat import server
File "/home/medical/Users/Wangyue/chat/chat/server.py", line 12, in
from .graph import Database
File "/home/medical/Users/Wangyue/chat/chat/graph.py", line 9, in
from py2neo import Graph, Node, Relationship, NodeSelector
ImportError: cannot import name 'NodeSelector'

How can I fix that?
Thank you.

py2neo==3.1.2 problem

where get the py2neo==3.1.2? i already install neo4j and start .but command pip install --upgrade chat error in The conflict is caused by:
chat 1.0.7.dev136 depends on py2neo==3.1.2

请问如何获取db文件

报错:db = sqlite3.connect("C:/docu/db/contentDB.db")
OperationalError: unable to open database file
请问如何才能获得这个db文件呢?

安装报错

creating build/temp.linux-x86_64-3.8/numpy/random
creating build/temp.linux-x86_64-3.8/numpy/random/mtrand
compile options: '-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1 -D_LARGEFILE64_SOURCE=1 -Inumpy/core/include -Ibuild/src.linux-x86_64-3.8/numpy/core/include/numpy -Inumpy/core/src/private -Inumpy/core/src -Inumpy/core -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath -Inumpy/core/src/npysort -I/usr/local/include/python3.8 -Ibuild/src.linux-x86_64-3.8/numpy/core/src/private -Ibuild/src.linux-x86_64-3.8/numpy/core/src/npymath -Ibuild/src.linux-x86_64-3.8/numpy/core/src/private -Ibuild/src.linux-x86_64-3.8/numpy/core/src/npymath -Ibuild/src.linux-x86_64-3.8/numpy/core/src/private -Ibuild/src.linux-x86_64-3.8/numpy/core/src/npymath -c'
gcc: numpy/random/mtrand/mtrand.c
numpy/random/mtrand/mtrand.c: In function ‘PyInit_mtrand’:
numpy/random/mtrand/mtrand.c:43380:3: warning: ‘tp_print’ is deprecated (declared at /usr/local/include/python3.8/cpython/object.h:260) [-Wdeprecated-declarations]
__pyx_type_6mtrand_RandomState.tp_print = 0;
^
numpy/random/mtrand/mtrand.c: In function ‘__Pyx__ExceptionSave’:
numpy/random/mtrand/mtrand.c:45208:19: error: ‘PyThreadState’ has no member named ‘exc_type’
*type = tstate->exc_type;
^
numpy/random/mtrand/mtrand.c:45209:20: error: ‘PyThreadState’ has no member named ‘exc_value’
*value = tstate->exc_value;
^
numpy/random/mtrand/mtrand.c:45210:17: error: ‘PyThreadState’ has no member named ‘exc_traceback’
*tb = tstate->exc_traceback;
^
numpy/random/mtrand/mtrand.c: In function ‘__Pyx__ExceptionReset’:
numpy/random/mtrand/mtrand.c:45217:22: error: ‘PyThreadState’ has no member named ‘exc_type’
tmp_type = tstate->exc_type;
^
numpy/random/mtrand/mtrand.c:45218:23: error: ‘PyThreadState’ has no member named ‘exc_value’
tmp_value = tstate->exc_value;
^
numpy/random/mtrand/mtrand.c:45219:20: error: ‘PyThreadState’ has no member named ‘exc_traceback’
tmp_tb = tstate->exc_traceback;
^
numpy/random/mtrand/mtrand.c:45220:11: error: ‘PyThreadState’ has no member named ‘exc_type’
tstate->exc_type = type;
^
numpy/random/mtrand/mtrand.c:45221:11: error: ‘PyThreadState’ has no member named ‘exc_value’
tstate->exc_value = value;
^
numpy/random/mtrand/mtrand.c:45222:11: error: ‘PyThreadState’ has no member named ‘exc_traceback’
tstate->exc_traceback = tb;
^
numpy/random/mtrand/mtrand.c: In function ‘__Pyx__GetException’:
numpy/random/mtrand/mtrand.c:45277:22: error: ‘PyThreadState’ has no member named ‘exc_type’
tmp_type = tstate->exc_type;
^
numpy/random/mtrand/mtrand.c:45278:23: error: ‘PyThreadState’ has no member named ‘exc_value’
tmp_value = tstate->exc_value;
^
numpy/random/mtrand/mtrand.c:45279:20: error: ‘PyThreadState’ has no member named ‘exc_traceback’
tmp_tb = tstate->exc_traceback;
^
numpy/random/mtrand/mtrand.c:45280:11: error: ‘PyThreadState’ has no member named ‘exc_type’
tstate->exc_type = local_type;
^
numpy/random/mtrand/mtrand.c:45281:11: error: ‘PyThreadState’ has no member named ‘exc_value’
tstate->exc_value = local_value;
^
numpy/random/mtrand/mtrand.c:45282:11: error: ‘PyThreadState’ has no member named ‘exc_traceback’
tstate->exc_traceback = local_tb;
^
numpy/random/mtrand/mtrand.c: In function ‘PyInit_mtrand’:
numpy/random/mtrand/mtrand.c:43380:3: warning: ‘tp_print’ is deprecated (declared at /usr/local/include/python3.8/cpython/object.h:260) [-Wdeprecated-declarations]
__pyx_type_6mtrand_RandomState.tp_print = 0;
^
numpy/random/mtrand/mtrand.c: In function ‘__Pyx__ExceptionSave’:
numpy/random/mtrand/mtrand.c:45208:19: error: ‘PyThreadState’ has no member named ‘exc_type’
*type = tstate->exc_type;
^
numpy/random/mtrand/mtrand.c:45209:20: error: ‘PyThreadState’ has no member named ‘exc_value’
*value = tstate->exc_value;
^
numpy/random/mtrand/mtrand.c:45210:17: error: ‘PyThreadState’ has no member named ‘exc_traceback’
*tb = tstate->exc_traceback;
^
numpy/random/mtrand/mtrand.c: In function ‘__Pyx__ExceptionReset’:
numpy/random/mtrand/mtrand.c:45217:22: error: ‘PyThreadState’ has no member named ‘exc_type’
tmp_type = tstate->exc_type;
^
numpy/random/mtrand/mtrand.c:45218:23: error: ‘PyThreadState’ has no member named ‘exc_value’
tmp_value = tstate->exc_value;
^
numpy/random/mtrand/mtrand.c:45219:20: error: ‘PyThreadState’ has no member named ‘exc_traceback’
tmp_tb = tstate->exc_traceback;
^
numpy/random/mtrand/mtrand.c:45220:11: error: ‘PyThreadState’ has no member named ‘exc_type’
tstate->exc_type = type;
^
numpy/random/mtrand/mtrand.c:45221:11: error: ‘PyThreadState’ has no member named ‘exc_value’
tstate->exc_value = value;
^
numpy/random/mtrand/mtrand.c:45222:11: error: ‘PyThreadState’ has no member named ‘exc_traceback’
tstate->exc_traceback = tb;
^
numpy/random/mtrand/mtrand.c: In function ‘__Pyx__GetException’:
numpy/random/mtrand/mtrand.c:45277:22: error: ‘PyThreadState’ has no member named ‘exc_type’
tmp_type = tstate->exc_type;
^
numpy/random/mtrand/mtrand.c:45278:23: error: ‘PyThreadState’ has no member named ‘exc_value’
tmp_value = tstate->exc_value;
^
numpy/random/mtrand/mtrand.c:45279:20: error: ‘PyThreadState’ has no member named ‘exc_traceback’
tmp_tb = tstate->exc_traceback;
^
numpy/random/mtrand/mtrand.c:45280:11: error: ‘PyThreadState’ has no member named ‘exc_type’
tstate->exc_type = local_type;
^
numpy/random/mtrand/mtrand.c:45281:11: error: ‘PyThreadState’ has no member named ‘exc_value’
tstate->exc_value = local_value;
^
numpy/random/mtrand/mtrand.c:45282:11: error: ‘PyThreadState’ has no member named ‘exc_traceback’
tstate->exc_traceback = local_tb;
^
error: Command "gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1 -D_LARGEFILE64_SOURCE=1 -Inumpy/core/include -Ibuild/src.linux-x86_64-3.8/numpy/core/include/numpy -Inumpy/core/src/private -Inumpy/core/src -Inumpy/core -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath -Inumpy/core/src/npysort -I/usr/local/include/python3.8 -Ibuild/src.linux-x86_64-3.8/numpy/core/src/private -Ibuild/src.linux-x86_64-3.8/numpy/core/src/npymath -Ibuild/src.linux-x86_64-3.8/numpy/core/src/private -Ibuild/src.linux-x86_64-3.8/numpy/core/src/npymath -Ibuild/src.linux-x86_64-3.8/numpy/core/src/private -Ibuild/src.linux-x86_64-3.8/numpy/core/src/npymath -c numpy/random/mtrand/mtrand.c -o build/temp.linux-x86_64-3.8/numpy/random/mtrand/mtrand.o -MMD -MF build/temp.linux-x86_64-3.8/numpy/random/mtrand/mtrand.o.d" failed with exit status 1
----------------------------------------
Rolling back uninstall of numpy
Moving to /root/.local/bin/f2py
from /tmp/pip-uninstall-duz6l2gp/f2py
Moving to /root/.local/bin/f2py3
from /tmp/pip-uninstall-duz6l2gp/f2py3
Moving to /root/.local/bin/f2py3.8
from /tmp/pip-uninstall-duz6l2gp/f2py3.8
Moving to /root/.local/lib/python3.8/site-packages/numpy-1.18.1.dist-info/
from /root/.local/lib/python3.8/site-packages/~umpy-1.18.1.dist-info
Moving to /root/.local/lib/python3.8/site-packages/numpy/
from /root/.local/lib/python3.8/site-packages/~umpy
ERROR: Command errored out with exit status 1: /usr/local/bin/python3.8 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-dpjnkyql/numpy/setup.py'"'"'; file='"'"'/tmp/pip-install-dpjnkyql/numpy/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' install --record /tmp/pip-record-nef4bfri/install-record.txt --single-version-externally-managed --compile --install-headers /usr/local/include/python3.8/numpy Check the logs for full command output.

关于语义相似度的算法motivation

hi, 关于语义标签相似度计算, 能说明一下其动机吗(或者出处), 比如为什么要将n转化为弧度值?
对应代码为semantic2.sim_tag(tag1, tag2)
math.cos(n * math.pi / 180) * ((n - d + 1) / n) * s3

这路径格式只能windows使用了?

 17 thispath = os.path.split(os.path.realpath(__file__))[0]

---> 18 jieba.set_dictionary(thispath + "\dict\synonymdict.txt")
19 jieba.load_userdict(thispath + "\dict\userdict.txt")
20 import jieba.posseg as posseg

/usr/local/lib/python3.6/site-packages/jieba/init.py in set_dictionary(self, dictionary_path)
485 abs_path = _get_abs_path(dictionary_path)
486 if not os.path.isfile(abs_path):
--> 487 raise Exception("jieba: file does not exist: " + abs_path)
488 self.dictionary = abs_path
489 self.initialized = False

Exception: jieba: file does not exist: /usr/local/lib/python3.6/site-packages/chat\dict\synonymdict.txt

版本过于老化问题,寻求帮助

1 数据库nlu.db文件过于老化,用目前的neo4j版本启动会报错,这个已经是配置里设置了兼容升级旧数据库配置了
2021-08-05 01:52:32.764+0000 ERROR [nlu.db/875c1c1b] Error upgrading database. Database left intact and will likely not be able to start: org.neo4j.kernel.impl.storemigration.StoreUpgrader$UnexpectedUpgradingStoreVersionException: Not possible to upgrade a store with version 'v0.A.7' to current store version AF4.3.0 (Neo4j 4.3.2).
2 所以目前我用的neo4j默认生成数据库,按照文档改了数据库密码
启动test_server.py和test_client.py,server端经常报错
127.0.0.1 wrote:
Data:
{"userid": "A0001", "key": "A0001", "ask_type": "txt", "ask_content": "\u4f60\u8bf4\u4ec0\u4e48", "state": "robotstate"}
用户: A0001
已有知识库列表: ['基础问答']
采用默认城市: 城市
['ni', 'shuo', 'shen', 'me']

Exception happened during processing of request from ('127.0.0.1', 35684)
Traceback (most recent call last):
File "/usr/lib64/python3.6/socketserver.py", line 654, in process_request_thread
self.finish_request(request, client_address)
File "/usr/lib64/python3.6/socketserver.py", line 364, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/usr/lib64/python3.6/socketserver.py", line 724, in init
self.handle()
File "/usr/local/lib/python3.6/site-packages/chat/server.py", line 66, in handle
userid=json_data["userid"], key=json_data["key"])
File "/usr/local/lib/python3.6/site-packages/chat/mytools.py", line 243, in _wrapper
result = func(*args, **kwargs)
File "/usr/local/lib/python3.6/site-packages/chat/qa.py", line 744, in search
with open(log_do_not_know, "a", encoding="UTF-8") as file:
FileNotFoundError: [Errno 2] No such file or directory: 'C:/nlu/log/do_not_know.txt'
而且我已经在self.conf里修改了这些文件路径,但还是去找之前没改之前的配置-C盘下的文件
同时client端也报错
[root@VM-4-6-centos tests]# python3 test_client.py
...

question=你说什么
E
======================================================================
ERROR: test_start (main.TestMe)


Traceback (most recent call last):
File "test_client.py", line 47, in test_start
start(userid=self.userid, key=self.key)
File "/usr/local/lib/python3.6/site-packages/chat/client.py", line 121, in start
print(json.loads(result)['content'])
File "/usr/lib64/python3.6/json/init.py", line 354, in loads
return _default_decoder.decode(s)
File "/usr/lib64/python3.6/json/decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib64/python3.6/json/decoder.py", line 357, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)


Ran 4 tests in 6.379s

FAILED (errors=1)
1 麻烦看一下是什么问题
2 可不可以把所有支持库更新为目前最新版本兼容的版本再上传一次呢

Readthedocs API

你好,
Readthedocs的HTML page 有问题。在Readthedocs上面不能看到 Chat 的 API

代码可以运行了,但场景不会用,没有详细说明介绍

您好,chat.xls知识库里的一些参数还不会用,比如:topic、tid、ftid、behavior、parameter、url、tag、 keywords、txt、img、button、description、hot。我想使用下场景,设置self.is_scene = True,运行后报错。您能不能提供个详细的说明文档,或者详细的chat.xls,谢谢!

代码中发现几个问题,请验证解决

1,类似“我喜欢你”,“你喜欢我”类型的两句话,代码中计算相似度得分是1.0,即满分,很明显两句话不是一个意思,请验证;
2,对于“怎么了”,“怎么啦”等结尾为“了,呢,啦”等词的橘子,jieba切词时把最后的这个字就自动过滤了,但是当结尾加上英文符号如问号(中文符号还是过滤掉了),就不过滤了,导致与数据库中的“怎么了”无法匹配,请验证;
3,在进行比对时,能先将用户问题与数据库问题都先进行末尾符号过滤吗?本来可以相等的结果因为符号的缘故而进行相似度匹配;
4,对用户的多次的重复问题没有一个机制去特殊处理,当然这个点是次要的;
5,没有完整的日志的记录,及前台管理页面对语料库的增删改查。

配置文件中的相关数据哪里获取

请问,默认配置文件如下:
[sqlite]
host = 127.0.0.1
port = 3366
name = test
user = test
password = test
charset = utf8

[neo4j]
host = 127.0.0.1
port = 1337
name = chat
user = neo4j
password = train
charset = utf8

[path]
log = C:/nlu/log/log.txt
do_not_know = C:/nlu/log/do_not_know.txt
db = C:/nlu/data/db/nlu_sqlite.db
usbkb = D:/新知识库

[nav]
db = C:/docu/db/contentDB.db
tabel = goalvoice

[nluserver]
host = localhost
port = 7000

这些数据的作用是什么?
[path]那里的路径都是windows下面的路径吧,这些数据的格式是什么样的?

Propose Logo

Hi. I'm graphic disigner. I would like to know if you are interested that I make a logo for your project? If you allowed me, i"ll make logo for your project and it's free.
Best Regard

请确认下,是不是BUG?

我把test_ianswer.py里的json数据
{
'question': "看看理财产品", # 用户问题
'content': "我行的各种理财产品请参考下图,您可以点击图标查看详情,也可以语音或手动选择购买。",
'context': "理财产品",
'url': "",
'behavior': 5376, # 0x1500
'parameter': '{"id": 1, "level": 3, "pos": 0.5}',
'name': "理财产品", # 标准问题
'tid': "0",
'txt': "",
'img': '[{"content": "乾元共享型理财产品", "iurl": "C:/nlu/data/img/1.png"}, {"content": "乾元周周利开放式保本理财产品", "iurl": "C:/nlu/data/img/2.png"}, {"content": "乾元私享型理财产品", "iurl": "C:/nlu/data/img/3.png"}, {"content": "乾元满溢120天开放式理财产品", "iurl": "C:/nlu/data/img/4.png"}]',
'button': "0|手机银行办理|呼叫大堂经理|理财产品取号|乾元共享型理财产品",
'valid': 1 # valid=0 代表 error_page
}

放到chat.xls知识库里,然后导入到neo4j数据库,在测试的时候发现代码报异常,

File "C:\Users\zxj\PycharmProjects\chat-master\chat\qa.py", line 242, in update_result
result["behavior"] = int(node["behavior"], 16)
TypeError: int() can't convert non-string with explicit base

提示node["behavior"]是non-string,将result["behavior"] = int(node["behavior"], 16) 改为
result["behavior"] = int(str(int(node["behavior"])), 16)

再次运行正常:

question=看看理财产品
userid=
{'question': '看看理财产品', 'content': '', 'context': '理财产品', 'url': '[{"co
ntent": "乾元共享型理财产品", "iurl": "C:/nlu/data/img/1.png"}, {"content": "乾
元周周利开放式保本理财产品", "iurl": "C:/nlu/data/img/2.png"}, {"content": "乾元
私享型理财产品", "iurl": "C:/nlu/data/img/3.png"}, {"content": "乾元满溢120天开
放式理财产品", "iurl": "C:/nlu/data/img/4.png"}]', 'behavior': 21366, 'parameter
': '{"id": 1, "level": 3, "pos": 0.5}', 'picurl': '1526959967</Msg
Type>0<Title></Title><
Description>
'}

Connection refused(连接数据库被拒)

前辈你好,我在robot = Robot()实例的过程中 报错:"SocketError: Connection refused",我猜应该是需要获取数据,不知大神有没有可以推荐的数据库或知识图谱库,能否在readme中说明一下如何设置,谢谢~

项目资料

我想问一下,这个项目有对应的论文或者详细的介绍吗

没有本地图数据库

大神能不能提供一些基于基础问答的neo4j数据库? 没有这些数据库无法实现问答.....

安装失败的问题

你好,python3.5.2,安装chat模块一直失败,似乎是不兼容的问题,按照readme,除了python版本之外似乎没有别的要求,请教一下这该如何解决:
chat 1.0.4.dev32 depends on py2neo==3.1.2
chat 1.0.4.dev31 depends on py2neo==3.1.2
chat 1.0.4.dev30 depends on py2neo==3.1.2
chat 1.0.4.dev28 depends on py2neo==3.1.2
chat 1.0.4.dev26 depends on py2neo==3.1.2

To fix this you could try to:

  1. loosen the range of package versions you've specified
  2. remove package versions to allow pip attempt to solve the dependency conflict

ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/user_guide/#fixing-conflicting-dependencies

关于运行test_client.py

ERROR: test_start (main.TestMe)

Traceback (most recent call last):
File "E:/Anaconda/chat-master/tests/test_client_bank.py", line 13, in test_start
start(userid=self.userid, key=self.key)
File "E:\Anaconda\chat-master\chat\client.py", line 121, in start
print(json.loads(result)['content'])
File "d:\ProgramData\Anaconda3\lib\json_init_.py", line 354, in loads
return _default_decoder.decode(s)
File "d:\ProgramData\Anaconda3\lib\json\decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "d:\ProgramData\Anaconda3\lib\json\decoder.py", line 357, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

这个是啥错误

目标计算机积极拒绝

您好,在python中运行 from chat import client ,出现以下错误,该如何调整呢?
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Users\86132\Anaconda3\lib\site-packages\chat\client.py", line 23, in <module> mysock.connect((host, port)) ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。
感谢

为什么topK=1,默认值为20

def get_tag(sentence, config):
"""Get semantic tag of sentence. 获取句子语义标签。
"""
iquestion = sentence.format(**config)
try:
keywords = analyse.extract_tags(iquestion, topK=1)
keyword = keywords[0]
except IndexError:
keyword = iquestion
tags = synonym_cut(keyword, 'wf') # tuple list
if tags:
tag = tags[0][1]
if not tag:
tag = keyword
else:
tag = keyword
return tag

对下面这段代码不太明白:
keywords = analyse.extract_tags(iquestion, topK=1)
keyword = keywords[0]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.