嗨! 昨天终於结束了语料库模型建置的部分,再来就要建立 API 了。这个系统中我采用了一个比较特别的架构,服务器是 Ubumtu + Apache + PHP,API 主要使用 PHP 撰写,并由 PHP 去执行 Python 脚本(也就是前面建置的 TF-IDF 语料库模型),再回传结果。可以参考下图。
其实 Python 也是可以写後端的,但我缺少建置 Python 服务器的经验,期间我尝试搭配 Python + Apache、用 Python 的框架建置服务,一直没有成功。哀,这又是另一个走错路的故事了。
後来听了朋友建议,采用一个比较像绕过问题的方式,使用 PHP + Apache 作为 API 端服务,PHP 去执行 Python 脚本。换句话说,就是把 PHP 当作是 Android 与 TF-IDF 语料库之间的桥梁。不过,我觉得这不是一个最好的写法。
做都做了,还是要记录一下啊,今天这篇就来介绍使用 PHP 执行 Python 脚本的方法吧。
以编号 001 这支来说明
完整程序码: https://gitlab.com/graduate_lab415/chatbot-api/-/blob/master/getAnswer.php
<?php
/**
* 001 [POST] /Chatbot/getAnswer.php
* 以使用者输入的语句查询,回传资料集中与输入最相似的 3 笔问答组合。
*
* q: 使用者输入的问句
* category_id: 使用者选择的类别编号
*/
header('Content-Type: application/json; charset=utf-8');
$q = $_POST['q'];
$category_id = $_POST['category_id'];
$output = exec('/home/yr/PycharmProjects/nlp/venv/bin/python3 /home/yr/PycharmProjects/nlp/main.py ' . $q . ' ' . $category_id . ' 2>/home/yr/PycharmProjects/nlp/output/log.txt', $output2);
print($output);
首先,会收两个 Post 参数 $_POST['q']
、$_POST['category_id']
执行 Python 脚本时,再把参数带进去。
$output
会得到 Python 印出的 JSON 内容,再印出来给 Android 端。
简略一点,就是这个样子。因为我用的是 Pycharm 的 venv 所以路径要复杂一点。
python3 main.py "我想申请长照" 2 2>log.txt
2>log.txt
: 把标准错误写到档案中
本系统总共有 3 支 API: getAnswer、addAdjustment、getCategories。
各自的详细说明与程序码在这: https://gitlab.com/graduate_lab415/chatbot-api
>>: 卡夫卡的藏书阁【Book22】- Kafka - KafkaJS 消费者 4
在这本GOF的设计模式中 共有23种设计模式 作者将这些设计模式又依照目的性粗略分为三大类,分别是:...
Odoo模组开发实战 目录 1.Actions 1.1 Server Actions (ir.act...
回到昨天留下的问题 card数太长要怎麽办 TextFiled 送出後怎麽清除里面的字 其实只要将 ...
大家好! 发送请求时,各位有没有多写好几行程序码的经验呢? 今天就是要简化如此复杂的动作。 我们进入...
本文内容 本文内容为阅读官方文件有关interpolation 的笔记内容。 利用 interpol...