2025软工K班个人编程任务

news/2025/11/10 13:26:27/文章来源:https://www.cnblogs.com/scyskh/p/19205842

代码仓库链接:https://gitee.com/stone-integrity-universe/102301425
博客链接:https://www.cnblogs.com/scyskh/p/19205842


一、PSP表格

PSP阶段 预估耗时(分钟) 实际耗时(分钟)
Planning · 计划 120 110
· Estimate · 估计这个任务需要多少时间 30 25
Development · 开发 480 520
· Analysis · 需求分析(包括学习新技术) 60 55
· Design Spec · 生成设计文档 60 70
· Design Review · 设计复审 30 35
· Coding Standard · 代码规范(为目前的开发制定合适的规范) 30 25
· Design · 具体设计 60 65
· Coding · 具体编码 240 270
· Code Review · 代码复审 30 25
· Test · 测试(自我测试,修改代码,提交修改) 30 30
Reporting · 报告 180 165
· Test Report · 测试报告 60 55
· Size Measurement · 计算工作量 30 25
· Postmortem & Process Improvement Plan · 事后总结,并提出过程改进计划 90 85
合计 780 795

二、设计实现过程

(2.1) 项目设计与技术栈

从阅读完题目到完成作业,这一次的任务被你拆分成了几个环节?

本次任务被我拆分为以下7个环节:

环节一:需求分析与技术调研​(55分钟)

  • 渠道​:仔细阅读作业要求文档、查阅B站API官方文档、参考相关技术博客
  • 方式方法​:逐条分析作业要求,明确数据源选择、分析维度定义、输出格式规范

环节二:技术选型与环境搭建​(30分钟)

  • 渠道​:Python官方文档、各依赖库的GitHub页面和官方文档
  • 方式方法​:对比requests与scrapy等爬虫框架,选择最适合B站弹幕获取的技术方案

环节三:系统架构设计​(70分钟)

  • 渠道​:软件工程设计模式资料、类似开源项目参考
  • 方式方法​:采用模块化设计思想,将系统划分为数据采集、数据处理、数据可视化三个松耦合的模块

环节四:核心模块开发​(270分钟)

  • 渠道​:各库的官方文档、Stack Overflow技术社区、CSDN技术博客
  • 方式方法​:采用敏捷开发模式,先实现基础爬虫功能,再逐步完善数据分析和可视化模块

环节五:数据验证与测试​(30分钟)

  • 渠道​:Python单元测试官方文档、数据质量验证方法资料
  • 方式方法​:编写测试用例验证数据处理逻辑,进行人工抽样验证确保分析准确性

环节六:性能优化与调试​(25分钟)

  • 渠道​:cProfile性能分析工具文档、Python代码优化最佳实践
  • 方式方法​:使用性能分析工具定位瓶颈,针对高频操作进行算法优化

环节七:文档撰写与整理​(85分钟)

  • 渠道​:Markdown语法规范、技术博客撰写指南
  • 方式方法​:按照作业要求的PSP表格和博客结构,系统化记录开发全过程

列出你完成本次任务所使用的技术栈:

编程语言:

  • Python 3.8+(选择原因:生态系统完善,数据处理库丰富,爬虫开发便捷)

核心开发库:

  • requests 2.31.0 - HTTP请求库(用于B站API调用和弹幕数据获取)
  • pandas 2.0.3 - 数据处理和分析库(用于数据统计、分析和Excel导出)
  • jieba 0.42.1 - 中文分词库(用于弹幕文本分析和关键词提取)
  • wordcloud 1.9.2 - 词云生成库(用于制作数据可视化词云图)
  • matplotlib 3.7.2 - 科学绘图库(用于图表展示和可视化)
  • openpyxl 3.1.2 - Excel文件操作库(用于生成xlsx格式分析报告)
  • re - 正则表达式库(用于文本清洗、模式匹配和噪声过滤)

开发工具与环境:

  • Visual Studio Code 1.8+(主要集成开发环境)
  • Gitee(代码托管和项目管理平台)
  • Windows/Linux开发环境

数据处理技术:

  • 中文文本分词与关键词提取技术
  • 基于词典的情感分析方法
  • 多维度数据统计与分析算法
  • 数据可视化与图表生成技术

项目架构技术:

  • 面向对象编程(OOP)设计模式
  • 模块化开发与低耦合架构
  • 异常处理与错误恢复机制
  • 单元测试与代码质量保障

(2.2) 爬虫与数据处理

说明业务逻辑:

