phpcms增加分词百度分词接口功能

  • 2018-11-01 22:58:24
  • 开发
  • 30
  • shevechco

phpcms内容管理系统看来是彻底黄了,近期连分词接口都关闭了,所以我们在增加文章的时候不能够自动从远程接口上分词返回到关键词的INPUT框上了,所以不得不寻找第三方接口来继续使用之前一直享受的自动分词功能,现在有很多云服务商都提供了分词接口,扫了百度几页,最后还是决定使用百度AI的智能分词接口,百度AI接口目前大部分可以享受免费5QPS的免费,有钱任性可以随便用,下面就详细讲解下使用第三方接口给网站分词

我们首先去下载PHP的SDK,地址是这里https://ai.baidu.com/sdk#nlp,需要你登录百度云

menu.saveimg.savepath20181101230304.jpg

当然这个接口上面功能挺多,也包含人工智能的一些功能,咱们只用的上接口上的一个方法,解压后我们需要的是AipNlp.php这个类文件,而方法嘛,也只需要用一个lexer方法,词法分析方法,在PHPcms的api目录下我放置这个解包的文件,注意了,其它功能不用并不代表其它的文件可以删除,我们还是老老实实的放置好就不要去改动或者删除里面文件了,下面来讲解下使用方法

先是引入类文件,PHPCMS很老了,现在引入实例化都用命名空间和自动挂载了,没办法,还是按老的方法写

$_GET['number']是关键词数,$_POST['data'],我猜的还挺准,不是啥东西,就是文章标题,注意了一个是GET一个是POST

01.
<?php
02.
/**
03.
 * 获取关键字接口
04.
 */
05.
defined('IN_PHPCMS') or exit('No permission resources.'); 
06.
07.
//define('API_URL_GET_KEYWORDS', 'http://tool.phpcms.cn/api/get_keywords.php');
08.
09.
$number = intval($_GET['number']);
10.
$data = $_POST['data'];
11.
12.
require_once 'keyword_api/AipNlp.php';
13.
14.
$ai_tag = new AipNlp(BD_APPID, BD_APPKEY, BD_SK);
15.
//var_dump($ai_tag);
16.
$tag = $ai_tag->lexer($data);
17.
$tag_arr = array();
18.
foreach ($tag['items'] as $key => $value) {
19.
if($key > $number){
20.
break;
21.
}
22.
$tag_arr[$key] = $value['item'];
23.
};
24.
25.
echo implode(' ', $tag_arr);
26.
27.
?>

我们删除掉原来的API中的内容,直接引入类文件,然后实例化的时候传参,将我们提前定义好的常量作为参数传入,注意BD_APPID, BD_APPKEY, BD_SK三个常量是我在phpcms的配置里面配置过的,你要去百度云官网申请,然后定义给这三个常量,因为AipNlp.php类文件继承基类AipBase,然后我们往lib库里面去找基类,发现基类初始化时有几个参数,我们来看看基类的构造方法

01.
    public function __construct($appId, $apiKey, $secretKey){
02.
        $this->appId = trim($appId);
03.
        $this->apiKey = trim($apiKey);
04.
        $this->secretKey = trim($secretKey);
05.
        $this->isCloudUser = null;
06.
        $this->client = new AipHttpClient();
07.
        $this->version = '2_2_5';
08.
        $this->proxies = array();
09.
    }

继承类传这三个参数进去,然后实例化就可以使用对象的方法了,我们主要使用了一个lexer的方法,也就是上面的

01.
$tag = $ai_tag->lexer($data);

然后返回一个数组

menu.saveimg.savepath20181101231304.jpg

我后面的循环就是只取前几个关键词,当然也可以使用array_slice来处理,最后就是按phpcms返回的要求转换成中间空格的字符串了

东西很简单,只是做个详细教程分享给一些群友罢了。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.sulao.cn/post/566

相关推荐