Files
simulated-examination/README.md

157 lines
7.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!--
用途: 模拟考试实操题2026-06-23
说明: 这是模拟考试,所有代码提交到这个仓库
-->
# 模拟考试(实操题)
**考试时间**90 分钟2 课时)
**考试形式**:开卷
**总分**70 分
---
## ⚠️ 重要说明
- 本题所有代码、标注结果、图片都要上传到 **本仓库**
- **文件夹必须按下面要求** 的结构创建,否则不得分
- 数据爬取代码 **必须** 在一次爬取中获取到所有需要数据(数据刷新会变)
---
## 第Ⅱ部分 实操题
### 一、数据爬取25 分)
**本题中涉及的爬虫代码必须包含检测头,同时由于网页刷新后数据会变化,必须在一次爬取中获取到所有需要数据,否则不得分。**
#### 第 1 题10 分)
用 python 代码访问网址 `https://exam.detr.top/exam-b/movies`,抓取网页的数据编号和其中全部 10 部电影的信息,并分别保存为两个文件:
- `movies.json`(存放数据编号和电影信息,电影中包含的键为 `id, title, director, year, rating, duration, genre, actors_count`
- `movies.html`(保存原始网页源码)
#### 第 2 题15 分)
根据 `movies.json` 中的数据:
1. ① 找出评分最高和最低的电影,打印电影名 + 评分。
2. ② 统计各类型的电影数量,用字典格式输出。
3. ③ 统计各导演的电影数量,用字典格式输出。
4. ④ 统计 2020 年(含)以后上映的电影数量。
---
### 二、数据标注20 分)
**本章中所有标注结果都需要导出文件,并上传到本仓库的 `q3` 文件夹下。每个小题单独放一个子文件夹。未按要求上传文件不得分。**
#### 第 1 小题8 分)— 图像目标检测标注
在 Label Studio 中打开图片 `data/images/标注练习1.jpg`(图片中含 1 只猫、1 只狗、1 辆车,背景为街道),使用 Rectangle Labels 工具标出 3 个目标物。要求:
1. 1边界框必须紧贴目标物轮廓
2. 2标签必须为 `cat``dog``car`**必须小写英文**,不能写成"猫/狗/车"或"Cat/Dog/Car"
3. 3导出为 YOLO 格式压缩包
4. 4将压缩包命名为 `q3_1_image_labels.zip` 并上传到 `q3/q3_1/` 文件夹
5. 5压缩包解压后必须包含 `classes.txt``labels/` 目录
#### 第 2 小题7 分)— 文本情感分类标注
现有 5 条外卖评论文本 `data/reviews.json`,用 Label Studio 完成情感分类标注(标签:正面/负面),导出为 JSON 格式。要求:
1. 1标注必须包含每条评论的 `id``text` 字段
2. 2每个标注必须有一个 `sentiment` 字段,值为 `"正面"``"负面"`
3. 35 条评论必须全部标注
4. 4将导出文件命名为 `q3_2_takeout_reviews.json` 并上传到 `q3/q3_2/` 文件夹
#### 第 3 小题5 分)— 标注质量自评
`q3` 文件夹下新建 `q3_3_质量自评.md` 文件,写一份 200 字左右的标注质量自评报告,内容包括:
1. 1标注前准备 —— 你制定了什么标注规范看了几张示例图片2 分)
2. 2标注过程 —— 遇到什么困难如何解决中途不确定的标注如何处理2 分)
3. 3标注后检查 —— 做了哪些检查是否导入了多份相同数据互相对比1 分)
---
### 三、数据可视化25 分)
**本章所有图表都要用 matplotlib 绘制PNG 文件必须用 `plt.savefig` 保存。所有 Python 代码和 PNG 文件都需要上传到本仓库的 `q4` 文件夹下,每个小题单独一个子文件夹。**
#### 第 1 小题8 分)— 柱状图
`movies.json`(本卷第 II 部分保存的 `movies.json`)读取数据,用 matplotlib 绘制**各类型的电影数量柱状图**。要求:
1. 1使用 `plt.bar` 函数绘制柱状图
2. 2X 轴为类型名称
3. 3Y 轴为电影数量
4. 4标题设置为"类型电影数量分布"(用 `plt.title`
5. 5保存为 `q4_1_bar.png`(用 `plt.savefig``dpi=150`
6. 6Python 代码保存为 `q4_1.py`
#### 第 2 小题7 分)— 散点图
`movies.json` 读取数据,用 matplotlib 绘制**评分 vs 时长散点图**。要求:
1. 1使用 `plt.scatter` 函数绘制散点图
2. 2X 轴为时长分钟Y 轴为评分
3. 3标题设置为"时长与评分关系散点图"(用 `plt.title`
4. 4使用 `plt.xlabel``plt.ylabel` 设置轴标签
5. 5点的颜色设为红色`alpha=0.6`(半透明)
6. 6保存为 `q4_2_scatter.png`(用 `plt.savefig``dpi=150`
7. 7Python 代码保存为 `q4_2.py`
#### 第 3 小题10 分)— 直方图
`movies.json` 读取数据,绘制**两张独立的直方图**
- **A评分直方图5 分)**:使用 `plt.hist` 函数绘制 10 部电影评分字段的分布直方图,`bins=5`,颜色蓝色,标题"评分分布"(用 `plt.title`X 轴标签"评分"(用 `plt.xlabel`),保存为 `q4_3a_hist.png``dpi=150`),代码保存为 `q4_3a.py`
- **B时长直方图5 分)**:使用 `plt.hist` 函数绘制 10 部电影时长字段的分布直方图,`bins=5`,颜色绿色,标题"时长分布"X 轴标签"时长(分钟)",保存为 `q4_3b_hist.png``dpi=150`),代码保存为 `q4_3b.py`
---
## 📁 仓库文件夹结构(必须按这个提交)
```
simulated-examination/
├── data/ # 模拟考数据(已上传)
│ ├── images/
│ │ └── 标注练习1.jpg
│ └── reviews.json
├── q2_1_crawler/
│ ├── q2_1.py # 数据爬取第 1 题代码
│ ├── q2_2.py # 数据爬取第 2 题代码
│ ├── movies.json # 爬取结果(由 q2_1.py 生成)
│ └── movies.html # 原始网页(由 q2_1.py 生成)
├── q3/
│ ├── q3_1/
│ │ └── q3_1_image_labels.zip # 图像标注 YOLO 导出
│ ├── q3_2/
│ │ └── q3_2_takeout_reviews.json # 文本标注 JSON 导出
│ └── q3_3_质量自评.md
├── q4/
│ ├── q4_1/
│ │ ├── q4_1.py # 柱状图代码
│ │ └── q4_1_bar.png # 柱状图结果
│ ├── q4_2/
│ │ ├── q4_2.py # 散点图代码
│ │ └── q4_2_scatter.png # 散点图结果
│ ├── q4_3a/
│ │ ├── q4_3a.py # 评分直方图代码
│ │ └── q4_3a_hist.png # 评分直方图结果
│ ├── q4_3b/
│ │ ├── q4_3b.py # 时长直方图代码
│ │ └── q4_3b_hist.png # 时长直方图结果
```
---
## 提交方式
1. 在本仓库下**按上面的文件夹结构**创建目录
2. 依次完成 3 大题的所有小题
3. 每完成一题就 `git add` + `git commit` + `git push` 到本仓库
4. 考试结束时**最后一次 commit 时间**视为交卷时间