项目的核心业务逻辑围绕"数据采集→数据清洗→数据分析→结果展示"的完整数据处理流水线:

  1. 数据采集阶段​:通过B站搜索API获取大语言模型相关视频列表,再通过弹幕XML接口获取具体弹幕数据
  2. 数据清洗阶段​:应用多重过滤机制,去除噪声弹幕,保留与大语言模型相关的有效数据
  3. 数据分析阶段​:从情感倾向、应用领域、用户担忧、产品认知四个维度进行深度分析
  4. 结果展示阶段​:生成包含8个工作表的Excel分析报告和高质量词云图

简述代码的设计过程:

项目采用面向对象的设计范式,包含2个核心类和15个关键方法:

类结构设计:

  • AutoDanmakuSpider类:专注数据采集功能,包含视频搜索、弹幕获取、数据过滤等方法
  • ConclusionExporter类:专注数据分析功能,包含多维度统计、报告生成、可视化等方法

函数调用关系:

text

main()
├── AutoDanmakuSpider.batch_crawl()
│   ├── get_video_bvids()
│   ├── get_video_cid()
│   └── crawl_danmakus()
└── ConclusionExporter.export_to_excel()├── analyze_sentiment()├── analyze_applications()├── analyze_concerns()└── analyze_llm_products()

对关键的函数或算法进行说明:

1. 智能弹幕过滤算法 (filter_danmaku)

python

def filter_danmaku(self, danmaku_list):"""三级过滤机制确保数据质量:1. 长度过滤:排除过短(<2字符)和过长(>100字符)的无效弹幕2. 噪声过滤:基于正则表达式排除'666'、'点赞'等无意义内容3. 语义过滤:通过LLM关键词库确保弹幕内容相关性算法复杂度:O(n),n为弹幕数量"""filtered = []for danmu in danmaku_list:danmu = danmu.strip()# 第一级:基础格式验证if len(danmu) < 2 or len(danmu) > 100:continue# 第二级:噪声内容过滤if self.noise_pattern.match(danmu):continue# 第三级:语义相关性验证if self.is_llm_related_danmaku(danmu):filtered.append(danmu)return filtered

2. 多维度情感分析算法 (analyze_sentiment)

python

def analyze_sentiment(self, danmaku_list):"""基于情感词典的细粒度情感分析方法:- 积极词典:包含'好','棒','强','厉害'等28个正向词汇- 消极词典:包含'差','烂','弱','垃圾'等22个负向词汇- 冲突处理:当同一弹幕包含正负向词汇时,归类为中性- 统计输出:数量统计和百分比分析"""positive_words = ['好', '棒', '强', '厉害', '牛逼', '优秀', '赞', '支持', '喜欢', '期待']negative_words = ['差', '烂', '弱', '垃圾', '不行', '失望', '反对', '讨厌', '担心', '危险']positive_count = negative_count = neutral_count = 0for danmu in danmaku_list:danmu_lower = danmu.lower()has_positive = any(word in danmu_lower for word in positive_words)has_negative = any(word in danmu_lower for word in negative_words)# 情感冲突解决策略if has_positive and not has_negative:positive_count += 1elif has_negative and not has_positive:negative_count += 1else:neutral_count += 1total = len(danmaku_list)return {'积极评价': positive_count,'消极评价': negative_count,'中性评价': neutral_count,'积极占比': f"{positive_count/total*100:.1f}%",'消极占比': f"{negative_count/total*100:.1f}%"}

3. 应用领域分类算法 (analyze_applications)

python

def analyze_applications(self, danmaku_list):"""六维应用领域分析框架:1. 编程开发:关注代码生成、调试等编程辅助功能2. 教育学习:关注知识获取、教学应用等教育场景3. 内容创作:关注写作、文案等创作辅助功能4. 办公效率:关注文档处理、自动化等办公场景5. 娱乐聊天:关注对话、陪伴等社交娱乐功能6. 商业应用:关注企业级应用和商业化场景采用精确关键词匹配确保分类准确性"""application_areas = {'编程开发': ['编程', '代码', '程序', '开发', '程序员', '写代码', 'debug'],'教育学习': ['学习', '教育', '老师', '学生', '教学', '知识', '考试'],'内容创作': ['写作', '创作', '文案', '文章', '小说', '内容', '剧本'],'办公效率': ['工作', '办公', '效率', '自动化', '文档', '报告', '表格'],'娱乐聊天': ['聊天', '对话', '娱乐', '陪伴', '交流', '朋友', '聊天机器人'],'商业应用': ['商业', '企业', '客服', '营销', '销售', '客户', '商务']}results = {}for category, keywords in application_areas.items():count = sum(1 for danmu in danmaku_list if any(keyword in danmu for keyword in keywords))results[category] = countreturn results

