ChatGPT是人工智能研究实验室OpenAI新推出的一种人工智能技术驱动的自然语言处理工具,使用了Transformer神经网络架构,也是GPT-3.5架构,这是一种用于处理序列数据的模型,拥有语言理解和文本生成能力,尤其是它会通过连接大量的语料库来训练模型,这些语料库包含了真实世界中的对话,使得ChatGPT具备上知天文下知地理,还能根据聊天的上下文进行互动的能力,做到与真正人类几乎无异的聊天场景进行交流。
ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。
01
可以根据不同角度(如应用领域、答案形式以及语料格式等)对问答系统进行分类。基于应用领域可分为限定域问答系统和开放域问答系统。限定域问答系统是指系统所能处理的问题只限定于特定领域或特定范围,比如只限于医学、商务或者金融领域等,而开放域问答系统面向的领域范围可以更广。根据支持技术分类,可分为数据库系统、对话式系统、阅读理解系统、问题集系统、知识库系统等。
典型的问答系统包含问题输入、问题理解、信息检索、信息抽取、答案排序、答案生成和结果输出等。首先由用户提出问题,检索操作通过在知识库中查询得到相关信息,并依据特定规则从提取到的信息中抽取相应的候选答案特征向量,最后筛选候选答案输出结果给用户,参见图9-1。
02
问题处理
问题映射
根据用户咨询的问题,进行问题映射。通过相似度匹配和同义词表等解决映射问题,可能需要执行拆分和合并操作。
查询构建
通过对输入问题进行处理,将问题转换为计算机可以理解的查询语言,然后查询知识图谱或者数据库,通过检索获得相应备选答案。
知识推理
根据问题属性进行推理,如果属于知识图谱或者数据库中已知定义信息,则直接查找并返回结果。如果问题属性未定义,则需要通过机器算法或深度学习推理生成答案。
消歧排序
根据知识图谱中查询返回的单数或者复数备选答案,结合问题属性进行消歧处理和优先级排序,输出最优答案。
03
基于远程服务器模板的交互模式的主要操作步骤如下。
(1) 在微软Azure官网主页注册账户,网址为https://azure.microsoft.com/en-us/。注册成功后登录到Azure Portal页面,网址为https://portal.azure.com/#home。
(2) 切换到Azure Portal页面,选择QnA makers创建服务QnA Service,如图9-2所示。
(3) 单击QnA Maker Portal选项,如图9-3所示。
■ 图9-3问答创建选项
(4) 单击Create a QnA Service按钮创建知识库,参见图9-4。
■ 图9-4创建问答服务
(5) 根据提示完成步骤(1)~步骤(4),然后单击Create your KB按钮完成知识库创建,参见图9-5。
■ 图9-5创建知识库
(6) 知识库完成创建后,单击Save and train按钮,最后单击Publish按钮,如图9-6所示。
(7) 知识库完成创建后,单击My knowledge bases按钮确认知识库详细信息,参见图9-7。
■ 图9-7确认知识库信息
(8) 单击View Code按钮,确认并记录主机地址、知识库和认证键值。
POST /knowledgebases/knowledgebases- id/generateAnswer
Host: https: //host-address
Authorization: EndpointKey EndpointKey - id
Content-Type: application/json
{ "question": "<Your question>"}
(9) 新建app.py文件,从botbuilder.core库导入BotFrameworkAdapter、BotFrameworkAdapterSettings、TurnContext、ConversationState、MemoryStorage类,导入网页框架Flask库以及asynciobotbuilder.schema.Activity。主要代码如下。
app = Flask(__name__)
loop = asyncio.get_event_loop
botframework = BotFrameworkAdapterSettings( "", "")
botadapter = BotFrameworkAdapter(botframework)
remotebot = RemoteBot
@app.route("/api/messages",methods=["POST"])
defmessages:
if"application/json"inrequest.headers[ "content-type"]:
context = request.json
else:
returnResponse(status = 415)
activity = Activity.deserialize(context)
if"Authorization"inrequest.headers:
outcome = request.headers[ "Authorization"]
else:
outcome= ""
asyncdefcall_fun(turncontext):
awaitremotebot.on_turn(turncontext)
task = loop.create_task(
botadapter.process_activity(activity,outcome,call_fun)
)
loop.run_until_complete(task)
if__name__ == '__main__':
app.run( 'localhost', 4000)
(10) 新创建remotebot.py文件,主要代码如下。
frombotbuilder.core importTurnContext,ActivityHandler,MessageFactory
frombotbuilder.ai.qna importQnAMaker,QnAMakerEndpoint
classRemoteBot(ActivityHandler):
def__init__(self):
endpoint = QnAMakerEndpoint( "knowledgebases-id", "EndpointKey -id", "https://host-address")
self.botmaker = QnAMaker(endpoint)
asyncdefon_message_activity(self,context:TurnContext):
response = awaitself.botmaker.get_answers(context)
ifresponse andlen(response) > 0:
awaitcontext.send_activity(MessageFactory.text(response[ 0].answer))
■ 图9-8启动页面
(12) 启动Bot Framework Emulator程序,单击左下角设置按钮,在Path to ngrok中选择下载的ngrok.exe的路径位置,勾选Bypass ngrok for local addresses,Run ngrok when the Emulator starts up以及Use version 1.0 authentication tokens复选框,参见图9-9和图9-10。
■ 图9-11远程连接设置
■ 图9-12远程连接对话测试
04
参考书籍
《Python自然语言处理——算法、技术及项目案例实战(微课视频版)》
作者:(日)中本一郎、马冀、张积林、郭彦、庄伟卿、冯丽娟、江明、黄益
定价:59.90元
扫码优惠购书
本书全面介绍了数据挖掘和商务智能的基础知识、主要技术、基于Python语言的商务应用生成技术。全书共12章,主要内容包括数据挖掘、深度学习、Seq2Seq、商务智能应用创建及部署、Tensorflow、卷积神经网络、循环神经网络和Rasa技术。本书注重理论结合实战,实例部分配套操作步骤,重要代码讲解,中间图形和文本输出,将实战内容融合在课程教学过程中,使理论紧密联系实际,帮助学生在潜移默化中获得知识。