93
社区成员
发帖
与我相关
我的任务
分享课程:《Python程序设计》
班级: 2342
姓名: 叶岚灵
学号:20234207
实验教师:王志强
实验日期:2024年5月27日
必修/选修: 专选课
Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。
课代表和各小组负责人收集作业(源代码、视频、综合实践报告)
例如:编写从社交网络爬取数据,实现可视化舆情监控或者情感分析。
例如:利用公开数据集,开展图像分类、恶意软件检测等
例如:利用Python库,基于OCR技术实现自动化提取图片中数据,并填入excel中。
例如:爬取天气数据,实现自动化微信提醒
例如:利用爬虫,实现自动化下载网站视频、文件等。
例如:编写小游戏:坦克大战、贪吃蛇、扫雷等等
注:在Windows/Linux系统上使用VIM、PDB、IDLE、Pycharm等工具编程实现。
本实验基于PyQt5框架,利用百度AI开放平台,实现文字识别与情感分析
(1)认识PyQt5框架
①安装PyQt5软件包:Python图形界面框架,与Python内置的Tkinter框架不同,PyQt5基于Digia公司Qt5(Qt是一个跨平台的C++图形用户界面库)的Python接口,由一组Python模块构成;

②初识PyQt5框架基本功能:创建一个名为“Pyqt5 20234207YLL”的空白界面
【注】Qapplication():每个GUI都必须包含一个Qapplication,argv表示获取命令行参数
QMainWindow():类似一个容器(窗口)用来包含按钮、文本、输入框等工具
SetGeometry定义QMainWindow()窗口的尺寸,语法为setGeometry(x, y, width, height)
show():显示窗口
exit(app.exec_()):设置窗口一直运行直到使用关闭按钮进行关闭

③认识PyQt5常见Widgets:Qlabel(设置文本内容),按钮与事件……
【注】button.clicked.connect()在按钮点击后执行特定的事件

(2)认识sys库应用场景
①初识sys库:Python的sys库是内建模块,可对Python的运行环境进行访问和操作
②sys库常用功能:sys.exit()使程序退出,其参数表示程序退出的状态码……
PS.图示为sys.exit()在“文字识别和情感分析”系统中的应用

(3)文字识别
①方法定义:使用def pic(self)定义处理图像并进行文字识别的功能

②访问令牌获取(调用百度OCR服务的前提):调用get_access_token()方法通过API密钥和密钥获取百度AI平台的访问令牌


③读取图片并转换:使用open()函数打开用户选择的图片文件,并以二进制读取模式('rb')读取图片数据,并利用base64.b64encode()将图片数据编码为Base64格式字符串,以便于通过HTTP请求发送

④构造请求:定义请求的URL,包含访问令牌参数——构建请求头,指定“Content-Type”为“application/x-www-form-urlencoded”,表示发送的数据会被编码为键值对形式;构造请求体“params”,其中包含Base64编码的图片数据

⑤发送请求并处理响应:通过requests.post()发送POST请求到百度OCR服务的WebImage接口,接收到的响应是JSON对象,从中提取出识别的文字结果,存储在“self.str”变量中

⑥显示结果:将识别出的文字结果显示在UI的“textBrowser_cr”部件中,通过append()方法添加文本,并确保光标可见以便用户查看

(4)情感分析
①清理界面:清空“textBrowser_sa”中的内容,以便展示新的情感分析结果

②获取访问令牌(调用API的凭证):调用get_access_token()方法获取百度AI开放平台的访问令牌

③构造请求: 构造POST请求到百度AI平台的情感分析接口(nlp/v1/sentiment_classify),请求的URL中包含通过get_access_token()获取的访问令牌,且将需要分析的文本(之前文字识别的结果self.str)封装到JSON格式的“payload”中,指定请求头为“application/json”

④发送请求并处理响应:使用requests.request()方法发送POST请求,包含请求头和JSON格式的文本数据,收到响应后解析JSON响应内容,提取出情感分析的关键信息,并通过简单的条件语句将情感倾向转换为更易读的文本标签
【注】confidence: 分析的置信度
negative_prob: 消极情绪的概率
positive_prob: 积极情绪的概率
sentiment: 情感倾向的代码

⑤展示结果:将情感分析的各项结果(置信度、消极概率、积极概率及最终的情感分类结果)追加到UI的“textBrowser_sa”部件中,并确保光标可见,便于用户直观地查看分析结果

(5)最终结果展示:PyQt5+文字识别+情感分析(图片展示+运行视频+源代码zip文件)


①多项技术综合实践:本次实验涉及PyQt5图形界面设计,集成百度AI平台OCR(光学字符识别)和情感分析API,以及基础的文件操作和网络请求处理,极大开阔我的眼界,加深我对Python编程强大功能的认知;
②代码结构与可维护性:本次实验代码较为复杂,良好的代码组织结构变得尤为重要,由于实验并非在短时间内完成,故在实验过程中面对大量复杂代码难免出现茫然的情况,因此在编写过程中应学会模块化地组织功能,从而提升代码的可读性和可维护性;
③温故知新:本学期实验二编写简易计算器时我学会使用tkinter库创建GUI界面,本次实验中使用的PyQt5框架与tkinter库有相似之处,也有明显不同,在学习和应用过程中需要融会贯通、常学常新。
(1)感想体会
①入门友好性:老师上课讲解通俗、比喻生动,加之高级编程语言Python的语法设计注重可读性和简洁性,同学们得以快速上手,从而减少学习初期的畏难情绪和挫败感;
②应用广泛性:《Python程序设计》课程不仅介绍Python的基础知识(基本数据类型、流程控制语句、序列……),而且涵盖Socket编程、网络爬虫等多领域知识,使我认识到Python作为强大的工具箱,能够较为轻松地解决实际生活中遇到的许多难题,拓宽我的视野,激发我深入学习的兴趣;
③社区支持:Python拥有庞大的开发者社区(CSDN),使我在学习过程中遇到困难时得以及时查找网络资料解决;
④认识不足:Python编程知识丰富、用途广泛,我在本学期学习过程中收获满满;同时,我也认识到自己对Python基础知识的掌握不够扎实,对Python高级应用的理解不够透彻,尽管本学期《Python程序设计》课程已经结束,但Python学习之旅仍在继续,鼓励我不断复习巩固、温故知新。
(2)意见和建议
①增设互助学习小组:课程学习中难免会遇到个人无法解决的难题,通过互助学习小组可以集思广益,在帮助同学及时解决困惑的同时也可以减轻老师的负担;
②强化基础教学与实践结合:在理论教学后立即安排相关的小型实践项目,例如本学期在学习“类与对象”相关内容后进行的随堂作业让我得以在实践中及时巩固新学的知识点,增强学习的实效性。
“未来的人生,一路繁花似锦”
感谢王老师的陪伴与指导,祝老师身体健康、工作顺利,万事胜意、阖家幸福!