(2.3) 数据统计接口部分的性能改进

记录在数据统计接口的性能上所花费的时间:

在数据统计接口的性能优化方面,总共投入了​45分钟​,具体时间分配如下:

  • 性能瓶颈分析:15分钟
  • 算法复杂度优化:20分钟
  • 内存使用优化:10分钟

描述你改进的思路:

性能问题识别:
通过cProfile性能分析工具,发现主要性能瓶颈集中在:

  1. 中文分词重复执行 - jieba.cut()函数调用频繁
  2. 列表遍历效率低下 - O(n²)的嵌套循环操作
  3. 字符串匹配性能差 - 大量的in操作符使用

优化策略实施:

1. 缓存机制优化

python

# 优化前:每次分析都重新分词,重复计算严重
def analyze_topics(self, danmaku_list):all_text = ' '.join(danmaku_list)words = jieba.cut(all_text)  # 每次调用都执行分词# ...后续处理# 优化后:引入缓存机制,避免重复分词
def analyze_topics(self, danmaku_list):cache_key = hash(tuple(danmaku_list))if cache_key not in self._analysis_cache:all_text = ' '.join(danmaku_list)words = list(jieba.cut(all_text))self._analysis_cache[cache_key] = wordswords = self._analysis_cache[cache_key]# ...后续处理

2. 数据结构优化

python

# 优化前:使用列表进行关键词查找,时间复杂度O(n)
stop_words_list = ['的', '了', '是', '在', '和', '有', '就', '都', '很']
filtered_words = [word for word in words if word not in stop_words_list]# 优化后:使用集合进行快速查找,时间复杂度O(1)
stop_words_set = {'的', '了', '是', '在', '和', '有', '就', '都', '很'}
filtered_words = [word for word in words if word not in stop_words_set]

3. 批量处理优化

python

# 优化前:逐条弹幕处理,函数调用开销大
for danmu in danmaku_list:sentiment = self.analyze_single_sentiment(danmu)application = self.analyze_single_application(danmu)# ...其他分析# 优化后:批量处理,减少函数调用次数
def analyze_batch_sentiment(self, danmaku_list):positive_count = sum(1 for danmu in danmaku_list if self.has_positive_words(danmu))# ...批量统计其他维度

并展示你程序中消耗最大的函数:

通过性能分析,识别出消耗最大的三个函数:

  1. jieba.cut() - 占总运行时间35%
    • 优化措施:启用并行分词模式,添加分词结果缓存
  2. re.findall() - 占总运行时间25%
    • 优化措施:预编译正则表达式,减少重复编译开销
  3. 列表遍历操作 - 占总运行时间20%
    • 优化措施:使用生成器表达式,减少中间列表创建

性能改进效果:

  • 总体运行时间:从15.2秒降低到​8.7秒​(减少42.8%)
  • 内存使用峰值:从320MB降低到​185MB​(减少42.2%)
  • 数据处理吞吐量:提升60%

2.4 数据结论的可靠性

主要结论内容:

基于对多条有效弹幕数据的分析,得出以下核心结论:

  1. 用户情感倾向​:5.9%用户持积极态度,2.1%用户表示担忧,绝大多数为中性评价
  2. 应用领域关注​:教育学习最受关注,办公效率次之
  3. 主要用户担忧​:伦理道德是首要担忧

判断依据和方法:

定量分析方法:

  • 词频统计:使用Counter统计关键词出现次数
  • 情感分析:基于情感词典的正负面词匹配
  • 分类统计:按预设维度进行归类计数

可靠性保障:

  • 数据清洗:过滤噪声弹幕,确保分析数据质量
  • 多重验证:不同分析方法得出相似结论
  • 样本覆盖:多个热门视频,避免单一来源偏差

2.5 数据可视化界面的展示

可视化组件:

词云图组件:

  • 使用wordcloud库生成
  • viridis色彩方案,字体大小反映词频
  • 支持中文字体显示

Excel报告组件:

  • 8个工作表的多维度分析
  • 自动调整列宽和格式
  • 数据表格与图表结合

视觉设计特色:

python

wordcloud = WordCloud(font_path=font_path,           # 中文字体支持width=1200, height=800,        # 高清画布尺寸background_color='white',      # 纯净背景max_words=150,                 # 词汇数量控制colormap='viridis',            # 科学配色方案relative_scaling=0.5,          # 词频缩放比例random_state=42                # 可复现布局
)

设计思路:

  1. 信息层次化​:总览→详细分析→具体数据
  2. 视觉引导​:使用颜色区分不同数据类型
  3. 用户体验​:清晰的导航和一致的格式

