我的编程空间,编程开发者的网络收藏夹
学习永远不晚

技术男的春天:小姐姐求助&暖男分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

技术男的春天:小姐姐求助&暖男分析

时光荏苒,这个故事发生在4年前,那时候我头发可真厚,坐地铁也不用戴口罩。

小姐姐求助

友圈一位要做毕设的小姐姐在求助postman怎么用,我就帮她解答了一下。

我知道她并非计算机相关专业,所以很奇怪为什么要用postman。

原来她的毕设是要基于微博上最近10年关于房价的话题数据,来做分析,做未来房价的走势预测,训练模型。

她经过一番调研之后决定用某平台的「语言处理技术」,实现基础数据的语义分析,即:情感极性分类结果,0负向、1中性、2正向。

在这里插入图片描述

官方提供的是基于postman的演示demo,虽然对咱们专业人士来讲很简答,但是对学文科的小姐姐还是有一定门槛的。

我教会小姐姐怎么用postman之后,问了她一个问题:

灵魂一问

你虽然知道了postman怎么用,能查询每条数据的语义分析结果。

但是微博关于房价的数据有几十万条,你总不能用postman一条一条来操作吧!?

小姐姐蒙了

在这里插入图片描述

技术男的春天

我告诉小姐姐不用担心,可以用编程轻松解决,比如Go、Python、Java、PHP都是可以的。

但是沟通下来发现小姐姐对编程并不感冒,虽然之前有学过,但是短时间内实现需求恐怕很困难。

是时候展示真正的技术了:

于是,我帮她搭建了基于某平台AI开放平台的批量语义识别的系统,也算进行了某平台【语言处理技术】的开箱测试

暖男分析

考虑到小姐姐并不是很懂编程,所以要以最简单的方式来实现需求:

  1. 尽量减少代码,能使用工具软件的尽量使用工具软件。

  2. 开发语言使用简单易学的PHP

  3. 数据库工具使用开箱即用的Navicat

  4. 开发环境使用一键安装工具「LNMP一键安装包」

(别问我为啥没用Go,毕竟这个故事起码3年前,哈哈哈)

说干就干,马上开始搞

搞定数据源

小姐姐已经通过某宝拿到了20W+关于房价的微博数据,现在需要做的就是基于语义分析来获得这20W+数据集对房价走势的判断。

小姐姐也是思路广啊~

  1. 首先根据数据源和某平台语义接口返回结果,设计MySql表结构。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jiIMBTll-1670227296931)(https://files.mdnice.com/user/36414/190edd7d-87c7-44f1-9e7d-eade1aab115e.png)]

  1. 考虑到数据有20万+,利用了mysql的可视化工具[Navicat]导入数据,也方便小姐姐操作。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iSHpg3OZ-1670227296937)(https://files.mdnice.com/user/36414/73de9796-256a-4f4d-ae5f-1757984feb6b.png)]

注意:要做好表格源字段和目标字段的匹配

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qK46T0MF-1670227296939)(https://files.mdnice.com/user/36414/cf553546-c652-48ca-ac5c-c87c352eb9ee.png)]

  1. 首次导入选择直接追加;后续优化模型重复导入数据时选择更新。

  1. 点击开始即可导入Excel源数据到mysql数据库中

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-67j1lf05-1670227296943)(https://files.mdnice.com/user/36414/121ee80b-68f1-4bec-b489-ee72a3743d69.png)]

  1. 导入完成,在Navicat控制台通过查询命令,共查询到231007条数据

搭建开发环境

考虑到小姐姐最终目的是训练模型,而非学习编程,所以搭建开发环境就怎么简单怎么来了。

所以我就推荐她使用「LNMP一键安装包」,10几分钟左右就把LNMP环境搭建好了

敲代码

脚本关键代码及思路:

字段说明:

mysql语句中 liuXX 是数据库名 semantic_analysis是表名

代码设计思路:

使用do while循环,批量循环请求某平台AI语义分析接口,查询positive_prob=0的数据(即未进行语义分析的数据)。

当查询不到数据时,说明所有数据已经成功请求某平台语义分析接口,且将返回结果更新到数据表中。

注意问题:

每次查询之后都会休眠1秒,因为免费版的某平台语义分析接口有QPS限制,避免出现无效请求

实现流程

查询数据:

  1. 查询条件是 positive_prob=0(代表本条数据未请求某平台接口)

  2. 查询排序: 根据id倒序

  3. 查询翻页: 每次查询10条

处理数据,请求某平台接口:

  1. 将查询到的数据进行json_encode()处理,进而请求某平台接口

处理某平台返回结果

  1. 异常处理:当某平台返回的error_code为282131时,表示文本内容过长,超过了某平台语义分析的字数限制。

  2. mysql会将不符合某平台语义分析的数据源删除,不再重复请求

  3. 输出返回结果,方便查询信息,定位问题

将返回结果更新到数据表中

  1. 当某平台的返回结果 positive_prob 字段的值不为0时,表示语义分析成功,已返回结果

  2. 将返回的结果更新到mysql数据表中

批处理脚本核心文件代码:

文件名:batchProcessing.php

get_all('select * from liuxx.semantic_analysis WHERE positive_prob = 0  order by id desc limit ' . $offset . ',' . $limit);    foreach ($datas as $key => $value) {        $id = $value['id'];        $text = $value['text'];        $params = ['text' => $text];        $bodys = json_encode($params);        $response = request_post($url, $bodys);        $res_data = json_decode($response, true);        if ($res_data['error_code'] == 282131) {            $db_liuxx->query('delete from liuxx.semantic_analysis WHERE id = ' . $id);            var_dump($id . '  文本过长 删除');        }        echo 'id:';        var_dump('某平台返回:');        var_dump($res_data);        $data = [            'positive_prob' => $res_data['items'][0]['positive_prob'],            'confidence' => $res_data['items'][0]['confidence'],            'negative_prob' => $res_data['items'][0]['negative_prob'],            'sentiment' => $res_data['items'][0]['sentiment'],            'ctime' => time(),        ];        if ($data['positive_prob']) {            var_dump($data);            //更新条件            $condition = 'id = ' . $id;            $res = $db_liuxx->query('update liuxx.semantic_analysis set positive_prob = ' . $data['positive_prob'] . ', confidence = ' . $data['confidence'] . ', negative_prob = ' . $data['negative_prob'] . ', sentiment = ' . $data['sentiment'] . ' where id = ' . $id);            var_dump($res);        } else {            var_dump('某平台未返回结果');        };    }    sleep(1);} while (!empty($datas)); //能查到数据就一直循环?>function request_post($url = '', $param = ''){    if (empty($url) || empty($param)) {        return false;    }    $postUrl = $url;    $curlPost = $param;    // 初始化curl    $curl = curl_init();    // 抓取指定网页    curl_setopt($curl, CURLOPT_URL, $postUrl);    // 设置header    curl_setopt($curl, CURLOPT_HEADER, 0);    // 要求结果为字符串且输出到屏幕上    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);    // post提交方式    curl_setopt($curl, CURLOPT_POST, 1);    curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);    // 运行curl    $data = curl_exec($curl);    curl_close($curl);    return $data;}

执行批处理脚本

nohup:表示脚本生成的log日志和打印信息输出到nohup.log文件中

&:表示脚本后台运行

nohup php batchProcessing.php &

获得结果

脚本运行完毕后,即可在mysql中查询到经某平台语义分析接口处理过的数据,结果示例如下图:

在这里插入图片描述

导出数据

通过Navcat工具,小姐姐就可以方便的将mysql数据结果导出到Excel。

总结

以上操作,花了大概2个小时,成就感爆棚。

当年的总结是:编程真的太有用了,帮了小姐姐大忙,收到了一大波赞,这种精神鼓励和涨工资差不多吧,哈哈哈。

今天的总结是:不管PHP还是Java、GO,更不用管什么框架。

“黑猫白猫,能抓耗子才是好猫”,“这个语言好,那个框架土,能帮你解决问题才是好工具。”

在这里插入图片描述

延伸

这篇文章也算回应一下最近有意和我讨论语言高下、框架优劣的朋友。

我确实无意在这类事情上花时间。

想起了“霍元甲”说的一句话:天下武功没有高下之分,只是习武之人有强弱之别。

一起学习

感谢我群大佬,真是卧虎藏龙。

我们搞了一个有门槛的学编程专属群,大家一起学习打卡,互相督促,欢迎加入我们:

点这里—>加入高质量学编程专属群👏👏👏

来源地址:https://blog.csdn.net/w425772719/article/details/128188349

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

技术男的春天:小姐姐求助&暖男分析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录