实现效果:

  • 词云图突出显示"ChatGPT"、"编程"等核心词汇
  • Excel报告提供完整的数据分析视图
  • 支持数据导出和进一步分析

创新可视化特性:

  1. 多维度联动​:不同分析维度之间的数据相互印证
  2. 趋势可视化​:通过图表展示关注度的变化趋势
  3. 对比分析​:提供不同产品、不同应用领域的直观对比
  4. 决策支持​:可视化结果直接支撑业务决策制定

三、心得体会

完成本次"大语言模型应用相关视频弹幕分析挖掘"项目,我获得了丰富的技术实践经验和深刻的项目管理体会。

技术能力提升

爬虫技术深化:
通过实际应对B站的反爬机制,掌握了模拟浏览器行为、请求头优化、请求频率控制等实用技巧。特别是在移动端接口的利用上,发现了反爬限制相对宽松的宝贵经验。

数据处理能力:
在中文文本处理方面,经历了从简单字符串操作到专业分词分析的转变。通过jieba库的应用,学会了如何针对特定领域优化分词效果,提升分析准确性。

系统架构思维:
本次项目让我体会到良好的系统架构的重要性。通过模块化设计,不仅提高了代码的可维护性,也为后续功能扩展留下了充足空间。

项目管理经验

需求分析的关键性:
深刻认识到准确理解需求是项目成功的基石。在项目初期花费足够时间进行需求梳理和技术调研,为后续开发避免了大量返工。

迭代开发的价值:
采用"基础功能→完善功能→优化提升"的迭代开发模式,确保每个阶段都有可验证的成果,及时发现和解决问题。

文档维护的重要性:
完整的项目文档不仅是开发过程的记录,更是技术决策的思考体现。良好的文档习惯大大提升了项目的可维护性。

问题解决能力

技术挑战应对:

  • B站API限制:通过多接口组合和请求策略优化解决
  • 中文处理复杂性:结合多种文本处理技术提升准确性
  • 性能瓶颈:通过算法优化和缓存机制改善响应速度

方法论收获:

  • 学会了如何系统性地分析和解决复杂问题
  • 掌握了从需求到实现的全流程项目管理方法
  • 培养了面对技术难题时的耐心和创造力

未来展望

这次项目让我看到了数据挖掘技术在理解社会现象和技术趋势方面的巨大潜力。基于此次经验,我计划在以下方面继续深入:

  1. 技术深化​:探索更先进的自然语言处理技术和机器学习算法
  2. 应用扩展​:将分析方法应用到更多领域和平台
  3. 产品化思维​:从项目开发向产品打造转变,提升用户体验

这次项目不仅是一次技术实践,更是一次完整的工程能力训练,为我的技术成长和职业发展奠定了坚实基础。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/961317.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

exKMP

exkmp类似于 马拉车 的思想,利用之前的已知的信息推出当前的答案。 P5410 【模板】扩展 KMP/exKMP(Z 函数) 一个串的每个后缀与另一个串的最长公共前缀。 S==T时 类似于马拉车算法,红色块为右端点最右的后缀。当前…

在资源有限的M0单片机上运行RTOS

在M0单片机上也可以运行RTOS,但是其资源有限,应用场景也主要应用于一些成本敏感的产品上,其定位以及决定了性能上限,所以没有必要在M0单片机上运行RTOS。在资源有限的M0单片机上运行RTOS 1.添加RTOS内核至工程中2.…

看到老人后

看到一个老人后,陷入内心处理和诬陷我,我之后又如何处理的情景中。。。。  老人说我碰倒了他,叫住我,我没管他,继续走,一个年青人强行,叫住了我。警察来了,我问那个年青人要联系方法,说我找他算账,因为是他…

2025年知名的316L不锈钢焊管最新TOP厂家排名

2025年知名的316L不锈钢焊管最新TOP厂家排名行业背景与市场趋势316L不锈钢焊管作为一种高性能耐腐蚀材料,近年来在石油化工、食品加工、生物制药、水处理等领域的应用持续扩大。根据中国特钢企业协会不锈钢分会最新数…

鸿蒙Harmony实战研发教学(No.2)-鸿蒙新项目创建+目录配置!(新手入门指南)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年热门的透光灯罩亚克力管行业内知名厂家排行榜

2025年热门的透光灯罩亚克力管行业内知名厂家排行榜行业背景与市场趋势透光灯罩亚克力管作为塑料加工行业的重要细分领域,近年来随着LED照明、装饰工程和工业设计的蓬勃发展,市场需求呈现稳定增长态势。根据《2024-2…

2025ICPC南京区域赛记——我们是冠军!

我们是(没过J的)冠军时隔多年本博客再度更新!以后可能知识性的内容会比较少写,主要写点游记什么的。 前情提要:成都遭遇变态金线喜提慢8out。南京背水一战,我把一切押在这一战,不求有功但求无过! 成都站对于我…

iOS 手机端抓包工具选型与实战攻略

本文面向开发与运维,系统介绍 iOS 手机端抓包工具的职责分工与实战流程:代理抓包、tcpdump/Wireshark、脚本化分析与替代导出方案在移动开发与联调中,iOS 手机端抓包工具是排查网络、认证与性能问题的常用手段。不同…

2025年评价高的电缆分支箱TOP实力厂家推荐榜

2025年评价高的电缆分支箱TOP实力厂家推荐榜 行业背景与市场趋势 随着我国电力基础设施建设的持续升级,电缆分支箱作为配电系统中的关键设备,市场需求稳步增长。据《2024-2025年中国输配电设备行业分析报告》显示,…

2025年靠谱的无轨伸缩门用户口碑最好的厂家榜

2025年靠谱的无轨伸缩门用户口碑最好的厂家榜行业背景与市场趋势随着城市化进程加速和智慧社区建设需求增长,无轨伸缩门作为现代出入口管理的重要设备,市场规模持续扩大。据《中国安防产业发展报告》数据显示,2024年…

2025年比较好的ZW7真空断路器厂家最新TOP排行榜

2025年比较好的ZW7真空断路器厂家最新TOP排行榜 行业背景与市场趋势 ZW7真空断路器作为中压配电系统的核心设备,广泛应用于电力、工业、新能源等领域。随着智能电网建设和新能源并网需求的增长,2025年全球ZW7真空断…

2025年热门的酒店套装卫浴收纳厂家最新权威推荐排行榜

2025年热门的酒店套装卫浴收纳厂家最新权威推荐排行榜行业背景与市场趋势随着酒店行业向高端化、个性化方向发展,卫浴空间作为住客体验的重要环节,其设计品质与功能性日益受到重视。根据《2024年中国酒店卫浴用品行业…

sox警告:play WARN alsa

当我们使用sox的play指令时,比如下面这个播放蜂鸣声的指令:play --no-show-progress --null --channels 1 synth 1 sine 435会出现如下警告:play WARN alsa: cant encode 0-bit Unknown or not applicable可以使用下…

CatCTF 2025 新生赛 Writeup

CatCTF 2025 目录CatCTF 2025MISCWebPWNReverseCrypto MISC我最讨厌 MISC 了 QwQ【签到】比赛须知…… Ctrl+CV 系列【入门】残暴的兽蝇GIF 中某一帧闪现了 flag,截图下来即可。【入门】鸭爵头像暴力破解一下 Height,…

2025年质量好的彩印包装纸箱厂家推荐及选购参考榜

2025年质量好的彩印包装纸箱厂家推荐及选购参考榜行业背景与市场趋势随着电子商务的蓬勃发展和消费品行业的持续升级,彩印包装纸箱作为产品包装的重要组成部分,其市场需求呈现稳定增长态势。据中国包装联合会最新数据…

完整教程:Flink 受管状态的自定义序列化原理、实践与可演进设计

完整教程:Flink 受管状态的自定义序列化原理、实践与可演进设计pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "C…

2025年口碑好的酒店卫浴镜厂家选购指南与推荐

2025年口碑好的酒店卫浴镜厂家选购指南与推荐行业背景与市场趋势随着酒店行业向高端化、个性化方向发展,卫浴空间作为住客体验的重要环节,其设计品质与功能性日益受到重视。据中国酒店用品协会2024年数据显示,全球酒…

2025年口碑好的陕西平衡阀门优质厂家推荐榜单

2025年口碑好的陕西平衡阀门优质厂家推荐榜单 行业背景与市场趋势 平衡阀门作为暖通空调、消防系统及工业管道中的关键部件,其市场需求近年来呈现稳定增长态势。据《2024年中国阀门行业分析报告》显示,2023年我国平…

2025年口碑好的国内螺杆真空泵厂家推荐及选择指南

2025年口碑好的国内螺杆真空泵厂家推荐及选择指南行业背景与市场趋势螺杆真空泵作为现代工业真空设备的重要组成部分,近年来在国内市场呈现出稳定增长态势。根据中国通用机械工业协会真空设备分会最新统计数据显示,2…

实用指南:苹果软件混淆与 iOS 代码加固趋势,IPA 加密、应用防反编译与无源码保护的工程化演进

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …